Index: src/x64/stub-cache-x64.cc |
diff --git a/src/x64/stub-cache-x64.cc b/src/x64/stub-cache-x64.cc |
index 7d7f5ebaa346cf430120ca411b062fc5bfa7b52c..091c826ccc4eb77a36a2852a9101681b6230dea7 100644 |
--- a/src/x64/stub-cache-x64.cc |
+++ b/src/x64/stub-cache-x64.cc |
@@ -1144,6 +1144,36 @@ Object* LoadStubCompiler::CompileLoadGlobal(JSObject* object, |
} |
+Object* KeyedLoadStubCompiler::CompileLoadCallback(String* name, |
+ JSObject* receiver, |
+ JSObject* holder, |
+ AccessorInfo* callback) { |
+ // ----------- S t a t e ------------- |
+ // -- rsp[0] : return address |
+ // -- rsp[8] : name |
+ // -- rsp[16] : receiver |
+ // ----------------------------------- |
+ Label miss; |
+ |
+ __ movq(rax, Operand(rsp, kPointerSize)); |
+ __ movq(rcx, Operand(rsp, 2 * kPointerSize)); |
+ __ IncrementCounter(&Counters::keyed_load_callback, 1); |
+ |
+ // Check that the name has not changed. |
+ __ Cmp(rax, Handle<String>(name)); |
+ __ j(not_equal, &miss); |
+ |
+ GenerateLoadCallback(receiver, holder, rcx, rax, rbx, rdx, |
+ callback, name, &miss); |
+ __ bind(&miss); |
+ __ DecrementCounter(&Counters::keyed_load_callback, 1); |
+ GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC); |
+ |
+ // Return the generated code. |
+ return GetCode(CALLBACKS, name); |
+} |
+ |
+ |
Object* KeyedLoadStubCompiler::CompileLoadArrayLength(String* name) { |
// ----------- S t a t e ------------- |
// -- rsp[0] : return address |
@@ -1170,15 +1200,6 @@ Object* KeyedLoadStubCompiler::CompileLoadArrayLength(String* name) { |
} |
-Object* KeyedLoadStubCompiler::CompileLoadCallback(String* name, |
- JSObject* object, |
- JSObject* holder, |
- AccessorInfo* callback) { |
- UNIMPLEMENTED(); |
- return NULL; |
-} |
- |
- |
Object* KeyedLoadStubCompiler::CompileLoadConstant(String* name, |
JSObject* receiver, |
JSObject* holder, |