Commit 74c7fda9 authored by verwaest@chromium.org's avatar verwaest@chromium.org

Remove keyed load "force generic" miss case.

BUG=
R=ishell@chromium.org

Review URL: https://chromiumcodereview.appspot.com/68213024

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17828 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent a957c323
...@@ -827,7 +827,7 @@ void KeyedLoadIC::GenerateNonStrictArguments(MacroAssembler* masm) { ...@@ -827,7 +827,7 @@ void KeyedLoadIC::GenerateNonStrictArguments(MacroAssembler* masm) {
__ mov(r0, r2); __ mov(r0, r2);
__ Ret(); __ Ret();
__ bind(&slow); __ bind(&slow);
GenerateMiss(masm, MISS); GenerateMiss(masm);
} }
...@@ -887,7 +887,7 @@ void KeyedCallIC::GenerateNonStrictArguments(MacroAssembler* masm, ...@@ -887,7 +887,7 @@ void KeyedCallIC::GenerateNonStrictArguments(MacroAssembler* masm,
} }
void KeyedLoadIC::GenerateMiss(MacroAssembler* masm, ICMissMode miss_mode) { void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) {
// ---------- S t a t e -------------- // ---------- S t a t e --------------
// -- lr : return address // -- lr : return address
// -- r0 : key // -- r0 : key
...@@ -900,9 +900,8 @@ void KeyedLoadIC::GenerateMiss(MacroAssembler* masm, ICMissMode miss_mode) { ...@@ -900,9 +900,8 @@ void KeyedLoadIC::GenerateMiss(MacroAssembler* masm, ICMissMode miss_mode) {
__ Push(r1, r0); __ Push(r1, r0);
// Perform tail call to the entry. // Perform tail call to the entry.
ExternalReference ref = miss_mode == MISS_FORCE_GENERIC ExternalReference ref =
? ExternalReference(IC_Utility(kKeyedLoadIC_MissForceGeneric), isolate) ExternalReference(IC_Utility(kKeyedLoadIC_Miss), isolate);
: ExternalReference(IC_Utility(kKeyedLoadIC_Miss), isolate);
__ TailCallExternalReference(ref, 2, 1); __ TailCallExternalReference(ref, 2, 1);
} }
...@@ -1120,7 +1119,7 @@ void KeyedLoadIC::GenerateString(MacroAssembler* masm) { ...@@ -1120,7 +1119,7 @@ void KeyedLoadIC::GenerateString(MacroAssembler* masm) {
char_at_generator.GenerateSlow(masm, call_helper); char_at_generator.GenerateSlow(masm, call_helper);
__ bind(&miss); __ bind(&miss);
GenerateMiss(masm, MISS); GenerateMiss(masm);
} }
...@@ -1160,7 +1159,7 @@ void KeyedLoadIC::GenerateIndexedInterceptor(MacroAssembler* masm) { ...@@ -1160,7 +1159,7 @@ void KeyedLoadIC::GenerateIndexedInterceptor(MacroAssembler* masm) {
1); 1);
__ bind(&slow); __ bind(&slow);
GenerateMiss(masm, MISS); GenerateMiss(masm);
} }
......
...@@ -3140,12 +3140,12 @@ void KeyedLoadStubCompiler::GenerateLoadDictionaryElement( ...@@ -3140,12 +3140,12 @@ void KeyedLoadStubCompiler::GenerateLoadDictionaryElement(
// -- r0 : key // -- r0 : key
// -- r1 : receiver // -- r1 : receiver
// ----------------------------------- // -----------------------------------
Label slow, miss_force_generic; Label slow, miss;
Register key = r0; Register key = r0;
Register receiver = r1; Register receiver = r1;
__ UntagAndJumpIfNotSmi(r2, key, &miss_force_generic); __ UntagAndJumpIfNotSmi(r2, key, &miss);
__ ldr(r4, FieldMemOperand(receiver, JSObject::kElementsOffset)); __ ldr(r4, FieldMemOperand(receiver, JSObject::kElementsOffset));
__ LoadFromNumberDictionary(&slow, r4, key, r0, r2, r3, r5); __ LoadFromNumberDictionary(&slow, r4, key, r0, r2, r3, r5);
__ Ret(); __ Ret();
...@@ -3163,14 +3163,14 @@ void KeyedLoadStubCompiler::GenerateLoadDictionaryElement( ...@@ -3163,14 +3163,14 @@ void KeyedLoadStubCompiler::GenerateLoadDictionaryElement(
TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Slow); TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Slow);
// Miss case, call the runtime. // Miss case, call the runtime.
__ bind(&miss_force_generic); __ bind(&miss);
// ---------- S t a t e -------------- // ---------- S t a t e --------------
// -- lr : return address // -- lr : return address
// -- r0 : key // -- r0 : key
// -- r1 : receiver // -- r1 : receiver
// ----------------------------------- // -----------------------------------
TailCallBuiltin(masm, Builtins::kKeyedLoadIC_MissForceGeneric); TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Miss);
} }
......
...@@ -1351,12 +1351,7 @@ static void Generate_KeyedLoadIC_Slow(MacroAssembler* masm) { ...@@ -1351,12 +1351,7 @@ static void Generate_KeyedLoadIC_Slow(MacroAssembler* masm) {
static void Generate_KeyedLoadIC_Miss(MacroAssembler* masm) { static void Generate_KeyedLoadIC_Miss(MacroAssembler* masm) {
KeyedLoadIC::GenerateMiss(masm, MISS); KeyedLoadIC::GenerateMiss(masm);
}
static void Generate_KeyedLoadIC_MissForceGeneric(MacroAssembler* masm) {
KeyedLoadIC::GenerateMiss(masm, MISS_FORCE_GENERIC);
} }
......
...@@ -119,8 +119,6 @@ enum BuiltinExtraArguments { ...@@ -119,8 +119,6 @@ enum BuiltinExtraArguments {
Code::kNoExtraICState) \ Code::kNoExtraICState) \
V(KeyedLoadIC_Miss, BUILTIN, UNINITIALIZED, \ V(KeyedLoadIC_Miss, BUILTIN, UNINITIALIZED, \
Code::kNoExtraICState) \ Code::kNoExtraICState) \
V(KeyedLoadIC_MissForceGeneric, BUILTIN, UNINITIALIZED, \
Code::kNoExtraICState) \
V(StoreIC_Miss, BUILTIN, UNINITIALIZED, \ V(StoreIC_Miss, BUILTIN, UNINITIALIZED, \
Code::kNoExtraICState) \ Code::kNoExtraICState) \
V(KeyedStoreIC_Miss, BUILTIN, UNINITIALIZED, \ V(KeyedStoreIC_Miss, BUILTIN, UNINITIALIZED, \
......
...@@ -611,7 +611,7 @@ void KeyedLoadIC::GenerateString(MacroAssembler* masm) { ...@@ -611,7 +611,7 @@ void KeyedLoadIC::GenerateString(MacroAssembler* masm) {
char_at_generator.GenerateSlow(masm, call_helper); char_at_generator.GenerateSlow(masm, call_helper);
__ bind(&miss); __ bind(&miss);
GenerateMiss(masm, MISS); GenerateMiss(masm);
} }
...@@ -653,7 +653,7 @@ void KeyedLoadIC::GenerateIndexedInterceptor(MacroAssembler* masm) { ...@@ -653,7 +653,7 @@ void KeyedLoadIC::GenerateIndexedInterceptor(MacroAssembler* masm) {
__ TailCallExternalReference(ref, 2, 1); __ TailCallExternalReference(ref, 2, 1);
__ bind(&slow); __ bind(&slow);
GenerateMiss(masm, MISS); GenerateMiss(masm);
} }
...@@ -678,7 +678,7 @@ void KeyedLoadIC::GenerateNonStrictArguments(MacroAssembler* masm) { ...@@ -678,7 +678,7 @@ void KeyedLoadIC::GenerateNonStrictArguments(MacroAssembler* masm) {
__ mov(eax, unmapped_location); __ mov(eax, unmapped_location);
__ Ret(); __ Ret();
__ bind(&slow); __ bind(&slow);
GenerateMiss(masm, MISS); GenerateMiss(masm);
} }
...@@ -1396,7 +1396,7 @@ void LoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) { ...@@ -1396,7 +1396,7 @@ void LoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) {
} }
void KeyedLoadIC::GenerateMiss(MacroAssembler* masm, ICMissMode miss_mode) { void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) {
// ----------- S t a t e ------------- // ----------- S t a t e -------------
// -- ecx : key // -- ecx : key
// -- edx : receiver // -- edx : receiver
...@@ -1411,10 +1411,8 @@ void KeyedLoadIC::GenerateMiss(MacroAssembler* masm, ICMissMode miss_mode) { ...@@ -1411,10 +1411,8 @@ void KeyedLoadIC::GenerateMiss(MacroAssembler* masm, ICMissMode miss_mode) {
__ push(ebx); // return address __ push(ebx); // return address
// Perform tail call to the entry. // Perform tail call to the entry.
ExternalReference ref = miss_mode == MISS_FORCE_GENERIC ExternalReference ref =
? ExternalReference(IC_Utility(kKeyedLoadIC_MissForceGeneric), ExternalReference(IC_Utility(kKeyedLoadIC_Miss), masm->isolate());
masm->isolate())
: ExternalReference(IC_Utility(kKeyedLoadIC_Miss), masm->isolate());
__ TailCallExternalReference(ref, 2, 1); __ TailCallExternalReference(ref, 2, 1);
} }
......
...@@ -3211,11 +3211,11 @@ void KeyedLoadStubCompiler::GenerateLoadDictionaryElement( ...@@ -3211,11 +3211,11 @@ void KeyedLoadStubCompiler::GenerateLoadDictionaryElement(
// -- edx : receiver // -- edx : receiver
// -- esp[0] : return address // -- esp[0] : return address
// ----------------------------------- // -----------------------------------
Label slow, miss_force_generic; Label slow, miss;
// This stub is meant to be tail-jumped to, the receiver must already // This stub is meant to be tail-jumped to, the receiver must already
// have been verified by the caller to not be a smi. // have been verified by the caller to not be a smi.
__ JumpIfNotSmi(ecx, &miss_force_generic); __ JumpIfNotSmi(ecx, &miss);
__ mov(ebx, ecx); __ mov(ebx, ecx);
__ SmiUntag(ebx); __ SmiUntag(ebx);
__ mov(eax, FieldOperand(edx, JSObject::kElementsOffset)); __ mov(eax, FieldOperand(edx, JSObject::kElementsOffset));
...@@ -3238,13 +3238,13 @@ void KeyedLoadStubCompiler::GenerateLoadDictionaryElement( ...@@ -3238,13 +3238,13 @@ void KeyedLoadStubCompiler::GenerateLoadDictionaryElement(
// ----------------------------------- // -----------------------------------
TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Slow); TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Slow);
__ bind(&miss_force_generic); __ bind(&miss);
// ----------- S t a t e ------------- // ----------- S t a t e -------------
// -- ecx : key // -- ecx : key
// -- edx : receiver // -- edx : receiver
// -- esp[0] : return address // -- esp[0] : return address
// ----------------------------------- // -----------------------------------
TailCallBuiltin(masm, Builtins::kKeyedLoadIC_MissForceGeneric); TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Miss);
} }
......
...@@ -1364,13 +1364,6 @@ Handle<Code> KeyedLoadIC::LoadElementStub(Handle<JSObject> receiver) { ...@@ -1364,13 +1364,6 @@ Handle<Code> KeyedLoadIC::LoadElementStub(Handle<JSObject> receiver) {
} }
MaybeObject* KeyedLoadIC::LoadForceGeneric(Handle<Object> object,
Handle<Object> key) {
set_target(*generic_stub());
return Runtime::GetObjectPropertyOrFail(isolate(), object, key);
}
MaybeObject* KeyedLoadIC::Load(Handle<Object> object, Handle<Object> key) { MaybeObject* KeyedLoadIC::Load(Handle<Object> object, Handle<Object> key) {
if (MigrateDeprecated(object)) { if (MigrateDeprecated(object)) {
return Runtime::GetObjectPropertyOrFail(isolate(), object, key); return Runtime::GetObjectPropertyOrFail(isolate(), object, key);
...@@ -2119,17 +2112,6 @@ RUNTIME_FUNCTION(MaybeObject*, KeyedLoadIC_MissFromStubFailure) { ...@@ -2119,17 +2112,6 @@ RUNTIME_FUNCTION(MaybeObject*, KeyedLoadIC_MissFromStubFailure) {
} }
RUNTIME_FUNCTION(MaybeObject*, KeyedLoadIC_MissForceGeneric) {
HandleScope scope(isolate);
ASSERT(args.length() == 2);
KeyedLoadIC ic(IC::NO_EXTRA_FRAME, isolate);
Handle<Object> receiver = args.at<Object>(0);
Handle<Object> key = args.at<Object>(1);
ic.UpdateState(receiver, key);
return ic.LoadForceGeneric(receiver, key);
}
// Used from ic-<arch>.cc. // Used from ic-<arch>.cc.
RUNTIME_FUNCTION(MaybeObject*, StoreIC_Miss) { RUNTIME_FUNCTION(MaybeObject*, StoreIC_Miss) {
HandleScope scope(isolate); HandleScope scope(isolate);
......
...@@ -40,7 +40,6 @@ namespace internal { ...@@ -40,7 +40,6 @@ namespace internal {
#define IC_UTIL_LIST(ICU) \ #define IC_UTIL_LIST(ICU) \
ICU(LoadIC_Miss) \ ICU(LoadIC_Miss) \
ICU(KeyedLoadIC_Miss) \ ICU(KeyedLoadIC_Miss) \
ICU(KeyedLoadIC_MissForceGeneric) \
ICU(CallIC_Miss) \ ICU(CallIC_Miss) \
ICU(KeyedCallIC_Miss) \ ICU(KeyedCallIC_Miss) \
ICU(StoreIC_Miss) \ ICU(StoreIC_Miss) \
...@@ -469,12 +468,6 @@ class LoadIC: public IC { ...@@ -469,12 +468,6 @@ class LoadIC: public IC {
}; };
enum ICMissMode {
MISS_FORCE_GENERIC,
MISS
};
class KeyedLoadIC: public LoadIC { class KeyedLoadIC: public LoadIC {
public: public:
explicit KeyedLoadIC(FrameDepth depth, Isolate* isolate) explicit KeyedLoadIC(FrameDepth depth, Isolate* isolate)
...@@ -482,20 +475,15 @@ class KeyedLoadIC: public LoadIC { ...@@ -482,20 +475,15 @@ class KeyedLoadIC: public LoadIC {
ASSERT(target()->is_keyed_load_stub()); ASSERT(target()->is_keyed_load_stub());
} }
MUST_USE_RESULT MaybeObject* LoadForceGeneric(Handle<Object> object,
Handle<Object> key);
MUST_USE_RESULT MaybeObject* Load(Handle<Object> object, MUST_USE_RESULT MaybeObject* Load(Handle<Object> object,
Handle<Object> key); Handle<Object> key);
// Code generator routines. // Code generator routines.
static void GenerateMiss(MacroAssembler* masm, ICMissMode force_generic); static void GenerateMiss(MacroAssembler* masm);
static void GenerateRuntimeGetProperty(MacroAssembler* masm); static void GenerateRuntimeGetProperty(MacroAssembler* masm);
static void GenerateInitialize(MacroAssembler* masm) { static void GenerateInitialize(MacroAssembler* masm) { GenerateMiss(masm); }
GenerateMiss(masm, MISS);
}
static void GeneratePreMonomorphic(MacroAssembler* masm) { static void GeneratePreMonomorphic(MacroAssembler* masm) {
GenerateMiss(masm, MISS); GenerateMiss(masm);
} }
static void GenerateGeneric(MacroAssembler* masm); static void GenerateGeneric(MacroAssembler* masm);
static void GenerateString(MacroAssembler* masm); static void GenerateString(MacroAssembler* masm);
......
...@@ -826,7 +826,7 @@ void KeyedLoadIC::GenerateNonStrictArguments(MacroAssembler* masm) { ...@@ -826,7 +826,7 @@ void KeyedLoadIC::GenerateNonStrictArguments(MacroAssembler* masm) {
__ Ret(USE_DELAY_SLOT); __ Ret(USE_DELAY_SLOT);
__ mov(v0, a2); __ mov(v0, a2);
__ bind(&slow); __ bind(&slow);
GenerateMiss(masm, MISS); GenerateMiss(masm);
} }
...@@ -891,7 +891,7 @@ void KeyedCallIC::GenerateNonStrictArguments(MacroAssembler* masm, ...@@ -891,7 +891,7 @@ void KeyedCallIC::GenerateNonStrictArguments(MacroAssembler* masm,
} }
void KeyedLoadIC::GenerateMiss(MacroAssembler* masm, ICMissMode miss_mode) { void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) {
// ---------- S t a t e -------------- // ---------- S t a t e --------------
// -- ra : return address // -- ra : return address
// -- a0 : key // -- a0 : key
...@@ -904,9 +904,8 @@ void KeyedLoadIC::GenerateMiss(MacroAssembler* masm, ICMissMode miss_mode) { ...@@ -904,9 +904,8 @@ void KeyedLoadIC::GenerateMiss(MacroAssembler* masm, ICMissMode miss_mode) {
__ Push(a1, a0); __ Push(a1, a0);
// Perform tail call to the entry. // Perform tail call to the entry.
ExternalReference ref = miss_mode == MISS_FORCE_GENERIC ExternalReference ref =
? ExternalReference(IC_Utility(kKeyedLoadIC_MissForceGeneric), isolate) ExternalReference(IC_Utility(kKeyedLoadIC_Miss), isolate);
: ExternalReference(IC_Utility(kKeyedLoadIC_Miss), isolate);
__ TailCallExternalReference(ref, 2, 1); __ TailCallExternalReference(ref, 2, 1);
} }
...@@ -1131,7 +1130,7 @@ void KeyedLoadIC::GenerateString(MacroAssembler* masm) { ...@@ -1131,7 +1130,7 @@ void KeyedLoadIC::GenerateString(MacroAssembler* masm) {
char_at_generator.GenerateSlow(masm, call_helper); char_at_generator.GenerateSlow(masm, call_helper);
__ bind(&miss); __ bind(&miss);
GenerateMiss(masm, MISS); GenerateMiss(masm);
} }
...@@ -1453,7 +1452,7 @@ void KeyedLoadIC::GenerateIndexedInterceptor(MacroAssembler* masm) { ...@@ -1453,7 +1452,7 @@ void KeyedLoadIC::GenerateIndexedInterceptor(MacroAssembler* masm) {
IC_Utility(kKeyedLoadPropertyWithInterceptor), masm->isolate()), 2, 1); IC_Utility(kKeyedLoadPropertyWithInterceptor), masm->isolate()), 2, 1);
__ bind(&slow); __ bind(&slow);
GenerateMiss(masm, MISS); GenerateMiss(masm);
} }
......
...@@ -3149,12 +3149,12 @@ void KeyedLoadStubCompiler::GenerateLoadDictionaryElement( ...@@ -3149,12 +3149,12 @@ void KeyedLoadStubCompiler::GenerateLoadDictionaryElement(
// -- a0 : key // -- a0 : key
// -- a1 : receiver // -- a1 : receiver
// ----------------------------------- // -----------------------------------
Label slow, miss_force_generic; Label slow, miss;
Register key = a0; Register key = a0;
Register receiver = a1; Register receiver = a1;
__ JumpIfNotSmi(key, &miss_force_generic); __ JumpIfNotSmi(key, &miss);
__ lw(t0, FieldMemOperand(receiver, JSObject::kElementsOffset)); __ lw(t0, FieldMemOperand(receiver, JSObject::kElementsOffset));
__ sra(a2, a0, kSmiTagSize); __ sra(a2, a0, kSmiTagSize);
__ LoadFromNumberDictionary(&slow, t0, a0, v0, a2, a3, t1); __ LoadFromNumberDictionary(&slow, t0, a0, v0, a2, a3, t1);
...@@ -3174,14 +3174,14 @@ void KeyedLoadStubCompiler::GenerateLoadDictionaryElement( ...@@ -3174,14 +3174,14 @@ void KeyedLoadStubCompiler::GenerateLoadDictionaryElement(
TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Slow); TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Slow);
// Miss case, call the runtime. // Miss case, call the runtime.
__ bind(&miss_force_generic); __ bind(&miss);
// ---------- S t a t e -------------- // ---------- S t a t e --------------
// -- ra : return address // -- ra : return address
// -- a0 : key // -- a0 : key
// -- a1 : receiver // -- a1 : receiver
// ----------------------------------- // -----------------------------------
TailCallBuiltin(masm, Builtins::kKeyedLoadIC_MissForceGeneric); TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Miss);
} }
......
...@@ -540,7 +540,7 @@ void KeyedLoadIC::GenerateString(MacroAssembler* masm) { ...@@ -540,7 +540,7 @@ void KeyedLoadIC::GenerateString(MacroAssembler* masm) {
char_at_generator.GenerateSlow(masm, call_helper); char_at_generator.GenerateSlow(masm, call_helper);
__ bind(&miss); __ bind(&miss);
GenerateMiss(masm, MISS); GenerateMiss(masm);
} }
...@@ -583,7 +583,7 @@ void KeyedLoadIC::GenerateIndexedInterceptor(MacroAssembler* masm) { ...@@ -583,7 +583,7 @@ void KeyedLoadIC::GenerateIndexedInterceptor(MacroAssembler* masm) {
1); 1);
__ bind(&slow); __ bind(&slow);
GenerateMiss(masm, MISS); GenerateMiss(masm);
} }
...@@ -1271,7 +1271,7 @@ void KeyedLoadIC::GenerateNonStrictArguments(MacroAssembler* masm) { ...@@ -1271,7 +1271,7 @@ void KeyedLoadIC::GenerateNonStrictArguments(MacroAssembler* masm) {
__ movq(rax, unmapped_location); __ movq(rax, unmapped_location);
__ Ret(); __ Ret();
__ bind(&slow); __ bind(&slow);
GenerateMiss(masm, MISS); GenerateMiss(masm);
} }
...@@ -1423,7 +1423,7 @@ void LoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) { ...@@ -1423,7 +1423,7 @@ void LoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) {
} }
void KeyedLoadIC::GenerateMiss(MacroAssembler* masm, ICMissMode miss_mode) { void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) {
// ----------- S t a t e ------------- // ----------- S t a t e -------------
// -- rax : key // -- rax : key
// -- rdx : receiver // -- rdx : receiver
...@@ -1439,10 +1439,8 @@ void KeyedLoadIC::GenerateMiss(MacroAssembler* masm, ICMissMode miss_mode) { ...@@ -1439,10 +1439,8 @@ void KeyedLoadIC::GenerateMiss(MacroAssembler* masm, ICMissMode miss_mode) {
__ PushReturnAddressFrom(rbx); __ PushReturnAddressFrom(rbx);
// Perform tail call to the entry. // Perform tail call to the entry.
ExternalReference ref = miss_mode == MISS_FORCE_GENERIC ExternalReference ref =
? ExternalReference(IC_Utility(kKeyedLoadIC_MissForceGeneric), ExternalReference(IC_Utility(kKeyedLoadIC_Miss), masm->isolate());
masm->isolate())
: ExternalReference(IC_Utility(kKeyedLoadIC_Miss), masm->isolate());
__ TailCallExternalReference(ref, 2, 1); __ TailCallExternalReference(ref, 2, 1);
} }
......
...@@ -3124,12 +3124,12 @@ void KeyedLoadStubCompiler::GenerateLoadDictionaryElement( ...@@ -3124,12 +3124,12 @@ void KeyedLoadStubCompiler::GenerateLoadDictionaryElement(
// -- rdx : receiver // -- rdx : receiver
// -- rsp[0] : return address // -- rsp[0] : return address
// ----------------------------------- // -----------------------------------
Label slow, miss_force_generic; Label slow, miss;
// This stub is meant to be tail-jumped to, the receiver must already // This stub is meant to be tail-jumped to, the receiver must already
// have been verified by the caller to not be a smi. // have been verified by the caller to not be a smi.
__ JumpIfNotSmi(rax, &miss_force_generic); __ JumpIfNotSmi(rax, &miss);
__ SmiToInteger32(rbx, rax); __ SmiToInteger32(rbx, rax);
__ movq(rcx, FieldOperand(rdx, JSObject::kElementsOffset)); __ movq(rcx, FieldOperand(rdx, JSObject::kElementsOffset));
...@@ -3149,13 +3149,13 @@ void KeyedLoadStubCompiler::GenerateLoadDictionaryElement( ...@@ -3149,13 +3149,13 @@ void KeyedLoadStubCompiler::GenerateLoadDictionaryElement(
// ----------------------------------- // -----------------------------------
TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Slow); TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Slow);
__ bind(&miss_force_generic); __ bind(&miss);
// ----------- S t a t e ------------- // ----------- S t a t e -------------
// -- rax : key // -- rax : key
// -- rdx : receiver // -- rdx : receiver
// -- rsp[0] : return address // -- rsp[0] : return address
// ----------------------------------- // -----------------------------------
TailCallBuiltin(masm, Builtins::kKeyedLoadIC_MissForceGeneric); TailCallBuiltin(masm, Builtins::kKeyedLoadIC_Miss);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment