V8 Project
v8::internal::compiler::JSOperatorBuilder Class Reference

#include <js-operator.h>

+ Collaboration diagram for v8::internal::compiler::JSOperatorBuilder:

Public Member Functions

 JSOperatorBuilder (Zone *zone)
 
const OperatorEqual ()
 
const OperatorNotEqual ()
 
const OperatorStrictEqual ()
 
const OperatorStrictNotEqual ()
 
const OperatorLessThan ()
 
const OperatorGreaterThan ()
 
const OperatorLessThanOrEqual ()
 
const OperatorGreaterThanOrEqual ()
 
const OperatorBitwiseOr ()
 
const OperatorBitwiseXor ()
 
const OperatorBitwiseAnd ()
 
const OperatorShiftLeft ()
 
const OperatorShiftRight ()
 
const OperatorShiftRightLogical ()
 
const OperatorAdd ()
 
const OperatorSubtract ()
 
const OperatorMultiply ()
 
const OperatorDivide ()
 
const OperatorModulus ()
 
const OperatorUnaryNot ()
 
const OperatorToBoolean ()
 
const OperatorToNumber ()
 
const OperatorToString ()
 
const OperatorToName ()
 
const OperatorToObject ()
 
const OperatorYield ()
 
const OperatorCreate ()
 
const OperatorCall (int arguments, CallFunctionFlags flags)
 
const OperatorCallNew (int arguments)
 
const OperatorLoadProperty ()
 
const OperatorLoadNamed (Unique< Name > name, ContextualMode contextual_mode=NOT_CONTEXTUAL)
 
const OperatorStoreProperty (StrictMode strict_mode)
 
const OperatorStoreNamed (StrictMode strict_mode, Unique< Name > name)
 
const OperatorDeleteProperty (StrictMode strict_mode)
 
const OperatorHasProperty ()
 
const OperatorLoadContext (uint16_t depth, uint32_t index, bool immutable)
 
const OperatorStoreContext (uint16_t depth, uint32_t index)
 
const OperatorTypeOf ()
 
const OperatorInstanceOf ()
 
const OperatorDebugger ()
 
const OperatorCreateFunctionContext ()
 
const OperatorCreateCatchContext (Unique< String > name)
 
const OperatorCreateWithContext ()
 
const OperatorCreateBlockContext ()
 
const OperatorCreateModuleContext ()
 
const OperatorCreateGlobalContext ()
 
const OperatorRuntime (Runtime::FunctionId function, int arguments)
 

Private Attributes

Zonezone_
 

Detailed Description

Definition at line 64 of file js-operator.h.

Constructor & Destructor Documentation

◆ JSOperatorBuilder()

v8::internal::compiler::JSOperatorBuilder::JSOperatorBuilder ( Zone zone)
inlineexplicit

Definition at line 66 of file js-operator.h.

Member Function Documentation

◆ Add()

const Operator* v8::internal::compiler::JSOperatorBuilder::Add ( )
inline

Definition at line 98 of file js-operator.h.

98 { BINOP(JSAdd); }
#define BINOP(name)
Definition: js-operator.h:79

References BINOP.

Referenced by v8::internal::compiler::AstGraphBuilder::BuildBinaryOp().

+ Here is the caller graph for this function:

◆ BitwiseAnd()

const Operator* v8::internal::compiler::JSOperatorBuilder::BitwiseAnd ( )
inline

Definition at line 94 of file js-operator.h.

94 { BINOP(JSBitwiseAnd); }

References BINOP.

Referenced by v8::internal::compiler::AstGraphBuilder::BuildBinaryOp().

+ Here is the caller graph for this function:

◆ BitwiseOr()

const Operator* v8::internal::compiler::JSOperatorBuilder::BitwiseOr ( )
inline

Definition at line 92 of file js-operator.h.

92 { BINOP(JSBitwiseOr); }

References BINOP.

Referenced by v8::internal::compiler::AstGraphBuilder::BuildBinaryOp().

+ Here is the caller graph for this function:

◆ BitwiseXor()

const Operator* v8::internal::compiler::JSOperatorBuilder::BitwiseXor ( )
inline

Definition at line 93 of file js-operator.h.

93 { BINOP(JSBitwiseXor); }

References BINOP.

Referenced by v8::internal::compiler::AstGraphBuilder::BuildBinaryOp().

+ Here is the caller graph for this function:

◆ Call()

