Index: src/code-stubs.h |
diff --git a/src/code-stubs.h b/src/code-stubs.h |
index 94d2e2dbacf607cd4b5a743f3d384354d64348c2..a7283ba642ef4ea2742cbba7ed77e9783faf39a1 100644 |
--- a/src/code-stubs.h |
+++ b/src/code-stubs.h |
@@ -90,7 +90,6 @@ namespace internal { |
V(TransitionElementsKind) \ |
V(StoreArrayLiteralElement) \ |
V(StubFailureTrampoline) \ |
- V(StubFailureTailCallTrampoline) \ |
V(ArrayConstructor) \ |
V(InternalArrayConstructor) \ |
V(ProfileEntryHook) \ |
@@ -99,8 +98,7 @@ namespace internal { |
V(CallApiGetter) \ |
/* IC Handler stubs */ \ |
V(LoadField) \ |
- V(KeyedLoadField) \ |
- V(KeyedArrayCall) |
+ V(KeyedLoadField) |
// List of code stubs only used on ARM platforms. |
#if V8_TARGET_ARCH_ARM |
@@ -164,7 +162,6 @@ class CodeStub BASE_EMBEDDED { |
virtual ~CodeStub() {} |
static void GenerateStubsAheadOfTime(Isolate* isolate); |
- static void GenerateStubsRequiringBuiltinsAheadOfTime(Isolate* isolate); |
static void GenerateFPStubs(Isolate* isolate); |
// Some stubs put untagged junk on the stack that cannot be scanned by the |
@@ -275,9 +272,6 @@ class PlatformCodeStub : public CodeStub { |
enum StubFunctionMode { NOT_JS_FUNCTION_STUB_MODE, JS_FUNCTION_STUB_MODE }; |
enum HandlerArgumentsMode { DONT_PASS_ARGUMENTS, PASS_ARGUMENTS }; |
-enum ContinuationType { NORMAL_CONTINUATION, TAIL_CALL_CONTINUATION }; |
- |
- |
struct CodeStubInterfaceDescriptor { |
CodeStubInterfaceDescriptor(); |
int register_param_count_; |
@@ -286,7 +280,6 @@ struct CodeStubInterfaceDescriptor { |
// if hint_stack_parameter_count_ > 0, the code stub can optimize the |
// return sequence. Default value is -1, which means it is ignored. |
int hint_stack_parameter_count_; |
- ContinuationType continuation_type_; |
StubFunctionMode function_mode_; |
Register* register_params_; |
@@ -295,10 +288,6 @@ struct CodeStubInterfaceDescriptor { |
bool initialized() const { return register_param_count_ >= 0; } |
- bool HasTailCallContinuation() const { |
- return continuation_type_ == TAIL_CALL_CONTINUATION; |
- } |
- |
int environment_length() const { |
return register_param_count_; |
} |
@@ -1076,47 +1065,6 @@ class KeyedLoadFieldStub: public LoadFieldStub { |
}; |
-class KeyedArrayCallStub: public HICStub { |
- public: |
- KeyedArrayCallStub(bool holey, int argc) : HICStub(), argc_(argc) { |
- bit_field_ = HoleyBits::encode(holey); |
- } |
- |
- virtual Code::Kind kind() const { return Code::KEYED_CALL_IC; } |
- virtual ExtraICState GetExtraICState() { return bit_field_; } |
- |
- ElementsKind elements_kind() { |
- return HoleyBits::decode(bit_field_) ? FAST_HOLEY_ELEMENTS : FAST_ELEMENTS; |
- } |
- |
- int argc() { return argc_; } |
- virtual int GetStubFlags() { return argc(); } |
- |
- static bool IsHoley(Handle<Code> code) { |
- ExtraICState state = code->extra_ic_state(); |
- return HoleyBits::decode(state); |
- } |
- |
- virtual void InitializeInterfaceDescriptor( |
- Isolate* isolate, |
- CodeStubInterfaceDescriptor* descriptor); |
- |
- virtual Handle<Code> GenerateCode(Isolate* isolate); |
- |
- private: |
- virtual int NotMissMinorKey() { |
- return GetExtraICState() | ArgcBits::encode(argc_); |
- } |
- |
- class HoleyBits: public BitField<bool, 0, 1> {}; |
- STATIC_ASSERT(Code::kArgumentsBits <= kStubMinorKeyBits - 1); |
- class ArgcBits: public BitField<int, 1, Code::kArgumentsBits> {}; |
- virtual CodeStub::Major MajorKey() { return KeyedArrayCall; } |
- int bit_field_; |
- int argc_; |
-}; |
- |
- |
class BinaryOpICStub : public HydrogenCodeStub { |
public: |
BinaryOpICStub(Token::Value op, OverwriteMode mode) |
@@ -1654,8 +1602,8 @@ class CallFunctionStub: public PlatformCodeStub { |
virtual void PrintName(StringStream* stream); |
// Minor key encoding in 32 bits with Bitfield <Type, shift, size>. |
- class FlagBits: public BitField<CallFunctionFlags, 0, 1> {}; |
- class ArgcBits: public BitField<unsigned, 1, 32 - 1> {}; |
+ class FlagBits: public BitField<CallFunctionFlags, 0, 2> {}; |
+ class ArgcBits: public BitField<unsigned, 2, 32 - 2> {}; |
Major MajorKey() { return CallFunction; } |
int MinorKey() { |
@@ -1664,7 +1612,15 @@ class CallFunctionStub: public PlatformCodeStub { |
} |
bool RecordCallTarget() { |
- return (flags_ & RECORD_CALL_TARGET) != 0; |
+ return flags_ == RECORD_CALL_TARGET; |
+ } |
+ |
+ bool CallAsMethod() { |
+ return flags_ == CALL_AS_METHOD || flags_ == WRAP_AND_CALL; |
+ } |
+ |
+ bool NeedsChecks() { |
+ return flags_ != WRAP_AND_CALL; |
} |
}; |
@@ -1690,6 +1646,10 @@ class CallConstructStub: public PlatformCodeStub { |
bool RecordCallTarget() { |
return (flags_ & RECORD_CALL_TARGET) != 0; |
} |
+ |
+ bool CallAsMethod() { |
+ return (flags_ & CALL_AS_METHOD) != 0; |
+ } |
}; |
@@ -2491,25 +2451,6 @@ class StubFailureTrampolineStub : public PlatformCodeStub { |
}; |
-class StubFailureTailCallTrampolineStub : public PlatformCodeStub { |
- public: |
- StubFailureTailCallTrampolineStub() : fp_registers_(CanUseFPRegisters()) {} |
- |
- static void GenerateAheadOfTime(Isolate* isolate); |
- |
- private: |
- class FPRegisters: public BitField<bool, 0, 1> {}; |
- Major MajorKey() { return StubFailureTailCallTrampoline; } |
- int MinorKey() { return FPRegisters::encode(fp_registers_); } |
- |
- void Generate(MacroAssembler* masm); |
- |
- bool fp_registers_; |
- |
- DISALLOW_COPY_AND_ASSIGN(StubFailureTailCallTrampolineStub); |
-}; |
- |
- |
class ProfileEntryHookStub : public PlatformCodeStub { |
public: |
explicit ProfileEntryHookStub() {} |