OLD | NEW |
1 // Copyright 2006-2009 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2009 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 3452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3463 LoadAndSpill(args->at(0)); | 3463 LoadAndSpill(args->at(0)); |
3464 frame_->EmitPop(r0); | 3464 frame_->EmitPop(r0); |
3465 __ tst(r0, Operand(kSmiTagMask)); | 3465 __ tst(r0, Operand(kSmiTagMask)); |
3466 false_target()->Branch(eq); | 3466 false_target()->Branch(eq); |
3467 Register map_reg = r2; | 3467 Register map_reg = r2; |
3468 __ CompareObjectType(r0, map_reg, r1, JS_FUNCTION_TYPE); | 3468 __ CompareObjectType(r0, map_reg, r1, JS_FUNCTION_TYPE); |
3469 cc_reg_ = eq; | 3469 cc_reg_ = eq; |
3470 } | 3470 } |
3471 | 3471 |
3472 | 3472 |
| 3473 void CodeGenerator::GenerateIsUndetectableObject(ZoneList<Expression*>* args) { |
| 3474 VirtualFrame::SpilledScope spilled_scope; |
| 3475 ASSERT(args->length() == 1); |
| 3476 LoadAndSpill(args->at(0)); |
| 3477 frame_->EmitPop(r0); |
| 3478 __ tst(r0, Operand(kSmiTagMask)); |
| 3479 false_target()->Branch(eq); |
| 3480 __ ldr(r1, FieldMemOperand(r0, HeapObject::kMapOffset)); |
| 3481 __ ldrb(r1, FieldMemOperand(r1, Map::kBitFieldOffset)); |
| 3482 __ tst(r1, Operand(1 << Map::kIsUndetectable)); |
| 3483 cc_reg_ = ne; |
| 3484 } |
| 3485 |
| 3486 |
3473 void CodeGenerator::GenerateIsConstructCall(ZoneList<Expression*>* args) { | 3487 void CodeGenerator::GenerateIsConstructCall(ZoneList<Expression*>* args) { |
3474 VirtualFrame::SpilledScope spilled_scope; | 3488 VirtualFrame::SpilledScope spilled_scope; |
3475 ASSERT(args->length() == 0); | 3489 ASSERT(args->length() == 0); |
3476 | 3490 |
3477 // Get the frame pointer for the calling frame. | 3491 // Get the frame pointer for the calling frame. |
3478 __ ldr(r2, MemOperand(fp, StandardFrameConstants::kCallerFPOffset)); | 3492 __ ldr(r2, MemOperand(fp, StandardFrameConstants::kCallerFPOffset)); |
3479 | 3493 |
3480 // Skip the arguments adaptor frame if it exists. | 3494 // Skip the arguments adaptor frame if it exists. |
3481 Label check_frame_marker; | 3495 Label check_frame_marker; |
3482 __ ldr(r1, MemOperand(r2, StandardFrameConstants::kContextOffset)); | 3496 __ ldr(r1, MemOperand(r2, StandardFrameConstants::kContextOffset)); |
(...skipping 3236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6719 ASSERT((static_cast<unsigned>(cc_) >> 26) < (1 << 16)); | 6733 ASSERT((static_cast<unsigned>(cc_) >> 26) < (1 << 16)); |
6720 int nnn_value = (never_nan_nan_ ? 2 : 0); | 6734 int nnn_value = (never_nan_nan_ ? 2 : 0); |
6721 if (cc_ != eq) nnn_value = 0; // Avoid duplicate stubs. | 6735 if (cc_ != eq) nnn_value = 0; // Avoid duplicate stubs. |
6722 return (static_cast<unsigned>(cc_) >> 26) | nnn_value | (strict_ ? 1 : 0); | 6736 return (static_cast<unsigned>(cc_) >> 26) | nnn_value | (strict_ ? 1 : 0); |
6723 } | 6737 } |
6724 | 6738 |
6725 | 6739 |
6726 #undef __ | 6740 #undef __ |
6727 | 6741 |
6728 } } // namespace v8::internal | 6742 } } // namespace v8::internal |
OLD | NEW |