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/ic/x64/handler-compiler-x64.cc b/src/ic/x64/handler-compiler-x64.cc
index dde6169..21d96ea 100644
--- a/src/ic/x64/handler-compiler-x64.cc
+++ b/src/ic/x64/handler-compiler-x64.cc
@@ -597,58 +597,6 @@
}
}
-
-void NamedLoadHandlerCompiler::GenerateLoadCallback(
- Register reg, Handle<AccessorInfo> callback) {
- DCHECK(!AreAliased(kScratchRegister, scratch2(), scratch3(), receiver()));
- DCHECK(!AreAliased(kScratchRegister, scratch2(), scratch3(), reg));
-
- // Insert additional parameters into the stack frame above return address.
- __ PopReturnAddressTo(scratch3());
-
- // Build v8::PropertyCallbackInfo::args_ array on the stack and push property
- // name below the exit frame to make GC aware of them.
- STATIC_ASSERT(PropertyCallbackArguments::kShouldThrowOnErrorIndex == 0);
- STATIC_ASSERT(PropertyCallbackArguments::kHolderIndex == 1);
- STATIC_ASSERT(PropertyCallbackArguments::kIsolateIndex == 2);
- STATIC_ASSERT(PropertyCallbackArguments::kReturnValueDefaultValueIndex == 3);
- STATIC_ASSERT(PropertyCallbackArguments::kReturnValueOffset == 4);
- STATIC_ASSERT(PropertyCallbackArguments::kDataIndex == 5);
- STATIC_ASSERT(PropertyCallbackArguments::kThisIndex == 6);
- STATIC_ASSERT(PropertyCallbackArguments::kArgsLength == 7);
-
- __ Push(receiver()); // receiver
- Handle<Object> data(callback->data(), isolate());
- if (data->IsUndefined() || data->IsSmi()) {
- __ Push(data);
- } else {
- Handle<WeakCell> cell =
- isolate()->factory()->NewWeakCell(Handle<HeapObject>::cast(data));
- // The callback is alive if this instruction is executed,
- // so the weak cell is not cleared and points to data.
- __ GetWeakValue(scratch2(), cell);
- __ Push(scratch2());
- }
- __ LoadRoot(kScratchRegister, Heap::kUndefinedValueRootIndex);
- __ Push(kScratchRegister); // return value
- __ Push(kScratchRegister); // return value default
- __ PushAddress(ExternalReference::isolate_address(isolate()));
- __ Push(reg); // holder
- __ Push(Smi::FromInt(0)); // should_throw_on_error -> false
-
- __ Push(name()); // name
- __ PushReturnAddressFrom(scratch3());
-
- // Abi for CallApiGetter
- Register api_function_address = ApiGetterDescriptor::function_address();
- Address getter_address = v8::ToCData<Address>(callback->getter());
- __ Move(api_function_address, getter_address, RelocInfo::EXTERNAL_REFERENCE);
-
- CallApiGetterStub stub(isolate());
- __ TailCallStub(&stub);
-}
-
-
void NamedLoadHandlerCompiler::GenerateLoadConstant(Handle<Object> value) {
// Return the constant value.
__ Move(rax, value);
@@ -756,7 +704,7 @@
__ TailCallRuntime(Runtime::kStoreCallbackProperty);
// Return the generated code.
- return GetCode(kind(), Code::FAST, name);
+ return GetCode(kind(), name);
}
@@ -798,7 +746,7 @@
FrontendFooter(name, &miss);
// Return the generated code.
- return GetCode(kind(), Code::NORMAL, name);
+ return GetCode(kind(), name);
}
diff --git a/src/ic/x64/ic-x64.cc b/src/ic/x64/ic-x64.cc
index 247116d..4e9927d 100644
--- a/src/ic/x64/ic-x64.cc
+++ b/src/ic/x64/ic-x64.cc
@@ -340,8 +340,8 @@
__ Move(vector, dummy_vector);
__ Move(slot, Smi::FromInt(slot_index));
- Code::Flags flags = Code::RemoveTypeAndHolderFromFlags(
- Code::ComputeHandlerFlags(Code::LOAD_IC));
+ Code::Flags flags =
+ Code::RemoveHolderFromFlags(Code::ComputeHandlerFlags(Code::LOAD_IC));
masm->isolate()->stub_cache()->GenerateProbe(masm, Code::KEYED_LOAD_IC, flags,
receiver, key,
megamorphic_scratch, no_reg);
@@ -519,10 +519,10 @@
__ JumpIfSmi(receiver, &slow_with_tagged_index);
// Get the map from the receiver.
__ movp(r9, FieldOperand(receiver, HeapObject::kMapOffset));
- // Check that the receiver does not require access checks and is not observed.
- // The generic stub does not perform map checks or handle observed objects.
+ // Check that the receiver does not require access checks.
+ // The generic stub does not perform map checks.
__ testb(FieldOperand(r9, Map::kBitFieldOffset),
- Immediate(1 << Map::kIsAccessCheckNeeded | 1 << Map::kIsObserved));
+ Immediate(1 << Map::kIsAccessCheckNeeded));
__ j(not_zero, &slow_with_tagged_index);
// Check that the key is a smi.
__ JumpIfNotSmi(key, &maybe_name_key);
@@ -567,10 +567,10 @@
__ Move(vector, dummy_vector);
__ Move(slot, Smi::FromInt(slot_index));
- Code::Flags flags = Code::RemoveTypeAndHolderFromFlags(
- Code::ComputeHandlerFlags(Code::STORE_IC));
- masm->isolate()->stub_cache()->GenerateProbe(masm, Code::STORE_IC, flags,
- receiver, key, r9, no_reg);
+ Code::Flags flags =
+ Code::RemoveHolderFromFlags(Code::ComputeHandlerFlags(Code::STORE_IC));
+ masm->isolate()->stub_cache()->GenerateProbe(
+ masm, Code::KEYED_STORE_IC, flags, receiver, key, r9, no_reg);
// Cache miss.
__ jmp(&miss);
diff --git a/src/ic/x64/stub-cache-x64.cc b/src/ic/x64/stub-cache-x64.cc
index 9a9dfe9..a65165b 100644
--- a/src/ic/x64/stub-cache-x64.cc
+++ b/src/ic/x64/stub-cache-x64.cc
@@ -14,10 +14,9 @@
#define __ ACCESS_MASM(masm)
-
static void ProbeTable(Isolate* isolate, MacroAssembler* masm,
- Code::Kind ic_kind, Code::Flags flags,
- StubCache::Table table, Register receiver, Register name,
+ Code::Flags flags, StubCache::Table table,
+ Register receiver, Register name,
// The offset is scaled by 4, based on
// kCacheIndexShift, which is two bits
Register offset) {
@@ -93,9 +92,6 @@
// entry size being 3 * kPointerSize.
DCHECK(sizeof(Entry) == 3 * kPointerSize);
- // Make sure the flags do not name a specific type.
- DCHECK(Code::ExtractTypeFromFlags(flags) == 0);
-
// Make sure that there are no register conflicts.
DCHECK(!scratch.is(receiver));
DCHECK(!scratch.is(name));
@@ -139,7 +135,7 @@
__ andp(scratch, Immediate((kPrimaryTableSize - 1) << kCacheIndexShift));
// Probe the primary table.
- ProbeTable(isolate, masm, ic_kind, flags, kPrimary, receiver, name, scratch);
+ ProbeTable(isolate, masm, flags, kPrimary, receiver, name, scratch);
// Primary miss: Compute hash for secondary probe.
__ movl(scratch, FieldOperand(name, Name::kHashFieldOffset));
@@ -151,8 +147,7 @@
__ andp(scratch, Immediate((kSecondaryTableSize - 1) << kCacheIndexShift));
// Probe the secondary table.
- ProbeTable(isolate, masm, ic_kind, flags, kSecondary, receiver, name,
- scratch);
+ ProbeTable(isolate, masm, flags, kSecondary, receiver, name, scratch);
// Cache miss: Fall-through and let caller handle the miss by
// entering the runtime system.