OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/arm64/lithium-codegen-arm64.h" | 7 #include "src/arm64/lithium-codegen-arm64.h" |
8 #include "src/arm64/lithium-gap-resolver-arm64.h" | 8 #include "src/arm64/lithium-gap-resolver-arm64.h" |
9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" |
10 #include "src/code-factory.h" | 10 #include "src/code-factory.h" |
(...skipping 725 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
736 | 736 |
737 int parameter_offset = StandardFrameConstants::kCallerSPOffset + | 737 int parameter_offset = StandardFrameConstants::kCallerSPOffset + |
738 (num_parameters - 1 - i) * kPointerSize; | 738 (num_parameters - 1 - i) * kPointerSize; |
739 // Load parameter from stack. | 739 // Load parameter from stack. |
740 __ Ldr(value, MemOperand(fp, parameter_offset)); | 740 __ Ldr(value, MemOperand(fp, parameter_offset)); |
741 // Store it in the context. | 741 // Store it in the context. |
742 MemOperand target = ContextMemOperand(cp, var->index()); | 742 MemOperand target = ContextMemOperand(cp, var->index()); |
743 __ Str(value, target); | 743 __ Str(value, target); |
744 // Update the write barrier. This clobbers value and scratch. | 744 // Update the write barrier. This clobbers value and scratch. |
745 if (need_write_barrier) { | 745 if (need_write_barrier) { |
746 __ RecordWriteContextSlot(cp, target.offset(), value, scratch, | 746 __ RecordWriteContextSlot(cp, static_cast<int>(target.offset()), |
747 GetLinkRegisterState(), kSaveFPRegs); | 747 value, scratch, GetLinkRegisterState(), |
| 748 kSaveFPRegs); |
748 } else if (FLAG_debug_code) { | 749 } else if (FLAG_debug_code) { |
749 Label done; | 750 Label done; |
750 __ JumpIfInNewSpace(cp, &done); | 751 __ JumpIfInNewSpace(cp, &done); |
751 __ Abort(kExpectedNewSpaceObject); | 752 __ Abort(kExpectedNewSpaceObject); |
752 __ bind(&done); | 753 __ bind(&done); |
753 } | 754 } |
754 } | 755 } |
755 } | 756 } |
756 Comment(";;; End allocate local context"); | 757 Comment(";;; End allocate local context"); |
757 } | 758 } |
(...skipping 4373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5131 } else { | 5132 } else { |
5132 __ JumpIfNotRoot(scratch, Heap::kTheHoleValueRootIndex, &skip_assignment); | 5133 __ JumpIfNotRoot(scratch, Heap::kTheHoleValueRootIndex, &skip_assignment); |
5133 } | 5134 } |
5134 } | 5135 } |
5135 | 5136 |
5136 __ Str(value, target); | 5137 __ Str(value, target); |
5137 if (instr->hydrogen()->NeedsWriteBarrier()) { | 5138 if (instr->hydrogen()->NeedsWriteBarrier()) { |
5138 SmiCheck check_needed = | 5139 SmiCheck check_needed = |
5139 instr->hydrogen()->value()->type().IsHeapObject() | 5140 instr->hydrogen()->value()->type().IsHeapObject() |
5140 ? OMIT_SMI_CHECK : INLINE_SMI_CHECK; | 5141 ? OMIT_SMI_CHECK : INLINE_SMI_CHECK; |
5141 __ RecordWriteContextSlot(context, | 5142 __ RecordWriteContextSlot(context, static_cast<int>(target.offset()), value, |
5142 target.offset(), | 5143 scratch, GetLinkRegisterState(), kSaveFPRegs, |
5143 value, | 5144 EMIT_REMEMBERED_SET, check_needed); |
5144 scratch, | |
5145 GetLinkRegisterState(), | |
5146 kSaveFPRegs, | |
5147 EMIT_REMEMBERED_SET, | |
5148 check_needed); | |
5149 } | 5145 } |
5150 __ Bind(&skip_assignment); | 5146 __ Bind(&skip_assignment); |
5151 } | 5147 } |
5152 | 5148 |
5153 | 5149 |
5154 void LCodeGen::DoStoreKeyedExternal(LStoreKeyedExternal* instr) { | 5150 void LCodeGen::DoStoreKeyedExternal(LStoreKeyedExternal* instr) { |
5155 Register ext_ptr = ToRegister(instr->elements()); | 5151 Register ext_ptr = ToRegister(instr->elements()); |
5156 Register key = no_reg; | 5152 Register key = no_reg; |
5157 Register scratch; | 5153 Register scratch; |
5158 ElementsKind elements_kind = instr->elements_kind(); | 5154 ElementsKind elements_kind = instr->elements_kind(); |
(...skipping 976 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6135 Handle<ScopeInfo> scope_info = instr->scope_info(); | 6131 Handle<ScopeInfo> scope_info = instr->scope_info(); |
6136 __ Push(scope_info); | 6132 __ Push(scope_info); |
6137 __ Push(ToRegister(instr->function())); | 6133 __ Push(ToRegister(instr->function())); |
6138 CallRuntime(Runtime::kPushBlockContext, 2, instr); | 6134 CallRuntime(Runtime::kPushBlockContext, 2, instr); |
6139 RecordSafepoint(Safepoint::kNoLazyDeopt); | 6135 RecordSafepoint(Safepoint::kNoLazyDeopt); |
6140 } | 6136 } |
6141 | 6137 |
6142 | 6138 |
6143 | 6139 |
6144 } } // namespace v8::internal | 6140 } } // namespace v8::internal |
OLD | NEW |