Index: src/code-stubs.cc |
diff --git a/src/code-stubs.cc b/src/code-stubs.cc |
index 27712ce73f27be1d69ad8550cfd79a0660c52e70..a90b8853925dab269502a6cf2bfae3f514b1cd5e 100644 |
--- a/src/code-stubs.cc |
+++ b/src/code-stubs.cc |
@@ -3243,6 +3243,24 @@ void GenerateStringEqual(compiler::CodeStubAssembler* assembler, |
} // namespace |
+void LoadApiGetterStub::GenerateAssembly( |
+ compiler::CodeStubAssembler* assembler) const { |
+ typedef compiler::Node Node; |
+ Node* context = assembler->Parameter(3); |
+ Node* receiver = assembler->Parameter(0); |
+ // For now we only support receiver_is_holder. |
+ DCHECK(receiver_is_holder()); |
+ Node* holder = receiver; |
+ Node* map = assembler->LoadMap(receiver); |
+ Node* descriptors = assembler->LoadMapDescriptors(map); |
+ Node* offset = |
+ assembler->Int32Constant(DescriptorArray::ToValueIndex(index())); |
+ Node* callback = |
+ assembler->LoadFixedArrayElementInt32Index(descriptors, offset); |
+ assembler->TailCallStub(CodeFactory::ApiGetter(isolate()), context, receiver, |
+ holder, callback); |
+} |
+ |
void LessThanStub::GenerateAssembly( |
compiler::CodeStubAssembler* assembler) const { |
GenerateAbstractRelationalComparison(assembler, kLessThan); |