Merge V8 5.2.361.47 DO NOT MERGE
https://chromium.googlesource.com/v8/v8/+/5.2.361.47
FPIIM-449
Change-Id: Ibec421b85a9b88cb3a432ada642e469fe7e78346
(cherry picked from commit bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8)
diff --git a/src/fast-accessor-assembler.cc b/src/fast-accessor-assembler.cc
index cd2910c..1fbe1a8 100644
--- a/src/fast-accessor-assembler.cc
+++ b/src/fast-accessor-assembler.cc
@@ -5,12 +5,12 @@
#include "src/fast-accessor-assembler.h"
#include "src/base/logging.h"
+#include "src/code-stub-assembler.h"
#include "src/code-stubs.h" // For CallApiCallbackStub.
-#include "src/compiler/code-stub-assembler.h"
#include "src/handles-inl.h"
#include "src/objects.h" // For FAA::LoadInternalField impl.
-using v8::internal::compiler::CodeStubAssembler;
+using v8::internal::CodeStubAssembler;
using v8::internal::compiler::Node;
namespace v8 {
@@ -56,12 +56,13 @@
CodeStubAssembler::Variable result(assembler_.get(),
MachineRepresentation::kTagged);
CodeStubAssembler::Label is_jsobject(assembler_.get());
+ CodeStubAssembler::Label maybe_api_object(assembler_.get());
CodeStubAssembler::Label is_not_jsobject(assembler_.get());
CodeStubAssembler::Label merge(assembler_.get(), &result);
assembler_->Branch(
assembler_->WordEqual(
instance_type, assembler_->IntPtrConstant(Internals::kJSObjectType)),
- &is_jsobject, &is_not_jsobject);
+ &is_jsobject, &maybe_api_object);
// JSObject? Then load the internal field field_no.
assembler_->Bind(&is_jsobject);
@@ -71,6 +72,12 @@
result.Bind(internal_field);
assembler_->Goto(&merge);
+ assembler_->Bind(&maybe_api_object);
+ assembler_->Branch(
+ assembler_->WordEqual(instance_type, assembler_->IntPtrConstant(
+ Internals::kJSApiObjectType)),
+ &is_jsobject, &is_not_jsobject);
+
// No JSObject? Return undefined.
// TODO(vogelheim): Check whether this is the appropriate action, or whether
// the method should take a label instead.