| 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 590 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 601   // remove in a register (or no_reg, if there is nothing to remove). | 601   // remove in a register (or no_reg, if there is nothing to remove). | 
| 602   void LeaveExitFrame(bool save_doubles, Register argument_count, | 602   void LeaveExitFrame(bool save_doubles, Register argument_count, | 
| 603                       bool restore_context, | 603                       bool restore_context, | 
| 604                       bool argument_count_is_length = false); | 604                       bool argument_count_is_length = false); | 
| 605 | 605 | 
| 606   // Get the actual activation frame alignment for target environment. | 606   // Get the actual activation frame alignment for target environment. | 
| 607   static int ActivationFrameAlignment(); | 607   static int ActivationFrameAlignment(); | 
| 608 | 608 | 
| 609   void LoadContext(Register dst, int context_chain_length); | 609   void LoadContext(Register dst, int context_chain_length); | 
| 610 | 610 | 
| 611   // Load the global proxy from the current context. |  | 
| 612   void LoadGlobalProxy(Register dst); |  | 
| 613 |  | 
| 614   // Conditionally load the cached Array transitioned map of type | 611   // Conditionally load the cached Array transitioned map of type | 
| 615   // transitioned_kind from the native context if the map in register | 612   // transitioned_kind from the native context if the map in register | 
| 616   // map_in_out is the cached Array map in the native context of | 613   // map_in_out is the cached Array map in the native context of | 
| 617   // expected_kind. | 614   // expected_kind. | 
| 618   void LoadTransitionedArrayMapConditional( | 615   void LoadTransitionedArrayMapConditional( | 
| 619       ElementsKind expected_kind, | 616       ElementsKind expected_kind, | 
| 620       ElementsKind transitioned_kind, | 617       ElementsKind transitioned_kind, | 
| 621       Register map_in_out, | 618       Register map_in_out, | 
| 622       Register scratch, | 619       Register scratch, | 
| 623       Label* no_map_match); | 620       Label* no_map_match); | 
| (...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 943 | 940 | 
| 944   void GetWeakValue(Register value, Handle<WeakCell> cell); | 941   void GetWeakValue(Register value, Handle<WeakCell> cell); | 
| 945 | 942 | 
| 946   // Load the value of the weak cell in the value register. Branch to the given | 943   // Load the value of the weak cell in the value register. Branch to the given | 
| 947   // miss label if the weak cell was cleared. | 944   // miss label if the weak cell was cleared. | 
| 948   void LoadWeakValue(Register value, Handle<WeakCell> cell, Label* miss); | 945   void LoadWeakValue(Register value, Handle<WeakCell> cell, Label* miss); | 
| 949 | 946 | 
| 950   // Compare the object in a register to a value from the root list. | 947   // Compare the object in a register to a value from the root list. | 
| 951   // Uses the ip register as scratch. | 948   // Uses the ip register as scratch. | 
| 952   void CompareRoot(Register obj, Heap::RootListIndex index); | 949   void CompareRoot(Register obj, Heap::RootListIndex index); | 
| 953   void PushRoot(Heap::RootListIndex index) { |  | 
| 954     LoadRoot(ip, index); |  | 
| 955     Push(ip); |  | 
| 956   } |  | 
| 957 | 950 | 
| 958   // Compare the object in a register to a value and jump if they are equal. |  | 
| 959   void JumpIfRoot(Register with, Heap::RootListIndex index, Label* if_equal) { |  | 
| 960     CompareRoot(with, index); |  | 
| 961     b(eq, if_equal); |  | 
| 962   } |  | 
| 963 |  | 
| 964   // Compare the object in a register to a value and jump if they are not equal. |  | 
| 965   void JumpIfNotRoot(Register with, Heap::RootListIndex index, |  | 
| 966                      Label* if_not_equal) { |  | 
| 967     CompareRoot(with, index); |  | 
| 968     b(ne, if_not_equal); |  | 
| 969   } |  | 
| 970 | 951 | 
| 971   // Load and check the instance type of an object for being a string. | 952   // Load and check the instance type of an object for being a string. | 
| 972   // Loads the type into the second argument register. | 953   // Loads the type into the second argument register. | 
| 973   // Returns a condition that will be enabled if the object was a string | 954   // Returns a condition that will be enabled if the object was a string | 
| 974   // and the passed-in condition passed. If the passed-in condition failed | 955   // and the passed-in condition passed. If the passed-in condition failed | 
| 975   // then flags remain unchanged. | 956   // then flags remain unchanged. | 
| 976   Condition IsObjectStringType(Register obj, | 957   Condition IsObjectStringType(Register obj, | 
| 977                                Register type, | 958                                Register type, | 
| 978                                Condition cond = al) { | 959                                Condition cond = al) { | 
| 979     ldr(type, FieldMemOperand(obj, HeapObject::kMapOffset), cond); | 960     ldr(type, FieldMemOperand(obj, HeapObject::kMapOffset), cond); | 
| (...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1300   // Abort execution if argument is a smi, enabled via --debug-code. | 1281   // Abort execution if argument is a smi, enabled via --debug-code. | 
| 1301   void AssertNotSmi(Register object); | 1282   void AssertNotSmi(Register object); | 
| 1302   void AssertSmi(Register object); | 1283   void AssertSmi(Register object); | 
| 1303 | 1284 | 
| 1304   // Abort execution if argument is not a string, enabled via --debug-code. | 1285   // Abort execution if argument is not a string, enabled via --debug-code. | 
| 1305   void AssertString(Register object); | 1286   void AssertString(Register object); | 
| 1306 | 1287 | 
| 1307   // Abort execution if argument is not a name, enabled via --debug-code. | 1288   // Abort execution if argument is not a name, enabled via --debug-code. | 
| 1308   void AssertName(Register object); | 1289   void AssertName(Register object); | 
| 1309 | 1290 | 
| 1310   // Abort execution if argument is not a JSFunction, enabled via --debug-code. |  | 
| 1311   void AssertFunction(Register object); |  | 
| 1312 |  | 
| 1313   // Abort execution if argument is not undefined or an AllocationSite, enabled | 1291   // Abort execution if argument is not undefined or an AllocationSite, enabled | 
| 1314   // via --debug-code. | 1292   // via --debug-code. | 
| 1315   void AssertUndefinedOrAllocationSite(Register object, Register scratch); | 1293   void AssertUndefinedOrAllocationSite(Register object, Register scratch); | 
| 1316 | 1294 | 
| 1317   // Abort execution if reg is not the root value with the given index, | 1295   // Abort execution if reg is not the root value with the given index, | 
| 1318   // enabled via --debug-code. | 1296   // enabled via --debug-code. | 
| 1319   void AssertIsRoot(Register reg, Heap::RootListIndex index); | 1297   void AssertIsRoot(Register reg, Heap::RootListIndex index); | 
| 1320 | 1298 | 
| 1321   // --------------------------------------------------------------------------- | 1299   // --------------------------------------------------------------------------- | 
| 1322   // HeapNumber utilities | 1300   // HeapNumber utilities | 
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1568 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) | 1546 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) | 
| 1569 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> | 1547 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> | 
| 1570 #else | 1548 #else | 
| 1571 #define ACCESS_MASM(masm) masm-> | 1549 #define ACCESS_MASM(masm) masm-> | 
| 1572 #endif | 1550 #endif | 
| 1573 | 1551 | 
| 1574 | 1552 | 
| 1575 } }  // namespace v8::internal | 1553 } }  // namespace v8::internal | 
| 1576 | 1554 | 
| 1577 #endif  // V8_ARM_MACRO_ASSEMBLER_ARM_H_ | 1555 #endif  // V8_ARM_MACRO_ASSEMBLER_ARM_H_ | 
| OLD | NEW | 
|---|