| 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 |