Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Side by Side Diff: src/arm64/debug-arm64.cc

Issue 311133003: ARM64: Add and use SmiTagAndPush. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | src/arm64/full-codegen-arm64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #if V8_TARGET_ARCH_ARM64 7 #if V8_TARGET_ARCH_ARM64
8 8
9 #include "src/codegen.h" 9 #include "src/codegen.h"
10 #include "src/debug.h" 10 #include "src/debug.h"
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 ASSERT((scratch.Bit() & object_regs) == 0); 150 ASSERT((scratch.Bit() & object_regs) == 0);
151 ASSERT((scratch.Bit() & non_object_regs) == 0); 151 ASSERT((scratch.Bit() & non_object_regs) == 0);
152 ASSERT((masm->TmpList()->list() & (object_regs | non_object_regs)) == 0); 152 ASSERT((masm->TmpList()->list() & (object_regs | non_object_regs)) == 0);
153 STATIC_ASSERT(kSmiValueSize == 32); 153 STATIC_ASSERT(kSmiValueSize == 32);
154 154
155 CPURegList non_object_list = 155 CPURegList non_object_list =
156 CPURegList(CPURegister::kRegister, kXRegSizeInBits, non_object_regs); 156 CPURegList(CPURegister::kRegister, kXRegSizeInBits, non_object_regs);
157 while (!non_object_list.IsEmpty()) { 157 while (!non_object_list.IsEmpty()) {
158 // Store each non-object register as two SMIs. 158 // Store each non-object register as two SMIs.
159 Register reg = Register(non_object_list.PopLowestIndex()); 159 Register reg = Register(non_object_list.PopLowestIndex());
160 __ Push(reg); 160 __ Lsr(scratch, reg, 32);
161 __ Poke(wzr, 0); 161 __ SmiTagAndPush(scratch, reg);
162 __ Push(reg.W(), wzr); 162
163 // Stack: 163 // Stack:
164 // jssp[12]: reg[63:32] 164 // jssp[12]: reg[63:32]
165 // jssp[8]: 0x00000000 (SMI tag & padding) 165 // jssp[8]: 0x00000000 (SMI tag & padding)
166 // jssp[4]: reg[31:0] 166 // jssp[4]: reg[31:0]
167 // jssp[0]: 0x00000000 (SMI tag & padding) 167 // jssp[0]: 0x00000000 (SMI tag & padding)
168 STATIC_ASSERT((kSmiTag == 0) && (kSmiShift == 32)); 168 STATIC_ASSERT((kSmiTag == 0) && (kSmiShift == 32));
169 } 169 }
170 170
171 if (object_regs != 0) { 171 if (object_regs != 0) {
172 __ PushXRegList(object_regs); 172 __ PushXRegList(object_regs);
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 void DebugCodegen::GenerateFrameDropperLiveEdit(MacroAssembler* masm) { 348 void DebugCodegen::GenerateFrameDropperLiveEdit(MacroAssembler* masm) {
349 masm->Abort(kLiveEditFrameDroppingIsNotSupportedOnARM64); 349 masm->Abort(kLiveEditFrameDroppingIsNotSupportedOnARM64);
350 } 350 }
351 351
352 352
353 const bool LiveEdit::kFrameDropperSupported = false; 353 const bool LiveEdit::kFrameDropperSupported = false;
354 354
355 } } // namespace v8::internal 355 } } // namespace v8::internal
356 356
357 #endif // V8_TARGET_ARCH_ARM64 357 #endif // V8_TARGET_ARCH_ARM64
OLDNEW
« no previous file with comments | « no previous file | src/arm64/full-codegen-arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698