| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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_ARM_MACRO_ASSEMBLER_ARM_H_ | 5 #ifndef V8_ARM_MACRO_ASSEMBLER_ARM_H_ |
| 6 #define V8_ARM_MACRO_ASSEMBLER_ARM_H_ | 6 #define V8_ARM_MACRO_ASSEMBLER_ARM_H_ |
| 7 | 7 |
| 8 #include "src/assembler.h" | 8 #include "src/assembler.h" |
| 9 #include "src/bailout-reason.h" | 9 #include "src/bailout-reason.h" |
| 10 #include "src/frames.h" | 10 #include "src/frames.h" |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 Condition cond = al); | 157 Condition cond = al); |
| 158 void Bfc(Register dst, Register src, int lsb, int width, Condition cond = al); | 158 void Bfc(Register dst, Register src, int lsb, int width, Condition cond = al); |
| 159 void Usat(Register dst, int satpos, const Operand& src, | 159 void Usat(Register dst, int satpos, const Operand& src, |
| 160 Condition cond = al); | 160 Condition cond = al); |
| 161 | 161 |
| 162 void Call(Label* target); | 162 void Call(Label* target); |
| 163 void Push(Register src) { push(src); } | 163 void Push(Register src) { push(src); } |
| 164 void Pop(Register dst) { pop(dst); } | 164 void Pop(Register dst) { pop(dst); } |
| 165 | 165 |
| 166 // Register move. May do nothing if the registers are identical. | 166 // Register move. May do nothing if the registers are identical. |
| 167 void Move(Register dst, Smi* smi) { mov(dst, Operand(smi)); } |
| 167 void Move(Register dst, Handle<Object> value); | 168 void Move(Register dst, Handle<Object> value); |
| 168 void Move(Register dst, Register src, Condition cond = al); | 169 void Move(Register dst, Register src, Condition cond = al); |
| 169 void Move(Register dst, const Operand& src, SBit sbit = LeaveCC, | 170 void Move(Register dst, const Operand& src, SBit sbit = LeaveCC, |
| 170 Condition cond = al) { | 171 Condition cond = al) { |
| 171 if (!src.is_reg() || !src.rm().is(dst) || sbit != LeaveCC) { | 172 if (!src.is_reg() || !src.rm().is(dst) || sbit != LeaveCC) { |
| 172 mov(dst, src, sbit, cond); | 173 mov(dst, src, sbit, cond); |
| 173 } | 174 } |
| 174 } | 175 } |
| 175 void Move(DwVfpRegister dst, DwVfpRegister src); | 176 void Move(DwVfpRegister dst, DwVfpRegister src); |
| 176 | 177 |
| (...skipping 1145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1322 // HeapNumber utilities | 1323 // HeapNumber utilities |
| 1323 | 1324 |
| 1324 void JumpIfNotHeapNumber(Register object, | 1325 void JumpIfNotHeapNumber(Register object, |
| 1325 Register heap_number_map, | 1326 Register heap_number_map, |
| 1326 Register scratch, | 1327 Register scratch, |
| 1327 Label* on_not_heap_number); | 1328 Label* on_not_heap_number); |
| 1328 | 1329 |
| 1329 // --------------------------------------------------------------------------- | 1330 // --------------------------------------------------------------------------- |
| 1330 // String utilities | 1331 // String utilities |
| 1331 | 1332 |
| 1332 // Generate code to do a lookup in the number string cache. If the number in | |
| 1333 // the register object is found in the cache the generated code falls through | |
| 1334 // with the result in the result register. The object and the result register | |
| 1335 // can be the same. If the number is not found in the cache the code jumps to | |
| 1336 // the label not_found with only the content of register object unchanged. | |
| 1337 void LookupNumberStringCache(Register object, | |
| 1338 Register result, | |
| 1339 Register scratch1, | |
| 1340 Register scratch2, | |
| 1341 Register scratch3, | |
| 1342 Label* not_found); | |
| 1343 | |
| 1344 // Checks if both objects are sequential one-byte strings and jumps to label | 1333 // Checks if both objects are sequential one-byte strings and jumps to label |
| 1345 // if either is not. Assumes that neither object is a smi. | 1334 // if either is not. Assumes that neither object is a smi. |
| 1346 void JumpIfNonSmisNotBothSequentialOneByteStrings(Register object1, | 1335 void JumpIfNonSmisNotBothSequentialOneByteStrings(Register object1, |
| 1347 Register object2, | 1336 Register object2, |
| 1348 Register scratch1, | 1337 Register scratch1, |
| 1349 Register scratch2, | 1338 Register scratch2, |
| 1350 Label* failure); | 1339 Label* failure); |
| 1351 | 1340 |
| 1352 // Checks if both objects are sequential one-byte strings and jumps to label | 1341 // Checks if both objects are sequential one-byte strings and jumps to label |
| 1353 // if either is not. | 1342 // if either is not. |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1568 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) | 1557 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) |
| 1569 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> | 1558 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> |
| 1570 #else | 1559 #else |
| 1571 #define ACCESS_MASM(masm) masm-> | 1560 #define ACCESS_MASM(masm) masm-> |
| 1572 #endif | 1561 #endif |
| 1573 | 1562 |
| 1574 | 1563 |
| 1575 } } // namespace v8::internal | 1564 } } // namespace v8::internal |
| 1576 | 1565 |
| 1577 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ | 1566 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ |
| OLD | NEW |