OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 3334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3345 Check(not_equal, kOperandIsASmiAndNotAName); | 3345 Check(not_equal, kOperandIsASmiAndNotAName); |
3346 push(object); | 3346 push(object); |
3347 movp(object, FieldOperand(object, HeapObject::kMapOffset)); | 3347 movp(object, FieldOperand(object, HeapObject::kMapOffset)); |
3348 CmpInstanceType(object, LAST_NAME_TYPE); | 3348 CmpInstanceType(object, LAST_NAME_TYPE); |
3349 pop(object); | 3349 pop(object); |
3350 Check(below_equal, kOperandIsNotAName); | 3350 Check(below_equal, kOperandIsNotAName); |
3351 } | 3351 } |
3352 } | 3352 } |
3353 | 3353 |
3354 | 3354 |
| 3355 void MacroAssembler::AssertUndefinedOrAllocationSite(Register object) { |
| 3356 if (emit_debug_code()) { |
| 3357 Label done_checking; |
| 3358 AssertNotSmi(object); |
| 3359 Cmp(object, isolate()->factory()->undefined_value()); |
| 3360 j(equal, &done_checking); |
| 3361 Cmp(FieldOperand(object, 0), isolate()->factory()->allocation_site_map()); |
| 3362 Assert(equal, kExpectedUndefinedOrCell); |
| 3363 bind(&done_checking); |
| 3364 } |
| 3365 } |
| 3366 |
| 3367 |
3355 void MacroAssembler::AssertRootValue(Register src, | 3368 void MacroAssembler::AssertRootValue(Register src, |
3356 Heap::RootListIndex root_value_index, | 3369 Heap::RootListIndex root_value_index, |
3357 BailoutReason reason) { | 3370 BailoutReason reason) { |
3358 if (emit_debug_code()) { | 3371 if (emit_debug_code()) { |
3359 ASSERT(!src.is(kScratchRegister)); | 3372 ASSERT(!src.is(kScratchRegister)); |
3360 LoadRoot(kScratchRegister, root_value_index); | 3373 LoadRoot(kScratchRegister, root_value_index); |
3361 cmpq(src, kScratchRegister); | 3374 cmpq(src, kScratchRegister); |
3362 Check(equal, reason); | 3375 Check(equal, reason); |
3363 } | 3376 } |
3364 } | 3377 } |
(...skipping 1622 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4987 imull(dividend); | 5000 imull(dividend); |
4988 if (divisor > 0 && ms.multiplier() < 0) addl(rdx, dividend); | 5001 if (divisor > 0 && ms.multiplier() < 0) addl(rdx, dividend); |
4989 if (divisor < 0 && ms.multiplier() > 0) subl(rdx, dividend); | 5002 if (divisor < 0 && ms.multiplier() > 0) subl(rdx, dividend); |
4990 if (ms.shift() > 0) sarl(rdx, Immediate(ms.shift())); | 5003 if (ms.shift() > 0) sarl(rdx, Immediate(ms.shift())); |
4991 } | 5004 } |
4992 | 5005 |
4993 | 5006 |
4994 } } // namespace v8::internal | 5007 } } // namespace v8::internal |
4995 | 5008 |
4996 #endif // V8_TARGET_ARCH_X64 | 5009 #endif // V8_TARGET_ARCH_X64 |
OLD | NEW |