OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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 #if V8_TARGET_ARCH_PPC | 7 #if V8_TARGET_ARCH_PPC |
8 | 8 |
9 #include "src/code-factory.h" | 9 #include "src/code-factory.h" |
10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
(...skipping 3151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3162 PreservePositionScope scope(masm()->positions_recorder()); | 3162 PreservePositionScope scope(masm()->positions_recorder()); |
3163 VisitForStackValue(property->obj()); | 3163 VisitForStackValue(property->obj()); |
3164 } | 3164 } |
3165 if (is_named_call) { | 3165 if (is_named_call) { |
3166 EmitCallWithLoadIC(expr); | 3166 EmitCallWithLoadIC(expr); |
3167 } else { | 3167 } else { |
3168 EmitKeyedCallWithLoadIC(expr, property->key()); | 3168 EmitKeyedCallWithLoadIC(expr, property->key()); |
3169 } | 3169 } |
3170 } | 3170 } |
3171 } else if (call_type == Call::SUPER_CALL) { | 3171 } else if (call_type == Call::SUPER_CALL) { |
3172 if (FLAG_experimental_classes) { | 3172 EmitSuperConstructorCall(expr); |
3173 EmitSuperConstructorCall(expr); | |
3174 } else { | |
3175 SuperReference* super_ref = callee->AsSuperReference(); | |
3176 EmitLoadSuperConstructor(super_ref); | |
3177 __ Push(result_register()); | |
3178 VisitForStackValue(super_ref->this_var()); | |
3179 EmitCall(expr, CallICState::METHOD); | |
3180 } | |
3181 } else { | 3173 } else { |
3182 DCHECK(call_type == Call::OTHER_CALL); | 3174 DCHECK(call_type == Call::OTHER_CALL); |
3183 // Call to an arbitrary expression not handled specially above. | 3175 // Call to an arbitrary expression not handled specially above. |
3184 { | 3176 { |
3185 PreservePositionScope scope(masm()->positions_recorder()); | 3177 PreservePositionScope scope(masm()->positions_recorder()); |
3186 VisitForStackValue(callee); | 3178 VisitForStackValue(callee); |
3187 } | 3179 } |
3188 __ LoadRoot(r4, Heap::kUndefinedValueRootIndex); | 3180 __ LoadRoot(r4, Heap::kUndefinedValueRootIndex); |
3189 __ push(r4); | 3181 __ push(r4); |
3190 // Emit function call. | 3182 // Emit function call. |
(...skipping 2177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5368 return ON_STACK_REPLACEMENT; | 5360 return ON_STACK_REPLACEMENT; |
5369 } | 5361 } |
5370 | 5362 |
5371 DCHECK(interrupt_address == | 5363 DCHECK(interrupt_address == |
5372 isolate->builtins()->OsrAfterStackCheck()->entry()); | 5364 isolate->builtins()->OsrAfterStackCheck()->entry()); |
5373 return OSR_AFTER_STACK_CHECK; | 5365 return OSR_AFTER_STACK_CHECK; |
5374 } | 5366 } |
5375 } | 5367 } |
5376 } // namespace v8::internal | 5368 } // namespace v8::internal |
5377 #endif // V8_TARGET_ARCH_PPC | 5369 #endif // V8_TARGET_ARCH_PPC |
OLD | NEW |