Index: src/ic/handler-compiler.cc |
diff --git a/src/ic/handler-compiler.cc b/src/ic/handler-compiler.cc |
index 2eff81f6b5fcf4fc594aed5c750e2b5cc8f87ceb..5717afda17d076e3ff03e2256c96502637a79665 100644 |
--- a/src/ic/handler-compiler.cc |
+++ b/src/ic/handler-compiler.cc |
@@ -358,6 +358,18 @@ |
return GetCode(kind(), it->name()); |
} |
+void NamedLoadHandlerCompiler::GenerateLoadCallback( |
+ Register reg, Handle<AccessorInfo> callback) { |
+ DCHECK(receiver().is(ApiGetterDescriptor::ReceiverRegister())); |
+ __ Move(ApiGetterDescriptor::HolderRegister(), reg); |
+ // The callback is alive if this instruction is executed, |
+ // so the weak cell is not cleared and points to data. |
+ Handle<WeakCell> cell = isolate()->factory()->NewWeakCell(callback); |
+ __ GetWeakValue(ApiGetterDescriptor::CallbackRegister(), cell); |
+ |
+ CallApiGetterStub stub(isolate()); |
+ __ TailCallStub(&stub); |
+} |
void NamedLoadHandlerCompiler::GenerateLoadPostInterceptor( |
LookupIterator* it, Register interceptor_reg) { |