| Index: src/a64/ic-a64.cc
|
| diff --git a/src/a64/ic-a64.cc b/src/a64/ic-a64.cc
|
| index 93d7857b050527004e4a672dac1392421796397b..18677f79d7ff42f0a5dc883065519099a01383be 100644
|
| --- a/src/a64/ic-a64.cc
|
| +++ b/src/a64/ic-a64.cc
|
| @@ -369,7 +369,7 @@ static MemOperand GenerateMappedArgumentsLookup(MacroAssembler* masm,
|
| __ Tbnz(key, kXSignBit, slow_case);
|
|
|
| // Load the elements object and check its map.
|
| - Handle<Map> arguments_map(heap->non_strict_arguments_elements_map());
|
| + Handle<Map> arguments_map(heap->sloppy_arguments_elements_map());
|
| __ Ldr(map, FieldMemOperand(object, JSObject::kElementsOffset));
|
| __ CheckMap(map, scratch1, arguments_map, slow_case, DONT_DO_SMI_CHECK);
|
|
|
| @@ -474,12 +474,8 @@ void LoadIC::GenerateMiss(MacroAssembler* masm) {
|
|
|
| __ IncrementCounter(isolate->counters()->load_miss(), 1, x3, x4);
|
|
|
| - // TODO(jbramley): Does the target actually expect an argument in x3, or is
|
| - // this inherited from ARM's push semantics?
|
| - __ Mov(x3, x0);
|
| - __ Push(x3, x2);
|
| -
|
| // Perform tail call to the entry.
|
| + __ Push(x0, x2);
|
| ExternalReference ref =
|
| ExternalReference(IC_Utility(kLoadIC_Miss), isolate);
|
| __ TailCallExternalReference(ref, 2, 1);
|
| @@ -493,16 +489,12 @@ void LoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) {
|
| // -- x0 : receiver
|
| // -----------------------------------
|
|
|
| - // TODO(jbramley): Does the target actually expect an argument in x3, or is
|
| - // this inherited from ARM's push semantics?
|
| - __ Mov(x3, x0);
|
| - __ Push(x3, x2);
|
| -
|
| + __ Push(x0, x2);
|
| __ TailCallRuntime(Runtime::kGetProperty, 2, 1);
|
| }
|
|
|
|
|
| -void KeyedLoadIC::GenerateNonStrictArguments(MacroAssembler* masm) {
|
| +void KeyedLoadIC::GenerateSloppyArguments(MacroAssembler* masm) {
|
| // ---------- S t a t e --------------
|
| // -- lr : return address
|
| // -- x0 : key
|
| @@ -534,8 +526,8 @@ void KeyedLoadIC::GenerateNonStrictArguments(MacroAssembler* masm) {
|
| }
|
|
|
|
|
| -void KeyedStoreIC::GenerateNonStrictArguments(MacroAssembler* masm) {
|
| - ASM_LOCATION("KeyedStoreIC::GenerateNonStrictArguments");
|
| +void KeyedStoreIC::GenerateSloppyArguments(MacroAssembler* masm) {
|
| + ASM_LOCATION("KeyedStoreIC::GenerateSloppyArguments");
|
| // ---------- S t a t e --------------
|
| // -- lr : return address
|
| // -- x0 : value
|
| @@ -930,7 +922,7 @@ void KeyedStoreIC::GenerateSlow(MacroAssembler* masm) {
|
|
|
|
|
| void KeyedStoreIC::GenerateRuntimeSetProperty(MacroAssembler* masm,
|
| - StrictModeFlag strict_mode) {
|
| + StrictMode strict_mode) {
|
| ASM_LOCATION("KeyedStoreIC::GenerateRuntimeSetProperty");
|
| // ---------- S t a t e --------------
|
| // -- x0 : value
|
| @@ -985,8 +977,6 @@ static void KeyedStoreGenerateGenericHelper(
|
| // We have to go to the runtime if the current value is the hole because there
|
| // may be a callback on the element.
|
| Label holecheck_passed;
|
| - // TODO(all): This address calculation is repeated later (for the store
|
| - // itself). We should keep the result to avoid doing the work twice.
|
| __ Add(x10, elements, FixedArray::kHeaderSize - kHeapObjectTag);
|
| __ Add(x10, x10, Operand::UntagSmiAndScale(key, kPointerSizeLog2));
|
| __ Ldr(x11, MemOperand(x10));
|
| @@ -1039,8 +1029,6 @@ static void KeyedStoreGenerateGenericHelper(
|
| // HOLECHECK: guards "A[i] double hole?"
|
| // We have to see if the double version of the hole is present. If so go to
|
| // the runtime.
|
| - // TODO(all): This address calculation was done earlier. We should keep the
|
| - // result to avoid doing the work twice.
|
| __ Add(x10, elements, FixedDoubleArray::kHeaderSize - kHeapObjectTag);
|
| __ Add(x10, x10, Operand::UntagSmiAndScale(key, kPointerSizeLog2));
|
| __ Ldr(x11, MemOperand(x10));
|
| @@ -1074,6 +1062,7 @@ static void KeyedStoreGenerateGenericHelper(
|
| FAST_DOUBLE_ELEMENTS,
|
| receiver_map,
|
| x10,
|
| + x11,
|
| slow);
|
| ASSERT(receiver_map.Is(x3)); // Transition code expects map in x3.
|
| AllocationSiteMode mode = AllocationSite::GetMode(FAST_SMI_ELEMENTS,
|
| @@ -1088,6 +1077,7 @@ static void KeyedStoreGenerateGenericHelper(
|
| FAST_ELEMENTS,
|
| receiver_map,
|
| x10,
|
| + x11,
|
| slow);
|
| ASSERT(receiver_map.Is(x3)); // Transition code expects map in x3.
|
| mode = AllocationSite::GetMode(FAST_SMI_ELEMENTS, FAST_ELEMENTS);
|
| @@ -1104,6 +1094,7 @@ static void KeyedStoreGenerateGenericHelper(
|
| FAST_ELEMENTS,
|
| receiver_map,
|
| x10,
|
| + x11,
|
| slow);
|
| ASSERT(receiver_map.Is(x3)); // Transition code expects map in x3.
|
| mode = AllocationSite::GetMode(FAST_DOUBLE_ELEMENTS, FAST_ELEMENTS);
|
| @@ -1114,7 +1105,7 @@ static void KeyedStoreGenerateGenericHelper(
|
|
|
|
|
| void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm,
|
| - StrictModeFlag strict_mode) {
|
| + StrictMode strict_mode) {
|
| ASM_LOCATION("KeyedStoreIC::GenerateGeneric");
|
| // ---------- S t a t e --------------
|
| // -- x0 : value
|
| @@ -1280,7 +1271,7 @@ void StoreIC::GenerateNormal(MacroAssembler* masm) {
|
|
|
|
|
| void StoreIC::GenerateRuntimeSetProperty(MacroAssembler* masm,
|
| - StrictModeFlag strict_mode) {
|
| + StrictMode strict_mode) {
|
| ASM_LOCATION("StoreIC::GenerateRuntimeSetProperty");
|
| // ----------- S t a t e -------------
|
| // -- x0 : value
|
|
|