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 #include <limits.h> // For LONG_MIN, LONG_MAX. | 5 #include <limits.h> // For LONG_MIN, LONG_MAX. |
6 | 6 |
7 #if V8_TARGET_ARCH_ARM | 7 #if V8_TARGET_ARCH_ARM |
8 | 8 |
9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" |
10 #include "src/base/division-by-constant.h" | 10 #include "src/base/division-by-constant.h" |
(...skipping 3111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3122 STATIC_ASSERT(kSmiTag == 0); | 3122 STATIC_ASSERT(kSmiTag == 0); |
3123 tst(object, Operand(kSmiTagMask)); | 3123 tst(object, Operand(kSmiTagMask)); |
3124 Check(ne, kOperandIsASmiAndNotABoundFunction); | 3124 Check(ne, kOperandIsASmiAndNotABoundFunction); |
3125 push(object); | 3125 push(object); |
3126 CompareObjectType(object, object, object, JS_BOUND_FUNCTION_TYPE); | 3126 CompareObjectType(object, object, object, JS_BOUND_FUNCTION_TYPE); |
3127 pop(object); | 3127 pop(object); |
3128 Check(eq, kOperandIsNotABoundFunction); | 3128 Check(eq, kOperandIsNotABoundFunction); |
3129 } | 3129 } |
3130 } | 3130 } |
3131 | 3131 |
| 3132 void MacroAssembler::AssertGeneratorObject(Register object) { |
| 3133 if (emit_debug_code()) { |
| 3134 STATIC_ASSERT(kSmiTag == 0); |
| 3135 tst(object, Operand(kSmiTagMask)); |
| 3136 Check(ne, kOperandIsASmiAndNotAGeneratorObject); |
| 3137 push(object); |
| 3138 CompareObjectType(object, object, object, JS_GENERATOR_OBJECT_TYPE); |
| 3139 pop(object); |
| 3140 Check(eq, kOperandIsNotAGeneratorObject); |
| 3141 } |
| 3142 } |
3132 | 3143 |
3133 void MacroAssembler::AssertReceiver(Register object) { | 3144 void MacroAssembler::AssertReceiver(Register object) { |
3134 if (emit_debug_code()) { | 3145 if (emit_debug_code()) { |
3135 STATIC_ASSERT(kSmiTag == 0); | 3146 STATIC_ASSERT(kSmiTag == 0); |
3136 tst(object, Operand(kSmiTagMask)); | 3147 tst(object, Operand(kSmiTagMask)); |
3137 Check(ne, kOperandIsASmiAndNotAReceiver); | 3148 Check(ne, kOperandIsASmiAndNotAReceiver); |
3138 push(object); | 3149 push(object); |
3139 STATIC_ASSERT(LAST_TYPE == LAST_JS_RECEIVER_TYPE); | 3150 STATIC_ASSERT(LAST_TYPE == LAST_JS_RECEIVER_TYPE); |
3140 CompareObjectType(object, object, object, FIRST_JS_RECEIVER_TYPE); | 3151 CompareObjectType(object, object, object, FIRST_JS_RECEIVER_TYPE); |
3141 pop(object); | 3152 pop(object); |
(...skipping 817 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3959 } | 3970 } |
3960 } | 3971 } |
3961 if (mag.shift > 0) mov(result, Operand(result, ASR, mag.shift)); | 3972 if (mag.shift > 0) mov(result, Operand(result, ASR, mag.shift)); |
3962 add(result, result, Operand(dividend, LSR, 31)); | 3973 add(result, result, Operand(dividend, LSR, 31)); |
3963 } | 3974 } |
3964 | 3975 |
3965 } // namespace internal | 3976 } // namespace internal |
3966 } // namespace v8 | 3977 } // namespace v8 |
3967 | 3978 |
3968 #endif // V8_TARGET_ARCH_ARM | 3979 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |