V8 Project
code.h
Go to the documentation of this file.
1 // Copyright 2006-2008 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef V8_CODE_H_
6 #define V8_CODE_H_
7 
8 #include "src/allocation.h"
9 #include "src/handles.h"
10 #include "src/objects.h"
11 
12 namespace v8 {
13 namespace internal {
14 
15 
16 // Wrapper class for passing expected and actual parameter counts as
17 // either registers or immediate values. Used to make sure that the
18 // caller provides exactly the expected number of parameters to the
19 // callee.
20 class ParameterCount BASE_EMBEDDED {
21  public:
22  explicit ParameterCount(Register reg)
23  : reg_(reg), immediate_(0) { }
24  explicit ParameterCount(int immediate)
25  : reg_(no_reg), immediate_(immediate) { }
27  : reg_(no_reg), immediate_(f->shared()->formal_parameter_count()) { }
28 
29  bool is_reg() const { return !reg_.is(no_reg); }
30  bool is_immediate() const { return !is_reg(); }
31 
32  Register reg() const {
33  DCHECK(is_reg());
34  return reg_;
35  }
36  int immediate() const {
37  DCHECK(is_immediate());
38  return immediate_;
39  }
40 
41  private:
42  const Register reg_;
43  const int immediate_;
44 
46 };
47 
48 
49 } } // namespace v8::internal
50 
51 #endif // V8_CODE_H_
#define BASE_EMBEDDED
Definition: allocation.h:45
bool is_reg() const
Definition: code.h:29
const int immediate_
Definition: code.h:43
ParameterCount(Register reg)
Definition: code.h:22
const Register reg_
Definition: code.h:42
Register reg() const
Definition: code.h:32
bool is_immediate() const
Definition: code.h:30
ParameterCount(int immediate)
Definition: code.h:24
DISALLOW_IMPLICIT_CONSTRUCTORS(ParameterCount)
int immediate() const
Definition: code.h:36
ParameterCount(Handle< JSFunction > f)
Definition: code.h:26
#define DCHECK(condition)
Definition: logging.h:205
const Register no_reg
Debugger support for the V8 JavaScript engine.
Definition: accessors.cc:20