Index: src/code-stub-assembler.cc |
diff --git a/src/code-stub-assembler.cc b/src/code-stub-assembler.cc |
index 5fc710df1184a76ab0f86081896a899a3ab5bc13..e523e11cd44c882b2170bf3def93b9f74556c26d 100644 |
--- a/src/code-stub-assembler.cc |
+++ b/src/code-stub-assembler.cc |
@@ -5600,8 +5600,17 @@ void CodeStubAssembler::HandleLoadICHandlerCase( |
CSA_ASSERT(UintPtrLessThan( |
descriptor, LoadAndUntagFixedArrayBaseLength(descriptors))); |
#endif |
- Return( |
- LoadFixedArrayElement(descriptors, descriptor, 0, INTPTR_PARAMETERS)); |
+ Node* value = |
+ LoadFixedArrayElement(descriptors, descriptor, 0, INTPTR_PARAMETERS); |
+ |
+ Label if_accessor_info(this); |
+ GotoIf(IsSetWord<LoadHandler::IsAccessorInfoBits>(handler_word), |
+ &if_accessor_info); |
+ Return(value); |
+ |
+ Bind(&if_accessor_info); |
+ Callable callable = CodeFactory::ApiGetter(isolate()); |
+ TailCallStub(callable, p->context, p->receiver, holder, value); |
} |
} |