const Operator* v8::internal::compiler::JSOperatorBuilder::Call ( int  arguments,
CallFunctionFlags  flags 
)
inline

Definition at line 114 of file js-operator.h.

114  {
115  CallParameters parameters = {arguments, flags};
116  OP1(JSCallFunction, CallParameters, parameters, Operator::kNoProperties,
117  arguments, 1);
118  }
#define OP1(name, ptype, pname, properties, inputs, outputs)
Definition: js-operator.h:75

References v8::internal::anonymous_namespace{flags.cc}::flags, v8::internal::compiler::Operator::kNoProperties, and OP1.

Referenced by v8::internal::compiler::AstGraphBuilder::VisitCallJSRuntime().

+ Here is the caller graph for this function:

◆ CallNew()

const Operator* v8::internal::compiler::JSOperatorBuilder::CallNew ( int  arguments)
inline

Definition at line 120 of file js-operator.h.

120  {
121  return new (zone_)
122  Operator1<int>(IrOpcode::kJSCallConstruct, Operator::kNoProperties,
123  arguments, 1, "JSCallConstruct", arguments);
124  }

References v8::internal::compiler::Operator::kNoProperties, and zone_.

◆ Create()

const Operator* v8::internal::compiler::JSOperatorBuilder::Create ( )
inline

Definition at line 112 of file js-operator.h.

112 { SIMPLE(JSCreate, Operator::kEliminatable, 0, 1); }
#define SIMPLE(name, properties, inputs, outputs)
Definition: js-operator.h:68

References v8::internal::compiler::Operator::kEliminatable, and SIMPLE.

◆ CreateBlockContext()

const Operator* v8::internal::compiler::JSOperatorBuilder::CreateBlockContext ( )
inline

Definition at line 175 of file js-operator.h.

175 { NOPROPS(JSCreateBlockContext, 2, 1); }
#define NOPROPS(name, inputs, outputs)
Definition: js-operator.h:72

References NOPROPS.

◆ CreateCatchContext()

const Operator* v8::internal::compiler::JSOperatorBuilder::CreateCatchContext ( Unique< String name)
inline

Definition at line 170 of file js-operator.h.

170  {
171  OP1(JSCreateCatchContext, Unique<String>, name, Operator::kNoProperties, 1,
172  1);
173  }
enable harmony numeric enable harmony object literal extensions Optimize object Array DOM strings and string trace pretenuring decisions of HAllocate instructions Enables optimizations which favor memory size over execution speed maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining trace the tracking of allocation sites deoptimize every n garbage collections perform array bounds checks elimination analyze liveness of environment slots and zap dead values flushes the cache of optimized code for closures on every GC allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes enable context specialization in TurboFan execution budget before interrupt is triggered max percentage of megamorphic generic ICs to allow optimization enable use of SAHF instruction if enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV instructions if enable use of MLS instructions if enable loading bit constant by means of movw movt instruction enable unaligned accesses for enable use of d16 d31 registers on ARM this requires VFP3 force all emitted branches to be in long enable alignment of csp to bytes on platforms which prefer the register to always be expose gc extension under the specified name show built in functions in stack traces use random jit cookie to mask large constants minimum length for automatic enable preparsing CPU profiler sampling interval in microseconds trace out of bounds accesses to external arrays default size of stack region v8 is allowed to maximum length of function source code printed in a stack trace min size of a semi the new space consists of two semi spaces print one trace line following each garbage collection do not print trace line after scavenger collection print cumulative GC statistics in name

References v8::internal::compiler::Operator::kNoProperties, name, and OP1.

◆ CreateFunctionContext()

const Operator* v8::internal::compiler::JSOperatorBuilder::CreateFunctionContext ( )
inline

Definition at line 167 of file js-operator.h.

167  {
168  NOPROPS(JSCreateFunctionContext, 1, 1);
169  }

References NOPROPS.

Referenced by v8::internal::compiler::AstGraphBuilder::BuildLocalFunctionContext().

+ Here is the caller graph for this function:

◆ CreateGlobalContext()

const Operator* v8::internal::compiler::JSOperatorBuilder::CreateGlobalContext ( )
inline

Definition at line 179 of file js-operator.h.

179  {
180  NOPROPS(JSCreateGlobalContext, 2, 1);
181  }

References NOPROPS.

◆ CreateModuleContext()

const Operator* v8::internal::compiler::JSOperatorBuilder::CreateModuleContext ( )
inline

Definition at line 176 of file js-operator.h.

