5 #ifndef V8_CODE_STUBS_H_
6 #define V8_CODE_STUBS_H_
21 #define CODE_STUB_LIST_ALL_PLATFORMS(V) \
25 V(BinaryOpICWithAllocationSite) \
35 V(FunctionPrototype) \
37 V(InternalArrayConstructor) \
39 V(KeyedLoadICTrampoline) \
41 V(LoadIndexedInterceptor) \
46 V(StoreArrayLiteralElement) \
47 V(StoreBufferOverflow) \
50 V(StubFailureTrampoline) \
53 V(ArrayNArgumentsConstructor) \
54 V(ArrayNoArgumentConstructor) \
55 V(ArraySingleArgumentConstructor) \
57 V(BinaryOpWithAllocationSite) \
59 V(CreateAllocationSite) \
60 V(ElementsTransitionAndStore) \
61 V(FastCloneShallowArray) \
62 V(FastCloneShallowObject) \
65 V(InternalArrayNArgumentsConstructor) \
66 V(InternalArrayNoArgumentConstructor) \
67 V(InternalArraySingleArgumentConstructor) \
69 V(LoadDictionaryElement) \
72 V(NameDictionaryLookup) \
74 V(RegExpConstructResult) \
79 V(TransitionElementsKind) \
85 V(KeyedLoadSloppyArguments) \
91 #if V8_TARGET_ARCH_ARM
92 #define CODE_STUB_LIST_ARM(V) \
94 V(WriteInt32ToHeapNumber)
97 #define CODE_STUB_LIST_ARM(V)
101 #if V8_TARGET_ARCH_ARM64
102 #define CODE_STUB_LIST_ARM64(V) \
104 V(RestoreRegistersState) \
105 V(StoreRegistersState)
108 #define CODE_STUB_LIST_ARM64(V)
112 #if V8_TARGET_ARCH_MIPS
113 #define CODE_STUB_LIST_MIPS(V) \
115 V(RestoreRegistersState) \
116 V(StoreRegistersState) \
117 V(WriteInt32ToHeapNumber)
118 #elif V8_TARGET_ARCH_MIPS64
119 #define CODE_STUB_LIST_MIPS(V) \
121 V(RestoreRegistersState) \
122 V(StoreRegistersState) \
123 V(WriteInt32ToHeapNumber)
125 #define CODE_STUB_LIST_MIPS(V)
129 #define CODE_STUB_LIST(V) \
130 CODE_STUB_LIST_ALL_PLATFORMS(V) \
131 CODE_STUB_LIST_ARM(V) \
132 CODE_STUB_LIST_ARM64(V) \
133 CODE_STUB_LIST_MIPS(V)
142 #define DEF_ENUM(name) name,
155 return static_cast<Major>(MajorKeyBits::decode(key));
158 return MinorKeyBits::decode(key);
163 return MajorKeyFromKey(code_stub->
stub_key());
215 : minor_key_(MinorKeyFromKey(key)), isolate_(isolate) {}
230 DCHECK(
static_cast<int>(MajorKey()) < NUMBER_OF_IDS);
231 return MinorKeyBits::encode(MinorKey()) | MajorKeyBits::encode(MajorKey());
266 typedef void (*DispatchedCall)(
CodeStub* stub,
void** value_out);
268 DispatchedCall call);
275 kStubMajorKeyBits, kStubMinorKeyBits> {};
277 friend class BreakPointIterator;
283 #define DEFINE_CODE_STUB_BASE(NAME, SUPER) \
285 NAME(uint32_t key, Isolate* isolate) : SUPER(key, isolate) {} \
288 DISALLOW_COPY_AND_ASSIGN(NAME)
291 #define DEFINE_CODE_STUB(NAME, SUPER) \
293 virtual inline Major MajorKey() const OVERRIDE { \
296 DEFINE_CODE_STUB_BASE(NAME##Stub, SUPER)
299 #define DEFINE_PLATFORM_CODE_STUB(NAME, SUPER) \
301 virtual void Generate(MacroAssembler* masm) OVERRIDE; \
302 DEFINE_CODE_STUB(NAME, SUPER)
305 #define DEFINE_HYDROGEN_CODE_STUB(NAME, SUPER) \
307 virtual void InitializeDescriptor(CodeStubDescriptor* descriptor) OVERRIDE; \
308 virtual Handle<Code> GenerateCode() OVERRIDE; \
309 DEFINE_CODE_STUB(NAME, SUPER)
311 #define DEFINE_HANDLER_CODE_STUB(NAME, SUPER) \
313 virtual Handle<Code> GenerateCode() OVERRIDE; \
314 DEFINE_CODE_STUB(NAME, SUPER)
316 #define DEFINE_CALL_INTERFACE_DESCRIPTOR(NAME) \
318 virtual CallInterfaceDescriptor GetCallInterfaceDescriptor() OVERRIDE { \
319 return NAME##Descriptor(isolate()); \
325 #define DEFINE_NULL_CALL_INTERFACE_DESCRIPTOR() \
327 virtual CallInterfaceDescriptor GetCallInterfaceDescriptor() OVERRIDE { \
329 return CallInterfaceDescriptor(); \
440 template<
class SubClass>
442 SubClass::GenerateAheadOfTime(isolate);
443 return SubClass().GetCode(isolate);
453 template<
class StateType>
500 #if V8_TARGET_ARCH_IA32
502 #elif V8_TARGET_ARCH_X64
504 #elif V8_TARGET_ARCH_ARM64
506 #elif V8_TARGET_ARCH_ARM
508 #elif V8_TARGET_ARCH_MIPS
510 #elif V8_TARGET_ARCH_MIPS64
512 #elif V8_TARGET_ARCH_X87
515 #error Unsupported target architecture.
559 static const int kNumber = 0;
598 static const int kMaximumSlots = 64;
601 DCHECK(slots > 0 && slots <= kMaximumSlots);
602 set_sub_minor_key(SlotsBits::encode(slots));
605 int slots()
const {
return SlotsBits::decode(sub_minor_key()); }
608 static const int kFunction = 0;
794 minor_key_ =
state.GetExtraICState();
799 return state.arg_count();
812 return state().call_type() == CallICState::METHOD;
818 return CallICState(
static_cast<ExtraICState>(minor_key_));
900 int property_index_key =
index.GetFieldAccessStubKey();
906 return FieldIndex::FromFieldAccessStubKey(property_index_key);
973 int property_index_key =
index.GetFieldAccessStubKey();
974 uint8_t repr = PropertyDetails::EncodeRepresentation(
representation);
981 return FieldIndex::FromFieldAccessStubKey(property_index_key);
986 return PropertyDetails::DecodeRepresentation(repr);
1010 return isolate->
factory()->uninitialized_value();
1018 pattern.
Add(isolate()->factory()->meta_map(),
Handle<Map>(global->map()));
1019 pattern.
Add(isolate()->factory()->global_property_cell_map(), cell);
1020 return CodeStub::GetCodeCopy(pattern);
1023 pattern.
Add(isolate()->factory()->global_property_cell_map(), cell);
1024 return CodeStub::GetCodeCopy(pattern);
1099 BinaryOpICState
state(isolate, op,
mode);
1111 return Code::BINARY_OP_IC;
1115 return state().GetICState();
1134 const BinaryOpICState&
state);
1146 const BinaryOpICState& state)
1148 minor_key_ = state.GetExtraICState();
1155 pattern.
Add(isolate()->factory()->undefined_map(), allocation_site);
1156 return CodeStub::GetCodeCopy(pattern);
1160 return Code::BINARY_OP_IC;
1164 return state().GetICState();
1175 return BinaryOpICState(isolate(),
static_cast<ExtraICState>(minor_key_));
1179 const BinaryOpICState& state);
1201 static const int kAllocationSite = 0;
1202 static const int kLeft = 1;
1203 static const int kRight = 2;
1222 class StringAddStub
FINAL :
public HydrogenCodeStub {
1227 set_sub_minor_key(StringAddFlagsBits::encode(
flags) |
1228 PretenureFlagBits::encode(pretenure_flag));
1232 return StringAddFlagsBits::decode(sub_minor_key());
1236 return PretenureFlagBits::decode(sub_minor_key());
1240 static const int kLeft = 0;
1241 static const int kRight = 1;
1293 bool strict()
const {
return op() == Token::EQ_STRICT; }
1410 DCHECK(result_size == 1 || result_size == 2);
1442 DCHECK(
type == StackFrame::ENTRY ||
type == StackFrame::ENTRY_CONSTRUCT);
1450 os << (
type() == StackFrame::ENTRY ?
"JSEntryStub"
1451 :
"JSConstructEntryStub");
1518 static const int kLength = 0;
1519 static const int kIndex = 1;
1520 static const int kInput = 2;
1614 Label* receiver_not_string,
1615 Label* index_not_number,
1616 Label* index_out_of_range,
1719 Label* receiver_not_string,
1720 Label* index_not_number,
1721 Label* index_out_of_range,
1726 receiver_not_string,
1788 minor_key_ =
state.GetExtraICState();
1803 return LoadICState(
static_cast<ExtraICState>(minor_key_));
1817 return Code::KEYED_LOAD_IC;
1877 return Code::KEYED_LOAD_IC;
1914 public BitField<int, 0, kBitsPerRegisterNumber> {};
1916 public BitField<int, kBitsPerRegisterNumber,
1917 kBitsPerRegisterNumber> {};
1919 public BitField<bool, 2 * kBitsPerRegisterNumber, 1> {};
1921 public BitField<int, 2 * kBitsPerRegisterNumber + 1, 3> {};
1923 public BitField<int, 2 * kBitsPerRegisterNumber + 4, 1> {};
1925 public BitField<int, 2 * kBitsPerRegisterNumber + 5, 1> {};
2053 BitField<AllocationSiteOverrideMode, 8, 1> {};
2265 if (
types().IsEmpty()) {
2383 intptr_t stack_pointer,
2397 minor_key_ = SaveDoublesBits::encode(save_fp ==
kSaveFPRegs);
2431 #undef DEFINE_CALL_INTERFACE_DESCRIPTOR
2432 #undef DEFINE_PLATFORM_CODE_STUB
2433 #undef DEFINE_HANDLER_CODE_STUB
2434 #undef DEFINE_HYDROGEN_CODE_STUB
2435 #undef DEFINE_CODE_STUB
2436 #undef DEFINE_CODE_STUB_BASE
static AllocationSiteMode GetMode(ElementsKind boilerplate_elements_kind)
DEFINE_PLATFORM_CODE_STUB(ArgumentsAccess, PlatformCodeStub)
virtual CallInterfaceDescriptor GetCallInterfaceDescriptor() OVERRIDE
void GenerateReadElement(MacroAssembler *masm)
void GenerateNewSloppySlow(MacroAssembler *masm)
virtual void PrintName(OStream &os) const OVERRIDE
void GenerateNewStrict(MacroAssembler *masm)
void GenerateNewSloppyFast(MacroAssembler *masm)
ArgumentsAccessStub(Isolate *isolate, Type type)
STATIC_ASSERT(LAST_ALLOCATION_SITE_OVERRIDE_MODE==1)
static const int kConstructor
static void GenerateStubsAheadOfTime(Isolate *isolate)
AllocationSiteOverrideMode override_mode() const
ArrayConstructorStubBase(Isolate *isolate, ElementsKind kind, AllocationSiteOverrideMode override_mode)
OStream & BasePrintName(OStream &os, const char *name) const
static const int kAllocationSite
DEFINE_CODE_STUB_BASE(ArrayConstructorStubBase, HydrogenCodeStub)
ElementsKind elements_kind() const
DEFINE_CALL_INTERFACE_DESCRIPTOR(ArrayConstructor)
void GenerateDispatchToArrayStub(MacroAssembler *masm, AllocationSiteOverrideMode mode)
ArrayConstructorStub(Isolate *isolate, int argument_count)
DEFINE_PLATFORM_CODE_STUB(ArrayConstructor, PlatformCodeStub)
ArgumentCountKey argument_count() const
virtual void PrintName(OStream &os) const OVERRIDE
DEFINE_CALL_INTERFACE_DESCRIPTOR(ArrayConstructor)
ArrayNArgumentsConstructorStub(Isolate *isolate, ElementsKind kind, AllocationSiteOverrideMode override_mode=DONT_OVERRIDE)
DEFINE_HYDROGEN_CODE_STUB(ArrayNArgumentsConstructor, ArrayConstructorStubBase)
virtual void PrintName(OStream &os) const
DEFINE_HYDROGEN_CODE_STUB(ArrayNoArgumentConstructor, ArrayConstructorStubBase)
ArrayNoArgumentConstructorStub(Isolate *isolate, ElementsKind kind, AllocationSiteOverrideMode override_mode=DONT_OVERRIDE)
virtual void PrintName(OStream &os) const OVERRIDE
DEFINE_CALL_INTERFACE_DESCRIPTOR(ArrayConstructorConstantArgCount)
ArraySingleArgumentConstructorStub(Isolate *isolate, ElementsKind kind, AllocationSiteOverrideMode override_mode=DONT_OVERRIDE)
virtual void PrintName(OStream &os) const
DEFINE_CALL_INTERFACE_DESCRIPTOR(ArrayConstructor)
DEFINE_HYDROGEN_CODE_STUB(ArraySingleArgumentConstructor, ArrayConstructorStubBase)
static uint32_t NoCacheKey()
virtual bool NeedsImmovableCode()
virtual Major MajorKey() const =0
virtual CallInterfaceDescriptor GetCallInterfaceDescriptor()=0
virtual Code::StubType GetStubType()
Isolate * isolate() const
static void GetCodeDispatchCall(CodeStub *stub, void **value_out)
virtual void Activate(Code *code)
CodeStub(uint32_t key, Isolate *isolate)
virtual void PrintName(OStream &os) const
CodeStub(Isolate *isolate)
Handle< Code > GetCodeCopy(const Code::FindAndReplacePattern &pattern)
virtual bool FindCodeInSpecialCache(Code **code_out)
bool FindCodeInCache(Code **code_out)
static void GenerateFPStubs(Isolate *isolate)
static void GenerateStubsAheadOfTime(Isolate *isolate)
void RecordCodeGeneration(Handle< Code > code)
STATIC_ASSERT(NUMBER_OF_IDS<(1<< kStubMajorKeyBits))
static Major GetMajorKey(Code *code_stub)
static const char * MajorName(Major major_key, bool allow_unknown_keys)
static Major MajorKeyFromKey(uint32_t key)
virtual void AddToSpecialCache(Handle< Code > new_object)
friend OStream & operator<<(OStream &os, const CodeStub &s)
virtual InlineCacheState GetICState() const
static void Dispatch(Isolate *isolate, uint32_t key, void **value_out, DispatchedCall call)
static void InitializeDescriptor(Isolate *isolate, uint32_t key, CodeStubDescriptor *desc)
virtual Handle< Code > GenerateCode()=0
virtual bool UseSpecialCache()
virtual void FinishCode(Handle< Code > code)
static uint32_t MinorKeyFromKey(uint32_t key)
virtual void InitializeDescriptor(CodeStubDescriptor *descriptor)
virtual void PrintState(OStream &os) const
virtual Code::Kind GetCodeKind() const
static MaybeHandle< Code > GetCode(Isolate *isolate, uint32_t key)
virtual void PrintBaseName(OStream &os) const
virtual bool SometimesSetsUpAFrame()
virtual ExtraICState GetExtraICState() const
uint32_t MinorKey() const
BinaryOpICStub(Isolate *isolate, const BinaryOpICState &state)
BinaryOpICStub(Isolate *isolate, Token::Value op, OverwriteMode mode=NO_OVERWRITE)
DEFINE_HYDROGEN_CODE_STUB(BinaryOpIC, HydrogenCodeStub)
DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOp)
static void GenerateAheadOfTime(Isolate *isolate)
virtual ExtraICState GetExtraICState() const FINAL OVERRIDE
virtual Code::Kind GetCodeKind() const OVERRIDE
virtual InlineCacheState GetICState() const FINAL OVERRIDE
BinaryOpICState state() const
virtual void PrintState(OStream &os) const FINAL OVERRIDE
static U update(U previous, T value)
bool save_doubles() const
static void GenerateAheadOfTime(Isolate *isolate)
DEFINE_NULL_CALL_INTERFACE_DESCRIPTOR()
DEFINE_PLATFORM_CODE_STUB(CEntry, PlatformCodeStub)
CEntryStub(Isolate *isolate, int result_size, SaveFPRegsMode save_doubles=kDontSaveFPRegs)
bool NeedsImmovableCode()
DEFINE_PLATFORM_CODE_STUB(CallApiFunction, PlatformCodeStub)
bool call_data_undefined() const
STATIC_ASSERT(Code::kArgumentsBits+2<=kStubMinorKeyBits)
CallApiFunctionStub(Isolate *isolate, bool is_store, bool call_data_undefined, int argc)
DEFINE_CALL_INTERFACE_DESCRIPTOR(ApiFunction)
DEFINE_PLATFORM_CODE_STUB(CallApiGetter, PlatformCodeStub)
DEFINE_CALL_INTERFACE_DESCRIPTOR(ApiGetter)
CallApiGetterStub(Isolate *isolate)
virtual void FinishCode(Handle< Code > code)
CallConstructorFlags flags() const
CallConstructStub(Isolate *isolate, CallConstructorFlags flags)
DEFINE_PLATFORM_CODE_STUB(CallConstruct, PlatformCodeStub)
DEFINE_CALL_INTERFACE_DESCRIPTOR(CallConstruct)
bool RecordCallTarget() const
virtual void PrintName(OStream &os) const OVERRIDE
STATIC_ASSERT(Code::kArgumentsBits+2<=kStubMinorKeyBits)
DEFINE_CALL_INTERFACE_DESCRIPTOR(CallFunction)
DEFINE_PLATFORM_CODE_STUB(CallFunction, PlatformCodeStub)
CallFunctionStub(Isolate *isolate, int argc, CallFunctionFlags flags)
bool CallAsMethod() const
virtual void PrintName(OStream &os) const OVERRIDE
static int ExtractArgcFromMinorKey(int minor_key)
CallICState state() const
bool CallAsMethod() const
virtual void PrintState(OStream &os) const OVERRIDE
DEFINE_CALL_INTERFACE_DESCRIPTOR(CallFunctionWithFeedback)
CallICStub(Isolate *isolate, const CallICState &state)
virtual ExtraICState GetExtraICState() const FINAL OVERRIDE
void GenerateMiss(MacroAssembler *masm)
static int ExtractArgcFromMinorKey(int minor_key)
DEFINE_PLATFORM_CODE_STUB(CallIC, PlatformCodeStub)
virtual Code::Kind GetCodeKind() const OVERRIDE
virtual InlineCacheState GetICState() const OVERRIDE
virtual InlineCacheState GetICState() const FINAL OVERRIDE
CallIC_ArrayStub(Isolate *isolate, const CallICState &state_in)
virtual void PrintState(OStream &os) const OVERRIDE
DEFINE_PLATFORM_CODE_STUB(CallIC_Array, CallICStub)
Register GetEnvironmentParameterRegister(int index) const
Representation GetEnvironmentParameterRepresentation(int index) const
int GetEnvironmentParameterCount() const
Address deoptimization_handler_
StubFunctionMode function_mode_
int GetHandlerParameterCount() const
bool has_miss_handler() const
CallInterfaceDescriptor call_descriptor_
Address deoptimization_handler() const
void set_call_descriptor(CallInterfaceDescriptor d)
CodeStubDescriptor(CodeStub *stub)
ExternalReference miss_handler_
int hint_stack_parameter_count() const
int hint_stack_parameter_count_
int GetEnvironmentParameterCount() const
CallInterfaceDescriptor call_descriptor() const
void SetMissHandler(ExternalReference handler)
void Initialize(Address deoptimization_handler=NULL, int hint_stack_parameter_count=-1, StubFunctionMode function_mode=NOT_JS_FUNCTION_STUB_MODE)
HandlerArgumentsMode handler_arguments_mode_
Register stack_parameter_count_
Representation GetEnvironmentParameterRepresentation(int index) const
StubFunctionMode function_mode() const
Register stack_parameter_count() const
ExternalReference miss_handler() const
bool IsEnvironmentParameterCountRegister(int index) const
void Add(Handle< Map > map_to_find, Handle< Object > obj_to_replace)
static const int kMaxArguments
static const int kArgumentsBits
Condition GetCondition() const
virtual InlineCacheState GetICState() const
DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOp)
virtual Code::Kind GetCodeKind() const
void GenerateInternalizedStrings(MacroAssembler *masm)
void GenerateStrings(MacroAssembler *masm)
void set_known_map(Handle< Map > map)
CompareICState::State state() const
void GenerateMiss(MacroAssembler *masm)
CompareICState::State left() const
void GenerateGeneric(MacroAssembler *masm)
CompareICState::State right() const
void GenerateObjects(MacroAssembler *masm)
CompareICStub(Isolate *isolate, Token::Value op, CompareICState::State left, CompareICState::State right, CompareICState::State state)
virtual void AddToSpecialCache(Handle< Code > new_object)
DEFINE_PLATFORM_CODE_STUB(CompareIC, PlatformCodeStub)
virtual bool FindCodeInSpecialCache(Code **code_out)
void GenerateNumbers(MacroAssembler *masm)
void GenerateUniqueNames(MacroAssembler *masm)
void GenerateKnownObjects(MacroAssembler *masm)
void GenerateSmis(MacroAssembler *masm)
virtual bool UseSpecialCache()
CompareNilICStub(Isolate *isolate, ExtraICState ic_state, InitializationState init_state=INITIALIZED)
virtual void PrintState(OStream &os) const OVERRIDE
bool IsMonomorphic() const
DEFINE_CALL_INTERFACE_DESCRIPTOR(CompareNil)
friend OStream & operator<<(OStream &os, const State &s)
void UpdateStatus(Handle< Object > object)
Type * GetInputType(Zone *zone, Handle< Map > map)
virtual InlineCacheState GetICState() const
STATIC_ASSERT(NUMBER_OF_TYPES<=6)
static Handle< Code > GetUninitialized(Isolate *isolate, NilValue nil)
CompareNilICStub(Isolate *isolate, NilValue nil, InitializationState init_state)
DEFINE_HYDROGEN_CODE_STUB(CompareNilIC, HydrogenCodeStub)
virtual void PrintBaseName(OStream &os) const OVERRIDE
virtual Code::Kind GetCodeKind() const
NilValue nil_value() const
Type * GetType(Zone *zone, Handle< Map > map=Handle< Map >())
virtual ExtraICState GetExtraICState() const
CompareNilICStub(Isolate *isolate, NilValue nil)
static bool IsSupported(CpuFeature f)
CreateAllocationSiteStub(Isolate *isolate)
DEFINE_HYDROGEN_CODE_STUB(CreateAllocationSite, HydrogenCodeStub)
static void GenerateAheadOfTime(Isolate *isolate)
DEFINE_CALL_INTERFACE_DESCRIPTOR(CreateAllocationSite)
DEFINE_PLATFORM_CODE_STUB(DoubleToI, PlatformCodeStub)
static const int kBitsPerRegisterNumber
bool skip_fastpath() const
bool is_truncating() const
STATIC_ASSERT((1L<< kBitsPerRegisterNumber) >=Register::kNumRegisters)
Register destination() const
virtual bool SometimesSetsUpAFrame()
DEFINE_NULL_CALL_INTERFACE_DESCRIPTOR()
DoubleToIStub(Isolate *isolate, Register source, Register destination, int offset, bool is_truncating, bool skip_fastpath=false)
static const Register MapRegister()
DEFINE_HYDROGEN_CODE_STUB(ElementsTransitionAndStore, HydrogenCodeStub)
static const Register KeyRegister()
static const Register ObjectRegister()
ElementsKind to_kind() const
DEFINE_CALL_INTERFACE_DESCRIPTOR(ElementTransitionAndStore)
static const Register MapRegister()
static const Register ValueRegister()
ElementsTransitionAndStoreStub(Isolate *isolate, ElementsKind from_kind, ElementsKind to_kind, bool is_jsarray, KeyedAccessStoreMode store_mode)
ElementsKind from_kind() const
KeyedAccessStoreMode store_mode() const
bool Contains(E element) const
Source to read snapshot and builtins files from.
DEFINE_CALL_INTERFACE_DESCRIPTOR(StringAdd)
DEFINE_HYDROGEN_CODE_STUB(NumberToString, HydrogenCodeStub)
static void GenerateAheadOfTime(Isolate *isolate, const BinaryOpICState &state)
virtual Code::Kind GetCodeKind() const FINAL OVERRIDE
DEFINE_HYDROGEN_CODE_STUB(RegExpConstructResult, HydrogenCodeStub)
virtual Code::Kind GetCodeKind() const OVERRIDE
DEFINE_CALL_INTERFACE_DESCRIPTOR(FastNewContext)
BinaryOpICState state() const
virtual void PrintState(OStream &os) const OVERRIDE
Handle< Code > GetCodeCopyFromTemplate(Handle< AllocationSite > allocation_site)
DEFINE_PLATFORM_CODE_STUB(BinaryOpICWithAllocationSite, PlatformCodeStub)
DEFINE_HYDROGEN_CODE_STUB(BinaryOpWithAllocationSite, BinaryOpICStub)
virtual InlineCacheState GetICState() const OVERRIDE
BinaryOpWithAllocationSiteStub(Isolate *isolate, Token::Value op, OverwriteMode mode)
static void GenerateAheadOfTime(Isolate *isolate)
StringAddFlags flags() const
DEFINE_CALL_INTERFACE_DESCRIPTOR(NumberToString)
DEFINE_CALL_INTERFACE_DESCRIPTOR(RegExpConstructResult)
NumberToStringStub(Isolate *isolate)
DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOpWithAllocationSite)
BinaryOpWithAllocationSiteStub(Isolate *isolate, const BinaryOpICState &state)
StringAddStub(Isolate *isolate, StringAddFlags flags, PretenureFlag pretenure_flag)
DEFINE_HYDROGEN_CODE_STUB(StringAdd, HydrogenCodeStub)
virtual ExtraICState GetExtraICState() const OVERRIDE
FastNewContextStub(Isolate *isolate, int slots)
virtual void PrintBaseName(OStream &os) const OVERRIDE
BinaryOpICWithAllocationSiteStub(Isolate *isolate, const BinaryOpICState &state)
DEFINE_HYDROGEN_CODE_STUB(FastNewContext, HydrogenCodeStub)
PretenureFlag pretenure_flag() const
RegExpConstructResultStub(Isolate *isolate)
FastCloneShallowArrayStub(Isolate *isolate, AllocationSiteMode allocation_site_mode)
DEFINE_HYDROGEN_CODE_STUB(FastCloneShallowArray, HydrogenCodeStub)
DEFINE_CALL_INTERFACE_DESCRIPTOR(FastCloneShallowArray)
AllocationSiteMode allocation_site_mode() const
FastCloneShallowObjectStub(Isolate *isolate, int length)
DEFINE_CALL_INTERFACE_DESCRIPTOR(FastCloneShallowObject)
DEFINE_HYDROGEN_CODE_STUB(FastCloneShallowObject, HydrogenCodeStub)
static const int kMaximumClonedProperties
FunctionKind kind() const
FastNewClosureStub(Isolate *isolate, StrictMode strict_mode, FunctionKind kind)
bool is_generator() const
DEFINE_HYDROGEN_CODE_STUB(FastNewClosure, HydrogenCodeStub)
StrictMode strict_mode() const
DEFINE_CALL_INTERFACE_DESCRIPTOR(FastNewClosure)
bool is_concise_method() const
virtual Code::Kind GetCodeKind() const
DEFINE_PLATFORM_CODE_STUB(FunctionPrototype, PlatformCodeStub)
FunctionPrototypeStub(Isolate *isolate)
DEFINE_CALL_INTERFACE_DESCRIPTOR(Load)
virtual void InitializeDescriptor(CodeStubDescriptor *descriptor) OVERRIDE
virtual CallInterfaceDescriptor GetCallInterfaceDescriptor() OVERRIDE
virtual InlineCacheState GetICState() const
virtual Code::Kind GetCodeKind() const
virtual ExtraICState GetExtraICState() const
DEFINE_CODE_STUB_BASE(HandlerStub, HydrogenCodeStub)
virtual Code::Kind kind() const =0
static Handle< Code > GetUninitialized(Isolate *isolate)
bool IsUninitialized() const
void TraceTransition(StateType from, StateType to)
virtual Handle< Code > GenerateCode()=0
virtual Code::Kind GetCodeKind() const
HydrogenCodeStub(Isolate *isolate, InitializationState state=INITIALIZED)
void GenerateLightweightMiss(MacroAssembler *masm, ExternalReference miss)
void set_sub_minor_key(uint32_t key)
DEFINE_CODE_STUB_BASE(HydrogenCodeStub, CodeStub)
Handle< Code > GenerateLightweightMissCode(ExternalReference miss)
static const int kSubMinorKeyBits
uint32_t sub_minor_key() const
static const Register left()
static const Register right()
DEFINE_PLATFORM_CODE_STUB(Instanceof, PlatformCodeStub)
InstanceofStub(Isolate *isolate, Flags flags)
virtual CallInterfaceDescriptor GetCallInterfaceDescriptor() OVERRIDE
virtual void PrintName(OStream &os) const OVERRIDE
bool HasCallSiteInlineCheck() const
bool HasArgsInRegisters() const
bool ReturnTrueFalseObject() const
InternalArrayConstructorStubBase(Isolate *isolate, ElementsKind kind)
static const int kConstructor
static void GenerateStubsAheadOfTime(Isolate *isolate)
ElementsKind elements_kind() const
DEFINE_CODE_STUB_BASE(InternalArrayConstructorStubBase, HydrogenCodeStub)
DEFINE_CALL_INTERFACE_DESCRIPTOR(InternalArrayConstructor)
DEFINE_PLATFORM_CODE_STUB(InternalArrayConstructor, PlatformCodeStub)
void GenerateCase(MacroAssembler *masm, ElementsKind kind)
InternalArrayConstructorStub(Isolate *isolate)
DEFINE_CALL_INTERFACE_DESCRIPTOR(InternalArrayConstructor)
DEFINE_HYDROGEN_CODE_STUB(InternalArrayNArgumentsConstructor, InternalArrayConstructorStubBase)
InternalArrayNArgumentsConstructorStub(Isolate *isolate, ElementsKind kind)
DEFINE_CALL_INTERFACE_DESCRIPTOR(InternalArrayConstructorConstantArgCount)
InternalArrayNoArgumentConstructorStub(Isolate *isolate, ElementsKind kind)
DEFINE_HYDROGEN_CODE_STUB(InternalArrayNoArgumentConstructor, InternalArrayConstructorStubBase)
DEFINE_HYDROGEN_CODE_STUB(InternalArraySingleArgumentConstructor, InternalArrayConstructorStubBase)
DEFINE_CALL_INTERFACE_DESCRIPTOR(InternalArrayConstructor)
InternalArraySingleArgumentConstructorStub(Isolate *isolate, ElementsKind kind)
DEFINE_NULL_CALL_INTERFACE_DESCRIPTOR()
JSEntryStub(Isolate *isolate, StackFrame::Type type)
virtual void FinishCode(Handle< Code > code)
DEFINE_PLATFORM_CODE_STUB(JSEntry, PlatformCodeStub)
StackFrame::Type type() const
virtual void PrintName(OStream &os) const OVERRIDE
KeyedLoadGenericStub(Isolate *isolate)
DEFINE_HYDROGEN_CODE_STUB(KeyedLoadGeneric, HydrogenCodeStub)
DEFINE_CALL_INTERFACE_DESCRIPTOR(Load)
virtual InlineCacheState GetICState() const
virtual Code::Kind GetCodeKind() const
virtual Code::Kind GetCodeKind() const OVERRIDE
KeyedLoadICTrampolineStub(Isolate *isolate)
DEFINE_PLATFORM_CODE_STUB(KeyedLoadICTrampoline, LoadICTrampolineStub)
virtual Code::StubType GetStubType()
KeyedLoadSloppyArgumentsStub(Isolate *isolate)
DEFINE_HANDLER_CODE_STUB(KeyedLoadSloppyArguments, HandlerStub)
virtual Code::Kind kind() const
LoadConstantStub(Isolate *isolate, int constant_index)
virtual Code::Kind kind() const
virtual Code::StubType GetStubType()
int constant_index() const
DEFINE_HANDLER_CODE_STUB(LoadConstant, HandlerStub)
DEFINE_CALL_INTERFACE_DESCRIPTOR(Load)
LoadDictionaryElementStub(Isolate *isolate)
DEFINE_HYDROGEN_CODE_STUB(LoadDictionaryElement, HydrogenCodeStub)
DEFINE_CALL_INTERFACE_DESCRIPTOR(Load)
ElementsKind elements_kind() const
LoadFastElementStub(Isolate *isolate, bool is_js_array, ElementsKind elements_kind)
DEFINE_HYDROGEN_CODE_STUB(LoadFastElement, HydrogenCodeStub)
virtual Code::StubType GetStubType()
DEFINE_HANDLER_CODE_STUB(LoadField, HandlerStub)
LoadFieldStub(Isolate *isolate, FieldIndex index)
virtual Code::Kind kind() const
virtual Code::Kind GetCodeKind() const OVERRIDE
LoadICState state() const
LoadICTrampolineStub(Isolate *isolate, const LoadICState &state)
DEFINE_PLATFORM_CODE_STUB(LoadICTrampoline, PlatformCodeStub)
virtual ExtraICState GetExtraICState() const FINAL OVERRIDE
virtual InlineCacheState GetICState() const FINAL OVERRIDE
DEFINE_CALL_INTERFACE_DESCRIPTOR(VectorLoadICTrampoline)
LoadIndexedInterceptorStub(Isolate *isolate)
virtual Code::StubType GetStubType()
DEFINE_PLATFORM_CODE_STUB(LoadIndexedInterceptor, PlatformCodeStub)
DEFINE_CALL_INTERFACE_DESCRIPTOR(Load)
virtual Code::Kind GetCodeKind() const
virtual CallInterfaceDescriptor GetCallInterfaceDescriptor() OVERRIDE
MathPowStub(Isolate *isolate, ExponentType exponent_type)
DEFINE_PLATFORM_CODE_STUB(MathPow, PlatformCodeStub)
ExponentType exponent_type() const
DEFINE_CALL_INTERFACE_DESCRIPTOR(Load)
virtual ExtraICState GetExtraICState() const FINAL OVERRIDE
MegamorphicLoadStub(Isolate *isolate, const LoadICState &state)
virtual InlineCacheState GetICState() const FINAL OVERRIDE
virtual Code::Kind GetCodeKind() const OVERRIDE
DEFINE_HYDROGEN_CODE_STUB(MegamorphicLoad, HydrogenCodeStub)
virtual void BeforeCall(MacroAssembler *masm) const
virtual void AfterCall(MacroAssembler *masm) const
virtual bool SometimesSetsUpAFrame()
DEFINE_PLATFORM_CODE_STUB(ProfileEntryHook, PlatformCodeStub)
ProfileEntryHookStub(Isolate *isolate)
static void MaybeCallEntryHook(MacroAssembler *masm)
static void EntryHookTrampoline(intptr_t function, intptr_t stack_pointer, Isolate *isolate)
RegExpExecStub(Isolate *isolate)
DEFINE_CALL_INTERFACE_DESCRIPTOR(ContextOnly)
DEFINE_PLATFORM_CODE_STUB(RegExpExec, PlatformCodeStub)
static Representation FromKind(Kind kind)
virtual void BeforeCall(MacroAssembler *masm) const =0
virtual ~RuntimeCallHelper()
virtual void AfterCall(MacroAssembler *masm) const =0
DISALLOW_COPY_AND_ASSIGN(RuntimeCallHelper)
DEFINE_PLATFORM_CODE_STUB(StoreArrayLiteralElement, PlatformCodeStub)
StoreArrayLiteralElementStub(Isolate *isolate)
DEFINE_CALL_INTERFACE_DESCRIPTOR(StoreArrayLiteralElement)
static void GenerateFixedRegStubsAheadOfTime(Isolate *isolate)
StoreBufferOverflowStub(Isolate *isolate, SaveFPRegsMode save_fp)
virtual bool SometimesSetsUpAFrame()
bool save_doubles() const
DEFINE_NULL_CALL_INTERFACE_DESCRIPTOR()
DEFINE_PLATFORM_CODE_STUB(StoreBufferOverflow, PlatformCodeStub)
static const Register ReceiverRegister()
static const Register NameRegister()
static const Register ValueRegister()
DEFINE_CALL_INTERFACE_DESCRIPTOR(Store)
ElementsKind elements_kind() const
DEFINE_PLATFORM_CODE_STUB(StoreElement, PlatformCodeStub)
StoreElementStub(Isolate *isolate, ElementsKind elements_kind)
DEFINE_HYDROGEN_CODE_STUB(StoreFastElement, HydrogenCodeStub)
StoreFastElementStub(Isolate *isolate, bool is_js_array, ElementsKind elements_kind, KeyedAccessStoreMode mode)
KeyedAccessStoreMode store_mode() const
ElementsKind elements_kind() const
DEFINE_CALL_INTERFACE_DESCRIPTOR(Store)
virtual Code::StubType GetStubType()
virtual Code::Kind kind() const
DEFINE_HANDLER_CODE_STUB(StoreField, HandlerStub)
StoreFieldStub(Isolate *isolate, FieldIndex index, Representation representation)
Representation representation()
bool check_global() const
virtual Code::Kind kind() const
static Handle< HeapObject > global_placeholder(Isolate *isolate)
Representation representation()
StoreGlobalStub(Isolate *isolate, bool is_constant, bool check_global)
void set_representation(Representation r)
void set_is_constant(bool value)
DEFINE_HANDLER_CODE_STUB(StoreGlobal, HandlerStub)
Handle< Code > GetCodeCopyFromTemplate(Handle< GlobalObject > global, Handle< PropertyCell > cell)
DISALLOW_COPY_AND_ASSIGN(StringCharAtGenerator)
StringCharFromCodeGenerator char_from_code_generator_
void SkipSlow(MacroAssembler *masm, Label *bailout)
StringCharAtGenerator(Register object, Register index, Register scratch, Register result, Label *receiver_not_string, Label *index_not_number, Label *index_out_of_range, StringIndexFlags index_flags)
void GenerateSlow(MacroAssembler *masm, const RuntimeCallHelper &call_helper)
void GenerateFast(MacroAssembler *masm)
StringCharCodeAtGenerator char_code_at_generator_
StringIndexFlags index_flags_
Label * receiver_not_string_
Label * index_out_of_range_
StringCharCodeAtGenerator(Register object, Register index, Register result, Label *receiver_not_string, Label *index_not_number, Label *index_out_of_range, StringIndexFlags index_flags)
void GenerateFast(MacroAssembler *masm)
DISALLOW_COPY_AND_ASSIGN(StringCharCodeAtGenerator)
void SkipSlow(MacroAssembler *masm, Label *bailout)
Label * index_not_number_
void GenerateSlow(MacroAssembler *masm, const RuntimeCallHelper &call_helper)
void GenerateFast(MacroAssembler *masm)
void SkipSlow(MacroAssembler *masm, Label *bailout)
DISALLOW_COPY_AND_ASSIGN(StringCharFromCodeGenerator)
StringCharFromCodeGenerator(Register code, Register result)
void GenerateSlow(MacroAssembler *masm, const RuntimeCallHelper &call_helper)
DEFINE_CALL_INTERFACE_DESCRIPTOR(ContextOnly)
StringCompareStub(Isolate *isolate)
DEFINE_PLATFORM_CODE_STUB(StringCompare, PlatformCodeStub)
StringLengthStub(Isolate *isolate)
virtual Code::Kind kind() const
virtual Code::StubType GetStubType()
DEFINE_HANDLER_CODE_STUB(StringLength, HandlerStub)
StubFailureTrampolineStub(Isolate *isolate, StubFunctionMode function_mode)
StubFunctionMode function_mode() const
static void GenerateAheadOfTime(Isolate *isolate)
DEFINE_PLATFORM_CODE_STUB(StubFailureTrampoline, PlatformCodeStub)
DEFINE_NULL_CALL_INTERFACE_DESCRIPTOR()
virtual void AfterCall(MacroAssembler *masm) const
virtual void BeforeCall(MacroAssembler *masm) const
DEFINE_CALL_INTERFACE_DESCRIPTOR(ContextOnly)
DEFINE_PLATFORM_CODE_STUB(SubString, PlatformCodeStub)
SubStringStub(Isolate *isolate)
bool CanBeUndetectable() const
bool UpdateStatus(Handle< Object > object)
virtual InlineCacheState GetICState() const
STATIC_ASSERT(NUMBER_OF_TYPES<=8)
virtual void PrintState(OStream &os) const OVERRIDE
virtual bool SometimesSetsUpAFrame()
@ RESULT_AS_INVERSE_ODDBALL
virtual ExtraICState GetExtraICState() const
ToBooleanStub(Isolate *isolate, InitializationState init_state)
static Handle< Code > GetUninitialized(Isolate *isolate)
DEFINE_HYDROGEN_CODE_STUB(ToBoolean, HydrogenCodeStub)
ToBooleanStub(Isolate *isolate, ExtraICState state)
DEFINE_CALL_INTERFACE_DESCRIPTOR(ToBoolean)
ToBooleanStub(Isolate *isolate, ResultMode mode, Types types=Types())
virtual Code::Kind GetCodeKind() const
bool UpdateStatus(Handle< Object > object)
DEFINE_HYDROGEN_CODE_STUB(ToNumber, HydrogenCodeStub)
ToNumberStub(Isolate *isolate)
DEFINE_CALL_INTERFACE_DESCRIPTOR(ToNumber)
static bool IsCompareOp(Value op)
DEFINE_HYDROGEN_CODE_STUB(TransitionElementsKind, HydrogenCodeStub)
DEFINE_CALL_INTERFACE_DESCRIPTOR(TransitionElementsKind)
ElementsKind to_kind() const
TransitionElementsKindStub(Isolate *isolate, ElementsKind from_kind, ElementsKind to_kind, bool is_js_array)
ElementsKind from_kind() const
VectorKeyedLoadStub(Isolate *isolate)
DEFINE_CALL_INTERFACE_DESCRIPTOR(VectorLoadIC)
DEFINE_HYDROGEN_CODE_STUB(VectorKeyedLoad, VectorLoadStub)
virtual Code::Kind GetCodeKind() const OVERRIDE
LoadICState state() const
VectorLoadStub(Isolate *isolate, const LoadICState &state)
DEFINE_HYDROGEN_CODE_STUB(VectorLoad, HydrogenCodeStub)
DEFINE_CALL_INTERFACE_DESCRIPTOR(VectorLoadIC)
virtual ExtraICState GetExtraICState() const FINAL OVERRIDE
virtual Code::Kind GetCodeKind() const OVERRIDE
virtual InlineCacheState GetICState() const FINAL OVERRIDE
#define CODE_STUB_LIST(V)
#define DEFINE_CALL_INTERFACE_DESCRIPTOR(NAME)
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 map
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 only print modified registers Trace simulator debug messages Implied by trace sim abort randomize hashes to avoid predictable hash Fixed seed to use to hash property Print the time it takes to deserialize the snapshot A filename with extra code to be included in the A file to write the raw snapshot bytes to(mksnapshot only)") DEFINE_STRING(raw_context_file
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
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 mode(MIPS only)") DEFINE_BOOL(enable_always_align_csp
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 NULL
#define DCHECK_LE(v1, v2)
#define DCHECK_GE(v1, v2)
#define DCHECK(condition)
int StringLength(const char *string)
bool IsValidFunctionKind(FunctionKind kind)
bool IsArrowFunction(FunctionKind kind)
TypeImpl< ZoneTypeConfig > Type
static const ExtraICState kNoExtraICState
bool IsGeneratorFunction(FunctionKind kind)
bool IsConciseMethod(FunctionKind kind)
@ NOT_JS_FUNCTION_STUB_MODE
int ToNumber(Register reg)
const int kStubMinorKeyBits
OStream & operator<<(OStream &os, const BasicBlockProfiler &p)
AllocationSiteOverrideMode
@ LAST_ALLOCATION_SITE_OVERRIDE_MODE
@ DISABLE_ALLOCATION_SITES
const int kStubMajorKeyBits
@ RECORD_CONSTRUCTOR_TARGET
@ STRING_INDEX_IS_ARRAY_INDEX
Debugger support for the V8 JavaScript engine.
static const int kNumRegisters
static Register from_code(int code)
bool is(Register reg) const