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_MIPS_MACRO_ASSEMBLER_MIPS_H_ | 5 #ifndef V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ |
6 #define V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ | 6 #define V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ |
7 | 7 |
8 #include "src/assembler.h" | 8 #include "src/assembler.h" |
9 #include "src/globals.h" | 9 #include "src/globals.h" |
10 #include "src/mips64/assembler-mips64.h" | 10 #include "src/mips64/assembler-mips64.h" |
(...skipping 1114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1125 const ParameterCount& expected, | 1125 const ParameterCount& expected, |
1126 const ParameterCount& actual, | 1126 const ParameterCount& actual, |
1127 InvokeFlag flag, | 1127 InvokeFlag flag, |
1128 const CallWrapper& call_wrapper); | 1128 const CallWrapper& call_wrapper); |
1129 | 1129 |
1130 | 1130 |
1131 void IsObjectJSStringType(Register object, | 1131 void IsObjectJSStringType(Register object, |
1132 Register scratch, | 1132 Register scratch, |
1133 Label* fail); | 1133 Label* fail); |
1134 | 1134 |
1135 void IsObjectNameType(Register object, | |
1136 Register scratch, | |
1137 Label* fail); | |
1138 | |
1139 // Frame restart support. | 1135 // Frame restart support. |
1140 void MaybeDropFrames(); | 1136 void MaybeDropFrames(); |
1141 | 1137 |
1142 // Exception handling. | 1138 // Exception handling. |
1143 | 1139 |
1144 // Push a new stack handler and link into stack handler chain. | 1140 // Push a new stack handler and link into stack handler chain. |
1145 void PushStackHandler(); | 1141 void PushStackHandler(); |
1146 | 1142 |
1147 // Unlink the stack handler on top of the stack from the stack handler chain. | 1143 // Unlink the stack handler on top of the stack from the stack handler chain. |
1148 // Must preserve the result register. | 1144 // Must preserve the result register. |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1195 Label* fail, | 1191 Label* fail, |
1196 SmiCheckType smi_check_type); | 1192 SmiCheckType smi_check_type); |
1197 | 1193 |
1198 | 1194 |
1199 void CheckMap(Register obj, | 1195 void CheckMap(Register obj, |
1200 Register scratch, | 1196 Register scratch, |
1201 Heap::RootListIndex index, | 1197 Heap::RootListIndex index, |
1202 Label* fail, | 1198 Label* fail, |
1203 SmiCheckType smi_check_type); | 1199 SmiCheckType smi_check_type); |
1204 | 1200 |
1205 // Check if the map of an object is equal to a specified weak map and branch | |
1206 // to a specified target if equal. Skip the smi check if not required | |
1207 // (object is known to be a heap object) | |
1208 void DispatchWeakMap(Register obj, Register scratch1, Register scratch2, | |
1209 Handle<WeakCell> cell, Handle<Code> success, | |
1210 SmiCheckType smi_check_type); | |
1211 | |
1212 // If the value is a NaN, canonicalize the value else, do nothing. | 1201 // If the value is a NaN, canonicalize the value else, do nothing. |
1213 void FPUCanonicalizeNaN(const DoubleRegister dst, const DoubleRegister src); | 1202 void FPUCanonicalizeNaN(const DoubleRegister dst, const DoubleRegister src); |
1214 | 1203 |
1215 | 1204 |
1216 // Get value of the weak cell. | 1205 // Get value of the weak cell. |
1217 void GetWeakValue(Register value, Handle<WeakCell> cell); | 1206 void GetWeakValue(Register value, Handle<WeakCell> cell); |
1218 | 1207 |
1219 // Load the value of the weak cell in the value register. Branch to the | 1208 // Load the value of the weak cell in the value register. Branch to the |
1220 // given miss label is the weak cell was cleared. | 1209 // given miss label is the weak cell was cleared. |
1221 void LoadWeakValue(Register value, Handle<WeakCell> cell, Label* miss); | 1210 void LoadWeakValue(Register value, Handle<WeakCell> cell, Label* miss); |
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1527 void DecrementCounter(StatsCounter* counter, int value, | 1516 void DecrementCounter(StatsCounter* counter, int value, |
1528 Register scratch1, Register scratch2); | 1517 Register scratch1, Register scratch2); |
1529 | 1518 |
1530 | 1519 |
1531 // ------------------------------------------------------------------------- | 1520 // ------------------------------------------------------------------------- |
1532 // Debugging. | 1521 // Debugging. |
1533 | 1522 |
1534 // Calls Abort(msg) if the condition cc is not satisfied. | 1523 // Calls Abort(msg) if the condition cc is not satisfied. |
1535 // Use --debug_code to enable. | 1524 // Use --debug_code to enable. |
1536 void Assert(Condition cc, BailoutReason reason, Register rs, Operand rt); | 1525 void Assert(Condition cc, BailoutReason reason, Register rs, Operand rt); |
1537 void AssertFastElements(Register elements); | |
1538 | 1526 |
1539 // Like Assert(), but always enabled. | 1527 // Like Assert(), but always enabled. |
1540 void Check(Condition cc, BailoutReason reason, Register rs, Operand rt); | 1528 void Check(Condition cc, BailoutReason reason, Register rs, Operand rt); |
1541 | 1529 |
1542 // Print a message to stdout and abort execution. | 1530 // Print a message to stdout and abort execution. |
1543 void Abort(BailoutReason msg); | 1531 void Abort(BailoutReason msg); |
1544 | 1532 |
1545 // Verify restrictions about code generated in stubs. | 1533 // Verify restrictions about code generated in stubs. |
1546 void set_generating_stub(bool value) { generating_stub_ = value; } | 1534 void set_generating_stub(bool value) { generating_stub_ = value; } |
1547 bool generating_stub() { return generating_stub_; } | 1535 bool generating_stub() { return generating_stub_; } |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1665 void JumpIfNotSmi(Register value, | 1653 void JumpIfNotSmi(Register value, |
1666 Label* not_smi_label, | 1654 Label* not_smi_label, |
1667 Register scratch = at, | 1655 Register scratch = at, |
1668 BranchDelaySlot bd = PROTECT); | 1656 BranchDelaySlot bd = PROTECT); |
1669 | 1657 |
1670 // Jump if either of the registers contain a non-smi. | 1658 // Jump if either of the registers contain a non-smi. |
1671 void JumpIfNotBothSmi(Register reg1, Register reg2, Label* on_not_both_smi); | 1659 void JumpIfNotBothSmi(Register reg1, Register reg2, Label* on_not_both_smi); |
1672 // Jump if either of the registers contain a smi. | 1660 // Jump if either of the registers contain a smi. |
1673 void JumpIfEitherSmi(Register reg1, Register reg2, Label* on_either_smi); | 1661 void JumpIfEitherSmi(Register reg1, Register reg2, Label* on_either_smi); |
1674 | 1662 |
1675 // Abort execution if argument is a number, enabled via --debug-code. | |
1676 void AssertNotNumber(Register object); | |
1677 | |
1678 // Abort execution if argument is a smi, enabled via --debug-code. | 1663 // Abort execution if argument is a smi, enabled via --debug-code. |
1679 void AssertNotSmi(Register object); | 1664 void AssertNotSmi(Register object); |
1680 void AssertSmi(Register object); | 1665 void AssertSmi(Register object); |
1681 | 1666 |
1682 // Abort execution if argument is not a string, enabled via --debug-code. | |
1683 void AssertString(Register object); | |
1684 | |
1685 // Abort execution if argument is not a name, enabled via --debug-code. | |
1686 void AssertName(Register object); | |
1687 | |
1688 // Abort execution if argument is not a JSFunction, enabled via --debug-code. | 1667 // Abort execution if argument is not a JSFunction, enabled via --debug-code. |
1689 void AssertFunction(Register object); | 1668 void AssertFunction(Register object); |
1690 | 1669 |
1691 // Abort execution if argument is not a JSBoundFunction, | 1670 // Abort execution if argument is not a JSBoundFunction, |
1692 // enabled via --debug-code. | 1671 // enabled via --debug-code. |
1693 void AssertBoundFunction(Register object); | 1672 void AssertBoundFunction(Register object); |
1694 | 1673 |
1695 // Abort execution if argument is not a JSGeneratorObject, | 1674 // Abort execution if argument is not a JSGeneratorObject, |
1696 // enabled via --debug-code. | 1675 // enabled via --debug-code. |
1697 void AssertGeneratorObject(Register object); | 1676 void AssertGeneratorObject(Register object); |
1698 | 1677 |
1699 // Abort execution if argument is not a JSReceiver, enabled via --debug-code. | |
1700 void AssertReceiver(Register object); | |
1701 | |
1702 // Abort execution if argument is not undefined or an AllocationSite, enabled | 1678 // Abort execution if argument is not undefined or an AllocationSite, enabled |
1703 // via --debug-code. | 1679 // via --debug-code. |
1704 void AssertUndefinedOrAllocationSite(Register object, Register scratch); | 1680 void AssertUndefinedOrAllocationSite(Register object, Register scratch); |
1705 | 1681 |
1706 // Abort execution if reg is not the root value with the given index, | 1682 // Abort execution if reg is not the root value with the given index, |
1707 // enabled via --debug-code. | 1683 // enabled via --debug-code. |
1708 void AssertIsRoot(Register reg, Heap::RootListIndex index); | 1684 void AssertIsRoot(Register reg, Heap::RootListIndex index); |
1709 | 1685 |
1710 // --------------------------------------------------------------------------- | 1686 // --------------------------------------------------------------------------- |
1711 // HeapNumber utilities. | 1687 // HeapNumber utilities. |
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1963 dd(GetLabelFunction(index)); | 1939 dd(GetLabelFunction(index)); |
1964 } | 1940 } |
1965 } | 1941 } |
1966 | 1942 |
1967 #define ACCESS_MASM(masm) masm-> | 1943 #define ACCESS_MASM(masm) masm-> |
1968 | 1944 |
1969 } // namespace internal | 1945 } // namespace internal |
1970 } // namespace v8 | 1946 } // namespace v8 |
1971 | 1947 |
1972 #endif // V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ | 1948 #endif // V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ |
OLD | NEW |