| 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/arm/assembler-arm.h" | 8 #include "src/arm/assembler-arm.h" |
| 9 #include "src/assembler.h" | 9 #include "src/assembler.h" |
| 10 #include "src/bailout-reason.h" | 10 #include "src/bailout-reason.h" |
| (...skipping 693 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 704 void InvokeFunction(Handle<JSFunction> function, | 704 void InvokeFunction(Handle<JSFunction> function, |
| 705 const ParameterCount& expected, | 705 const ParameterCount& expected, |
| 706 const ParameterCount& actual, | 706 const ParameterCount& actual, |
| 707 InvokeFlag flag, | 707 InvokeFlag flag, |
| 708 const CallWrapper& call_wrapper); | 708 const CallWrapper& call_wrapper); |
| 709 | 709 |
| 710 void IsObjectJSStringType(Register object, | 710 void IsObjectJSStringType(Register object, |
| 711 Register scratch, | 711 Register scratch, |
| 712 Label* fail); | 712 Label* fail); |
| 713 | 713 |
| 714 void IsObjectNameType(Register object, | |
| 715 Register scratch, | |
| 716 Label* fail); | |
| 717 | |
| 718 // Frame restart support | 714 // Frame restart support |
| 719 void MaybeDropFrames(); | 715 void MaybeDropFrames(); |
| 720 | 716 |
| 721 // Exception handling | 717 // Exception handling |
| 722 | 718 |
| 723 // Push a new stack handler and link into stack handler chain. | 719 // Push a new stack handler and link into stack handler chain. |
| 724 void PushStackHandler(); | 720 void PushStackHandler(); |
| 725 | 721 |
| 726 // Unlink the stack handler on top of the stack from the stack handler chain. | 722 // Unlink the stack handler on top of the stack from the stack handler chain. |
| 727 // Must preserve the result register. | 723 // Must preserve the result register. |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 872 Label* fail, | 868 Label* fail, |
| 873 SmiCheckType smi_check_type); | 869 SmiCheckType smi_check_type); |
| 874 | 870 |
| 875 | 871 |
| 876 void CheckMap(Register obj, | 872 void CheckMap(Register obj, |
| 877 Register scratch, | 873 Register scratch, |
| 878 Heap::RootListIndex index, | 874 Heap::RootListIndex index, |
| 879 Label* fail, | 875 Label* fail, |
| 880 SmiCheckType smi_check_type); | 876 SmiCheckType smi_check_type); |
| 881 | 877 |
| 882 | |
| 883 // Check if the map of an object is equal to a specified weak map and branch | |
| 884 // to a specified target if equal. Skip the smi check if not required | |
| 885 // (object is known to be a heap object) | |
| 886 void DispatchWeakMap(Register obj, Register scratch1, Register scratch2, | |
| 887 Handle<WeakCell> cell, Handle<Code> success, | |
| 888 SmiCheckType smi_check_type); | |
| 889 | |
| 890 // Compare the given value and the value of weak cell. | |
| 891 void CmpWeakValue(Register value, Handle<WeakCell> cell, Register scratch); | |
| 892 | |
| 893 void GetWeakValue(Register value, Handle<WeakCell> cell); | 878 void GetWeakValue(Register value, Handle<WeakCell> cell); |
| 894 | 879 |
| 895 // Load the value of the weak cell in the value register. Branch to the given | 880 // Load the value of the weak cell in the value register. Branch to the given |
| 896 // miss label if the weak cell was cleared. | 881 // miss label if the weak cell was cleared. |
| 897 void LoadWeakValue(Register value, Handle<WeakCell> cell, Label* miss); | 882 void LoadWeakValue(Register value, Handle<WeakCell> cell, Label* miss); |
| 898 | 883 |
| 899 // Compare the object in a register to a value from the root list. | 884 // Compare the object in a register to a value from the root list. |
| 900 // Uses the ip register as scratch. | 885 // Uses the ip register as scratch. |
| 901 void CompareRoot(Register obj, Heap::RootListIndex index); | 886 void CompareRoot(Register obj, Heap::RootListIndex index); |
| 902 void PushRoot(Heap::RootListIndex index) { | 887 void PushRoot(Heap::RootListIndex index) { |
| (...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1131 void DecrementCounter(StatsCounter* counter, int value, | 1116 void DecrementCounter(StatsCounter* counter, int value, |
| 1132 Register scratch1, Register scratch2); | 1117 Register scratch1, Register scratch2); |
| 1133 | 1118 |
| 1134 | 1119 |
| 1135 // --------------------------------------------------------------------------- | 1120 // --------------------------------------------------------------------------- |
| 1136 // Debugging | 1121 // Debugging |
| 1137 | 1122 |
| 1138 // Calls Abort(msg) if the condition cond is not satisfied. | 1123 // Calls Abort(msg) if the condition cond is not satisfied. |
| 1139 // Use --debug_code to enable. | 1124 // Use --debug_code to enable. |
| 1140 void Assert(Condition cond, BailoutReason reason); | 1125 void Assert(Condition cond, BailoutReason reason); |
| 1141 void AssertFastElements(Register elements); | |
| 1142 | 1126 |
| 1143 // Like Assert(), but always enabled. | 1127 // Like Assert(), but always enabled. |
| 1144 void Check(Condition cond, BailoutReason reason); | 1128 void Check(Condition cond, BailoutReason reason); |
| 1145 | 1129 |
| 1146 // Print a message to stdout and abort execution. | 1130 // Print a message to stdout and abort execution. |
| 1147 void Abort(BailoutReason msg); | 1131 void Abort(BailoutReason msg); |
| 1148 | 1132 |
| 1149 // Verify restrictions about code generated in stubs. | 1133 // Verify restrictions about code generated in stubs. |
| 1150 void set_generating_stub(bool value) { generating_stub_ = value; } | 1134 void set_generating_stub(bool value) { generating_stub_ = value; } |
| 1151 bool generating_stub() { return generating_stub_; } | 1135 bool generating_stub() { return generating_stub_; } |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1220 void NonNegativeSmiTst(Register value); | 1204 void NonNegativeSmiTst(Register value); |
| 1221 // Jump if the register contains a smi. | 1205 // Jump if the register contains a smi. |
| 1222 void JumpIfSmi(Register value, Label* smi_label); | 1206 void JumpIfSmi(Register value, Label* smi_label); |
| 1223 // Jump if either of the registers contain a non-smi. | 1207 // Jump if either of the registers contain a non-smi. |
| 1224 void JumpIfNotSmi(Register value, Label* not_smi_label); | 1208 void JumpIfNotSmi(Register value, Label* not_smi_label); |
| 1225 // Jump if either of the registers contain a non-smi. | 1209 // Jump if either of the registers contain a non-smi. |
| 1226 void JumpIfNotBothSmi(Register reg1, Register reg2, Label* on_not_both_smi); | 1210 void JumpIfNotBothSmi(Register reg1, Register reg2, Label* on_not_both_smi); |
| 1227 // Jump if either of the registers contain a smi. | 1211 // Jump if either of the registers contain a smi. |
| 1228 void JumpIfEitherSmi(Register reg1, Register reg2, Label* on_either_smi); | 1212 void JumpIfEitherSmi(Register reg1, Register reg2, Label* on_either_smi); |
| 1229 | 1213 |
| 1230 // Abort execution if argument is a number, enabled via --debug-code. | |
| 1231 void AssertNotNumber(Register object); | |
| 1232 | |
| 1233 // Abort execution if argument is a smi, enabled via --debug-code. | 1214 // Abort execution if argument is a smi, enabled via --debug-code. |
| 1234 void AssertNotSmi(Register object); | 1215 void AssertNotSmi(Register object); |
| 1235 void AssertSmi(Register object); | 1216 void AssertSmi(Register object); |
| 1236 | 1217 |
| 1237 // Abort execution if argument is not a string, enabled via --debug-code. | |
| 1238 void AssertString(Register object); | |
| 1239 | |
| 1240 // Abort execution if argument is not a name, enabled via --debug-code. | |
| 1241 void AssertName(Register object); | |
| 1242 | |
| 1243 // Abort execution if argument is not a JSFunction, enabled via --debug-code. | 1218 // Abort execution if argument is not a JSFunction, enabled via --debug-code. |
| 1244 void AssertFunction(Register object); | 1219 void AssertFunction(Register object); |
| 1245 | 1220 |
| 1246 // Abort execution if argument is not a JSBoundFunction, | 1221 // Abort execution if argument is not a JSBoundFunction, |
| 1247 // enabled via --debug-code. | 1222 // enabled via --debug-code. |
| 1248 void AssertBoundFunction(Register object); | 1223 void AssertBoundFunction(Register object); |
| 1249 | 1224 |
| 1250 // Abort execution if argument is not a JSGeneratorObject, | 1225 // Abort execution if argument is not a JSGeneratorObject, |
| 1251 // enabled via --debug-code. | 1226 // enabled via --debug-code. |
| 1252 void AssertGeneratorObject(Register object); | 1227 void AssertGeneratorObject(Register object); |
| 1253 | 1228 |
| 1254 // Abort execution if argument is not a JSReceiver, enabled via --debug-code. | |
| 1255 void AssertReceiver(Register object); | |
| 1256 | |
| 1257 // Abort execution if argument is not undefined or an AllocationSite, enabled | 1229 // Abort execution if argument is not undefined or an AllocationSite, enabled |
| 1258 // via --debug-code. | 1230 // via --debug-code. |
| 1259 void AssertUndefinedOrAllocationSite(Register object, Register scratch); | 1231 void AssertUndefinedOrAllocationSite(Register object, Register scratch); |
| 1260 | 1232 |
| 1261 // Abort execution if reg is not the root value with the given index, | 1233 // Abort execution if reg is not the root value with the given index, |
| 1262 // enabled via --debug-code. | 1234 // enabled via --debug-code. |
| 1263 void AssertIsRoot(Register reg, Heap::RootListIndex index); | 1235 void AssertIsRoot(Register reg, Heap::RootListIndex index); |
| 1264 | 1236 |
| 1265 // --------------------------------------------------------------------------- | 1237 // --------------------------------------------------------------------------- |
| 1266 // HeapNumber utilities | 1238 // HeapNumber utilities |
| (...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1467 inline MemOperand NativeContextMemOperand() { | 1439 inline MemOperand NativeContextMemOperand() { |
| 1468 return ContextMemOperand(cp, Context::NATIVE_CONTEXT_INDEX); | 1440 return ContextMemOperand(cp, Context::NATIVE_CONTEXT_INDEX); |
| 1469 } | 1441 } |
| 1470 | 1442 |
| 1471 #define ACCESS_MASM(masm) masm-> | 1443 #define ACCESS_MASM(masm) masm-> |
| 1472 | 1444 |
| 1473 } // namespace internal | 1445 } // namespace internal |
| 1474 } // namespace v8 | 1446 } // namespace v8 |
| 1475 | 1447 |
| 1476 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ | 1448 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ |
| OLD | NEW |