176  {
177  NOPROPS(JSCreateModuleContext, 2, 1);
178  }

References NOPROPS.

◆ CreateWithContext()

const Operator* v8::internal::compiler::JSOperatorBuilder::CreateWithContext ( )
inline

Definition at line 174 of file js-operator.h.

174 { NOPROPS(JSCreateWithContext, 2, 1); }

References NOPROPS.

◆ Debugger()

const Operator* v8::internal::compiler::JSOperatorBuilder::Debugger ( )
inline

Definition at line 164 of file js-operator.h.

164 { NOPROPS(JSDebugger, 0, 0); }

References NOPROPS.

◆ DeleteProperty()

const Operator* v8::internal::compiler::JSOperatorBuilder::DeleteProperty ( StrictMode  strict_mode)
inline

Definition at line 145 of file js-operator.h.

145  {
146  OP1(JSDeleteProperty, StrictMode, strict_mode, Operator::kNoProperties, 2,
147  1);
148  }

References v8::internal::compiler::Operator::kNoProperties, and OP1.

Referenced by v8::internal::compiler::AstGraphBuilder::BuildVariableDelete().

+ Here is the caller graph for this function:

◆ Divide()

const Operator* v8::internal::compiler::JSOperatorBuilder::Divide ( )
inline

Definition at line 101 of file js-operator.h.

101 { BINOP(JSDivide); }

References BINOP.

Referenced by v8::internal::compiler::AstGraphBuilder::BuildBinaryOp().

+ Here is the caller graph for this function:

◆ Equal()

const Operator* v8::internal::compiler::JSOperatorBuilder::Equal ( )
inline

Definition at line 84 of file js-operator.h.

84 { BINOP(JSEqual); }

References BINOP.

◆ GreaterThan()

const Operator* v8::internal::compiler::JSOperatorBuilder::GreaterThan ( )
inline

Definition at line 89 of file js-operator.h.

89 { BINOP(JSGreaterThan); }

References BINOP.

◆ GreaterThanOrEqual()

const Operator* v8::internal::compiler::JSOperatorBuilder::GreaterThanOrEqual ( )
inline

Definition at line 91 of file js-operator.h.

91 { BINOP(JSGreaterThanOrEqual); }

References BINOP.

◆ HasProperty()

const Operator* v8::internal::compiler::JSOperatorBuilder::HasProperty ( )
inline

Definition at line 150 of file js-operator.h.

150 { NOPROPS(JSHasProperty, 2, 1); }

References NOPROPS.

◆ InstanceOf()

const Operator* v8::internal::compiler::JSOperatorBuilder::InstanceOf ( )
inline

Definition at line 163 of file js-operator.h.

163 { NOPROPS(JSInstanceOf, 2, 1); }

References NOPROPS.

◆ LessThan()

const Operator* v8::internal::compiler::JSOperatorBuilder::LessThan ( )
inline

Definition at line 88 of file js-operator.h.

88 { BINOP(JSLessThan); }

References BINOP.

◆ LessThanOrEqual()

const Operator* v8::internal::compiler::JSOperatorBuilder::LessThanOrEqual ( )
inline

Definition at line 90 of file js-operator.h.

90 { BINOP(JSLessThanOrEqual); }

References BINOP.

◆ LoadContext()

const Operator* v8::internal::compiler::JSOperatorBuilder::LoadContext ( uint16_t  depth,
uint32_t  index,
bool  immutable 
)
inline

Definition at line 152 of file js-operator.h.

