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 "src/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/code-factory.h" | 7 #include "src/code-factory.h" |
8 #include "src/code-stubs.h" | 8 #include "src/code-stubs.h" |
9 #include "src/cpu-profiler.h" | 9 #include "src/cpu-profiler.h" |
10 #include "src/hydrogen-osr.h" | 10 #include "src/hydrogen-osr.h" |
(...skipping 2602 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2613 __ GetObjectType(input, temp, temp2); | 2613 __ GetObjectType(input, temp, temp2); |
2614 __ Dsubu(temp2, temp2, Operand(FIRST_NONCALLABLE_SPEC_OBJECT_TYPE)); | 2614 __ Dsubu(temp2, temp2, Operand(FIRST_NONCALLABLE_SPEC_OBJECT_TYPE)); |
2615 __ Branch(is_false, gt, temp2, Operand(LAST_NONCALLABLE_SPEC_OBJECT_TYPE - | 2615 __ Branch(is_false, gt, temp2, Operand(LAST_NONCALLABLE_SPEC_OBJECT_TYPE - |
2616 FIRST_NONCALLABLE_SPEC_OBJECT_TYPE)); | 2616 FIRST_NONCALLABLE_SPEC_OBJECT_TYPE)); |
2617 } | 2617 } |
2618 | 2618 |
2619 // Now we are in the FIRST-LAST_NONCALLABLE_SPEC_OBJECT_TYPE range. | 2619 // Now we are in the FIRST-LAST_NONCALLABLE_SPEC_OBJECT_TYPE range. |
2620 // Check if the constructor in the map is a function. | 2620 // Check if the constructor in the map is a function. |
2621 Register instance_type = scratch1(); | 2621 Register instance_type = scratch1(); |
2622 DCHECK(!instance_type.is(temp)); | 2622 DCHECK(!instance_type.is(temp)); |
2623 DCHECK(!instance_type.is(temp2)); | |
2624 __ GetMapConstructor(temp, temp, temp2, instance_type); | 2623 __ GetMapConstructor(temp, temp, temp2, instance_type); |
2625 | 2624 |
2626 // Objects with a non-function constructor have class 'Object'. | 2625 // Objects with a non-function constructor have class 'Object'. |
2627 if (String::Equals(class_name, isolate()->factory()->Object_string())) { | 2626 if (String::Equals(class_name, isolate()->factory()->Object_string())) { |
2628 __ Branch(is_true, ne, instance_type, Operand(JS_FUNCTION_TYPE)); | 2627 __ Branch(is_true, ne, instance_type, Operand(JS_FUNCTION_TYPE)); |
2629 } else { | 2628 } else { |
2630 __ Branch(is_false, ne, instance_type, Operand(JS_FUNCTION_TYPE)); | 2629 __ Branch(is_false, ne, instance_type, Operand(JS_FUNCTION_TYPE)); |
2631 } | 2630 } |
2632 | 2631 |
2633 // temp now contains the constructor function. Grab the | 2632 // temp now contains the constructor function. Grab the |
(...skipping 3419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6053 __ li(at, scope_info); | 6052 __ li(at, scope_info); |
6054 __ Push(at, ToRegister(instr->function())); | 6053 __ Push(at, ToRegister(instr->function())); |
6055 CallRuntime(Runtime::kPushBlockContext, 2, instr); | 6054 CallRuntime(Runtime::kPushBlockContext, 2, instr); |
6056 RecordSafepoint(Safepoint::kNoLazyDeopt); | 6055 RecordSafepoint(Safepoint::kNoLazyDeopt); |
6057 } | 6056 } |
6058 | 6057 |
6059 | 6058 |
6060 #undef __ | 6059 #undef __ |
6061 | 6060 |
6062 } } // namespace v8::internal | 6061 } } // namespace v8::internal |
OLD | NEW |