| 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 #ifndef V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ | 5 #ifndef V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ |
| 6 #define V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ | 6 #define V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ |
| 7 | 7 |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "src/arm64/assembler-arm64.h" | 10 #include "src/arm64/assembler-arm64.h" |
| (...skipping 1558 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1569 Label* fall_through); | 1569 Label* fall_through); |
| 1570 | 1570 |
| 1571 // Test the bits of register defined by bit_pattern, and branch to | 1571 // Test the bits of register defined by bit_pattern, and branch to |
| 1572 // if_any_set, if_all_clear or fall_through accordingly. | 1572 // if_any_set, if_all_clear or fall_through accordingly. |
| 1573 void TestAndSplit(const Register& reg, | 1573 void TestAndSplit(const Register& reg, |
| 1574 uint64_t bit_pattern, | 1574 uint64_t bit_pattern, |
| 1575 Label* if_all_clear, | 1575 Label* if_all_clear, |
| 1576 Label* if_any_set, | 1576 Label* if_any_set, |
| 1577 Label* fall_through); | 1577 Label* fall_through); |
| 1578 | 1578 |
| 1579 // Check if a map for a JSObject indicates that the object has fast elements. | |
| 1580 // Jump to the specified label if it does not. | |
| 1581 void CheckFastElements(Register map, Register scratch, Label* fail); | |
| 1582 | |
| 1583 // Check if a map for a JSObject indicates that the object can have both smi | 1579 // Check if a map for a JSObject indicates that the object can have both smi |
| 1584 // and HeapObject elements. Jump to the specified label if it does not. | 1580 // and HeapObject elements. Jump to the specified label if it does not. |
| 1585 void CheckFastObjectElements(Register map, Register scratch, Label* fail); | 1581 void CheckFastObjectElements(Register map, Register scratch, Label* fail); |
| 1586 | 1582 |
| 1587 // Check to see if number can be stored as a double in FastDoubleElements. | 1583 // Check to see if number can be stored as a double in FastDoubleElements. |
| 1588 // If it can, store it at the index specified by key_reg in the array, | 1584 // If it can, store it at the index specified by key_reg in the array, |
| 1589 // otherwise jump to fail. | 1585 // otherwise jump to fail. |
| 1590 void StoreNumberToDoubleElements(Register value_reg, | 1586 void StoreNumberToDoubleElements(Register value_reg, |
| 1591 Register key_reg, | 1587 Register key_reg, |
| 1592 Register elements_reg, | 1588 Register elements_reg, |
| (...skipping 22 matching lines...) Expand all Loading... |
| 1615 // is left untouched, whereas both scratch registers are clobbered. | 1611 // is left untouched, whereas both scratch registers are clobbered. |
| 1616 void CheckAccessGlobalProxy(Register holder_reg, | 1612 void CheckAccessGlobalProxy(Register holder_reg, |
| 1617 Register scratch1, | 1613 Register scratch1, |
| 1618 Register scratch2, | 1614 Register scratch2, |
| 1619 Label* miss); | 1615 Label* miss); |
| 1620 | 1616 |
| 1621 // Hash the interger value in 'key' register. | 1617 // Hash the interger value in 'key' register. |
| 1622 // It uses the same algorithm as ComputeIntegerHash in utils.h. | 1618 // It uses the same algorithm as ComputeIntegerHash in utils.h. |
| 1623 void GetNumberHash(Register key, Register scratch); | 1619 void GetNumberHash(Register key, Register scratch); |
| 1624 | 1620 |
| 1625 // Load value from the dictionary. | |
| 1626 // | |
| 1627 // elements - holds the slow-case elements of the receiver on entry. | |
| 1628 // Unchanged unless 'result' is the same register. | |
| 1629 // | |
| 1630 // key - holds the smi key on entry. | |
| 1631 // Unchanged unless 'result' is the same register. | |
| 1632 // | |
| 1633 // result - holds the result on exit if the load succeeded. | |
| 1634 // Allowed to be the same as 'key' or 'result'. | |
| 1635 // Unchanged on bailout so 'key' or 'result' can be used | |
| 1636 // in further computation. | |
| 1637 void LoadFromNumberDictionary(Label* miss, | |
| 1638 Register elements, | |
| 1639 Register key, | |
| 1640 Register result, | |
| 1641 Register scratch0, | |
| 1642 Register scratch1, | |
| 1643 Register scratch2, | |
| 1644 Register scratch3); | |
| 1645 | |
| 1646 // --------------------------------------------------------------------------- | 1621 // --------------------------------------------------------------------------- |
| 1647 // Frames. | 1622 // Frames. |
| 1648 | 1623 |
| 1649 // Load the type feedback vector from a JavaScript frame. | 1624 // Load the type feedback vector from a JavaScript frame. |
| 1650 void EmitLoadTypeFeedbackVector(Register vector); | 1625 void EmitLoadTypeFeedbackVector(Register vector); |
| 1651 | 1626 |
| 1652 // Activation support. | 1627 // Activation support. |
| 1653 void EnterFrame(StackFrame::Type type); | 1628 void EnterFrame(StackFrame::Type type); |
| 1654 void EnterFrame(StackFrame::Type type, bool load_constant_pool_pointer_reg); | 1629 void EnterFrame(StackFrame::Type type, bool load_constant_pool_pointer_reg); |
| 1655 void LeaveFrame(StackFrame::Type type); | 1630 void LeaveFrame(StackFrame::Type type); |
| (...skipping 664 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2320 class RegisterBits : public BitField<unsigned, 0, 5> {}; | 2295 class RegisterBits : public BitField<unsigned, 0, 5> {}; |
| 2321 class DeltaBits : public BitField<uint32_t, 5, 32-5> {}; | 2296 class DeltaBits : public BitField<uint32_t, 5, 32-5> {}; |
| 2322 }; | 2297 }; |
| 2323 | 2298 |
| 2324 } // namespace internal | 2299 } // namespace internal |
| 2325 } // namespace v8 | 2300 } // namespace v8 |
| 2326 | 2301 |
| 2327 #define ACCESS_MASM(masm) masm-> | 2302 #define ACCESS_MASM(masm) masm-> |
| 2328 | 2303 |
| 2329 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ | 2304 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ |
| OLD | NEW |