152  {
153  ContextAccess access(depth, index, immutable);
154  OP1(JSLoadContext, ContextAccess, access,
156  }

References v8::internal::compiler::Operator::kEliminatable, v8::internal::compiler::Operator::kNoWrite, and OP1.

Referenced by v8::internal::compiler::AstGraphBuilder::BuildLoadGlobalObject(), v8::internal::compiler::AstGraphBuilder::BuildVariableAssignment(), v8::internal::compiler::AstGraphBuilder::BuildVariableLoad(), and v8::internal::compiler::JSContextSpecializer::ReduceJSLoadContext().

+ Here is the caller graph for this function:

◆ LoadNamed()

const Operator* v8::internal::compiler::JSOperatorBuilder::LoadNamed ( Unique< Name name,
ContextualMode  contextual_mode = NOT_CONTEXTUAL 
)
inline

Definition at line 127 of file js-operator.h.

128  {
129  LoadNamedParameters parameters = {name, contextual_mode};
130  OP1(JSLoadNamed, LoadNamedParameters, parameters, Operator::kNoProperties,
131  1, 1);
132  }

References v8::internal::compiler::Operator::kNoProperties, name, and OP1.

Referenced by v8::internal::compiler::AstGraphBuilder::BuildVariableLoad().

+ Here is the caller graph for this function:

◆ LoadProperty()

const Operator* v8::internal::compiler::JSOperatorBuilder::LoadProperty ( )
inline

Definition at line 126 of file js-operator.h.

126 { BINOP(JSLoadProperty); }

References BINOP.

◆ Modulus()

const Operator* v8::internal::compiler::JSOperatorBuilder::Modulus ( )
inline

Definition at line 102 of file js-operator.h.

102 { BINOP(JSModulus); }

References BINOP.

Referenced by v8::internal::compiler::AstGraphBuilder::BuildBinaryOp().

+ Here is the caller graph for this function:

◆ Multiply()

const Operator* v8::internal::compiler::JSOperatorBuilder::Multiply ( )
inline

Definition at line 100 of file js-operator.h.

100 { BINOP(JSMultiply); }

References BINOP.

Referenced by v8::internal::compiler::AstGraphBuilder::BuildBinaryOp().

+ Here is the caller graph for this function:

◆ NotEqual()

const Operator* v8::internal::compiler::JSOperatorBuilder::NotEqual ( )
inline

Definition at line 85 of file js-operator.h.

85 { BINOP(JSNotEqual); }

References BINOP.

◆ Runtime()

const Operator* v8::internal::compiler::JSOperatorBuilder::Runtime ( Runtime::FunctionId  function,
int  arguments 
)
inline

Definition at line 183 of file js-operator.h.

183  {
184  const Runtime::Function* f = Runtime::FunctionForId(function);
185  DCHECK(f->nargs == -1 || f->nargs == arguments);
186  OP1(JSCallRuntime, Runtime::FunctionId, function, Operator::kNoProperties,
187  arguments, f->result_size);
188  }
static const Function * FunctionForId(FunctionId id)
Definition: runtime.cc:9312
#define DCHECK(condition)
Definition: logging.h:205

References DCHECK, v8::internal::Runtime::FunctionForId(), v8::internal::compiler::Operator::kNoProperties, v8::internal::Runtime::Function::nargs, OP1, and v8::internal::Runtime::Function::result_size.

Referenced by v8::internal::compiler::AstGraphBuilder::BuildArgumentsObject(), v8::internal::compiler::AstGraphBuilder::BuildThrowReferenceError(), v8::internal::compiler::AstGraphBuilder::BuildVariableAssignment(), v8::internal::compiler::AstGraphBuilder::BuildVariableDelete(), v8::internal::compiler::AstGraphBuilder::BuildVariableLoad(), and v8::internal::compiler::AstGraphBuilder::VisitDeclarations().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ShiftLeft()

const Operator* v8::internal::compiler::JSOperatorBuilder::ShiftLeft ( )
inline

Definition at line 95 of file js-operator.h.

95 { BINOP(JSShiftLeft); }

References BINOP.

Referenced by v8::internal::compiler::AstGraphBuilder::BuildBinaryOp().

+ Here is the caller graph for this function:

◆ ShiftRight()

const Operator* v8::internal::compiler::JSOperatorBuilder::ShiftRight ( )
inline

Definition at line 96 of file js-operator.h.

96 { BINOP(JSShiftRight); }

References BINOP.

Referenced by v8::internal::compiler::AstGraphBuilder::BuildBinaryOp().

+ Here is the caller graph for this function:

◆ ShiftRightLogical()

const Operator* v8::internal::compiler::JSOperatorBuilder::ShiftRightLogical ( )
inline

Definition at line 97 of file js-operator.h.

97 { BINOP(JSShiftRightLogical); }

References BINOP.

Referenced by v8::internal::compiler::AstGraphBuilder::BuildBinaryOp().

+ Here is the caller graph for this function:

◆ StoreContext()

const Operator* v8::internal::compiler::JSOperatorBuilder::StoreContext ( uint16_t  depth,
uint32_t  index 
)
inline

Definition at line 157 of file js-operator.h.

157  {
158  ContextAccess access(depth, index, false);
159  OP1(JSStoreContext, ContextAccess, access, Operator::kNoProperties, 2, 0);
160  }

References v8::internal::compiler::Operator::kNoProperties, and OP1.

Referenced by v8::internal::compiler::AstGraphBuilder::BuildLocalFunctionContext(), v8::internal::compiler::AstGraphBuilder::BuildVariableAssignment(), and v8::internal::compiler::JSContextSpecializer::ReduceJSStoreContext().

+ Here is the caller graph for this function:

◆ StoreNamed()

const Operator* v8::internal::compiler::JSOperatorBuilder::StoreNamed ( StrictMode  strict_mode,
Unique< Name name 
)
inline

Definition at line 139 of file js-operator.h.

139  {
140  StoreNamedParameters parameters = {strict_mode, name};
141  OP1(JSStoreNamed, StoreNamedParameters, parameters, Operator::kNoProperties,
142  2, 0);
143  }

References v8::internal::compiler::Operator::kNoProperties, name, and OP1.

Referenced by v8::internal::compiler::AstGraphBuilder::BuildVariableAssignment().

+ Here is the caller graph for this function:

◆ StoreProperty()

const Operator* v8::internal::compiler::JSOperatorBuilder::StoreProperty ( StrictMode  strict_mode)
inline

Definition at line 134 of file js-operator.h.

134  {
135  OP1(JSStoreProperty, StrictMode, strict_mode, Operator::kNoProperties, 3,
136  0);
137  }

References v8::internal::compiler::Operator::kNoProperties, and OP1.

◆ StrictEqual()

const Operator* v8::internal::compiler::JSOperatorBuilder::StrictEqual ( )
inline

Definition at line 86 of file js-operator.h.

86 { PURE_BINOP(JSStrictEqual); }
#define PURE_BINOP(name)
Definition: js-operator.h:82

References PURE_BINOP.

◆ StrictNotEqual()

const Operator* v8::internal::compiler::JSOperatorBuilder::StrictNotEqual ( )
inline

Definition at line 87 of file js-operator.h.

87 { PURE_BINOP(JSStrictNotEqual); }

References PURE_BINOP.

◆ Subtract()

const Operator* v8::internal::compiler::JSOperatorBuilder::Subtract ( )
inline

Definition at line 99 of file js-operator.h.

99 { BINOP(JSSubtract); }

References BINOP.

Referenced by v8::internal::compiler::AstGraphBuilder::BuildBinaryOp().

+ Here is the caller graph for this function:

◆ ToBoolean()

const Operator* v8::internal::compiler::JSOperatorBuilder::ToBoolean ( )
inline

Definition at line 105 of file js-operator.h.

105 { UNOP(JSToBoolean); }
#define UNOP(name)
Definition: js-operator.h:80

References UNOP.

◆ ToName()

const Operator* v8::internal::compiler::JSOperatorBuilder::ToName ( )
inline

Definition at line 108 of file js-operator.h.

108 { UNOP(JSToName); }

References UNOP.

◆ ToNumber()

const Operator* v8::internal::compiler::JSOperatorBuilder::ToNumber ( )
inline

Definition at line 106 of file js-operator.h.

106 { UNOP(JSToNumber); }

References UNOP.

◆ ToObject()

const Operator* v8::internal::compiler::JSOperatorBuilder::ToObject ( )
inline

Definition at line 109 of file js-operator.h.

109 { UNOP(JSToObject); }

References UNOP.

◆ ToString()

const Operator* v8::internal::compiler::JSOperatorBuilder::ToString ( )
inline

Definition at line 107 of file js-operator.h.

107 { UNOP(JSToString); }

References UNOP.

◆ TypeOf()

const Operator* v8::internal::compiler::JSOperatorBuilder::TypeOf ( )
inline

Definition at line 162 of file js-operator.h.

162 { SIMPLE(JSTypeOf, Operator::kPure, 1, 1); }

References v8::internal::compiler::Operator::kPure, and SIMPLE.

◆ UnaryNot()

const Operator* v8::internal::compiler::JSOperatorBuilder::UnaryNot ( )
inline

Definition at line 104 of file js-operator.h.

104 { UNOP(JSUnaryNot); }

References UNOP.

◆ Yield()

const Operator* v8::internal::compiler::JSOperatorBuilder::Yield ( )
inline

Definition at line 110 of file js-operator.h.

110 { UNOP(JSYield); }

References UNOP.

Member Data Documentation

◆ zone_

Zone* v8::internal::compiler::JSOperatorBuilder::zone_
private

Definition at line 197 of file js-operator.h.

Referenced by CallNew().


The documentation for this class was generated from the following file: