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

Side by Side Diff: src/arm64/macro-assembler-arm64-inl.h

Issue 378503003: ARM64: Use UntagSmi helpers and clean up assertions. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Replace one '32' with 'kWRegSizeInBits'. Created 6 years, 5 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 | « src/arm64/lithium-codegen-arm64.cc ('k') | no next file » | 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 #ifndef V8_ARM64_MACRO_ASSEMBLER_ARM64_INL_H_ 5 #ifndef V8_ARM64_MACRO_ASSEMBLER_ARM64_INL_H_
6 #define V8_ARM64_MACRO_ASSEMBLER_ARM64_INL_H_ 6 #define V8_ARM64_MACRO_ASSEMBLER_ARM64_INL_H_
7 7
8 #include <ctype.h> 8 #include <ctype.h>
9 9
10 #include "src/globals.h" 10 #include "src/globals.h"
(...skipping 1286 matching lines...) Expand 10 before | Expand all | Expand 10 after
1297 1297
1298 1298
1299 void MacroAssembler::InitializeRootRegister() { 1299 void MacroAssembler::InitializeRootRegister() {
1300 ExternalReference roots_array_start = 1300 ExternalReference roots_array_start =
1301 ExternalReference::roots_array_start(isolate()); 1301 ExternalReference::roots_array_start(isolate());
1302 Mov(root, Operand(roots_array_start)); 1302 Mov(root, Operand(roots_array_start));
1303 } 1303 }
1304 1304
1305 1305
1306 void MacroAssembler::SmiTag(Register dst, Register src) { 1306 void MacroAssembler::SmiTag(Register dst, Register src) {
1307 STATIC_ASSERT(kSmiValueSize + kSmiShift == kXRegSizeInBits);
1307 ASSERT(dst.Is64Bits() && src.Is64Bits()); 1308 ASSERT(dst.Is64Bits() && src.Is64Bits());
1308 Lsl(dst, src, kSmiShift); 1309 Lsl(dst, src, kSmiShift);
1309 } 1310 }
1310 1311
1311 1312
1312 void MacroAssembler::SmiTag(Register smi) { SmiTag(smi, smi); } 1313 void MacroAssembler::SmiTag(Register smi) { SmiTag(smi, smi); }
1313 1314
1314 1315
1315 void MacroAssembler::SmiUntag(Register dst, Register src) { 1316 void MacroAssembler::SmiUntag(Register dst, Register src) {
1317 STATIC_ASSERT(kSmiValueSize + kSmiShift == kXRegSizeInBits);
1316 ASSERT(dst.Is64Bits() && src.Is64Bits()); 1318 ASSERT(dst.Is64Bits() && src.Is64Bits());
1317 if (FLAG_enable_slow_asserts) { 1319 if (FLAG_enable_slow_asserts) {
1318 AssertSmi(src); 1320 AssertSmi(src);
1319 } 1321 }
1320 Asr(dst, src, kSmiShift); 1322 Asr(dst, src, kSmiShift);
1321 } 1323 }
1322 1324
1323 1325
1324 void MacroAssembler::SmiUntag(Register smi) { SmiUntag(smi, smi); } 1326 void MacroAssembler::SmiUntag(Register smi) { SmiUntag(smi, smi); }
1325 1327
(...skipping 14 matching lines...) Expand all
1340 UntagMode mode) { 1342 UntagMode mode) {
1341 ASSERT(dst.Is32Bits() && src.Is64Bits()); 1343 ASSERT(dst.Is32Bits() && src.Is64Bits());
1342 if (FLAG_enable_slow_asserts && (mode == kNotSpeculativeUntag)) { 1344 if (FLAG_enable_slow_asserts && (mode == kNotSpeculativeUntag)) {
1343 AssertSmi(src); 1345 AssertSmi(src);
1344 } 1346 }
1345 Scvtf(dst, src, kSmiShift); 1347 Scvtf(dst, src, kSmiShift);
1346 } 1348 }
1347 1349
1348 1350
1349 void MacroAssembler::SmiTagAndPush(Register src) { 1351 void MacroAssembler::SmiTagAndPush(Register src) {
1350 STATIC_ASSERT((kSmiShift == 32) && (kSmiTag == 0)); 1352 STATIC_ASSERT((kSmiShift == kWRegSizeInBits) &&
1353 (kSmiValueSize == kWRegSizeInBits) &&
1354 (kSmiTag == 0));
1351 Push(src.W(), wzr); 1355 Push(src.W(), wzr);
1352 } 1356 }
1353 1357
1354 1358
1355 void MacroAssembler::SmiTagAndPush(Register src1, Register src2) { 1359 void MacroAssembler::SmiTagAndPush(Register src1, Register src2) {
1356 STATIC_ASSERT((kSmiShift == 32) && (kSmiTag == 0)); 1360 STATIC_ASSERT((kSmiShift == kWRegSizeInBits) &&
1361 (kSmiValueSize == kWRegSizeInBits) &&
1362 (kSmiTag == 0));
1357 Push(src1.W(), wzr, src2.W(), wzr); 1363 Push(src1.W(), wzr, src2.W(), wzr);
1358 } 1364 }
1359 1365
1360 1366
1361 void MacroAssembler::JumpIfSmi(Register value, 1367 void MacroAssembler::JumpIfSmi(Register value,
1362 Label* smi_label, 1368 Label* smi_label,
1363 Label* not_smi_label) { 1369 Label* not_smi_label) {
1364 STATIC_ASSERT((kSmiTagSize == 1) && (kSmiTag == 0)); 1370 STATIC_ASSERT((kSmiTagSize == 1) && (kSmiTag == 0));
1365 // Check if the tag bit is set. 1371 // Check if the tag bit is set.
1366 if (smi_label) { 1372 if (smi_label) {
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after
1697 // characters are reserved for controlling features of the instrumentation. 1703 // characters are reserved for controlling features of the instrumentation.
1698 ASSERT(isprint(marker_name[0]) && isprint(marker_name[1])); 1704 ASSERT(isprint(marker_name[0]) && isprint(marker_name[1]));
1699 1705
1700 InstructionAccurateScope scope(this, 1); 1706 InstructionAccurateScope scope(this, 1);
1701 movn(xzr, (marker_name[1] << 8) | marker_name[0]); 1707 movn(xzr, (marker_name[1] << 8) | marker_name[0]);
1702 } 1708 }
1703 1709
1704 } } // namespace v8::internal 1710 } } // namespace v8::internal
1705 1711
1706 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_INL_H_ 1712 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_INL_H_
OLDNEW
« no previous file with comments | « src/arm64/lithium-codegen-arm64.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698