OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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_ARM64 | 7 #if V8_TARGET_ARCH_ARM64 |
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 2944 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2955 __ Mov(x3, SmiFromSlot(expr->CallNewFeedbackSlot())); | 2955 __ Mov(x3, SmiFromSlot(expr->CallNewFeedbackSlot())); |
2956 | 2956 |
2957 CallConstructStub stub(isolate(), RECORD_CONSTRUCTOR_TARGET); | 2957 CallConstructStub stub(isolate(), RECORD_CONSTRUCTOR_TARGET); |
2958 __ Call(stub.GetCode(), RelocInfo::CONSTRUCT_CALL); | 2958 __ Call(stub.GetCode(), RelocInfo::CONSTRUCT_CALL); |
2959 PrepareForBailoutForId(expr->ReturnId(), TOS_REG); | 2959 PrepareForBailoutForId(expr->ReturnId(), TOS_REG); |
2960 context()->Plug(x0); | 2960 context()->Plug(x0); |
2961 } | 2961 } |
2962 | 2962 |
2963 | 2963 |
2964 void FullCodeGenerator::EmitSuperConstructorCall(Call* expr) { | 2964 void FullCodeGenerator::EmitSuperConstructorCall(Call* expr) { |
2965 if (!ValidateSuperCall(expr)) return; | |
2966 | |
2967 Variable* new_target_var = scope()->DeclarationScope()->new_target_var(); | 2965 Variable* new_target_var = scope()->DeclarationScope()->new_target_var(); |
2968 GetVar(result_register(), new_target_var); | 2966 GetVar(result_register(), new_target_var); |
2969 __ Push(result_register()); | 2967 __ Push(result_register()); |
2970 | 2968 |
2971 EmitLoadSuperConstructor(); | 2969 EmitLoadSuperConstructor(); |
2972 __ push(result_register()); | 2970 __ push(result_register()); |
2973 | 2971 |
2974 // Push the arguments ("left-to-right") on the stack. | 2972 // Push the arguments ("left-to-right") on the stack. |
2975 ZoneList<Expression*>* args = expr->arguments(); | 2973 ZoneList<Expression*>* args = expr->arguments(); |
2976 int arg_count = args->length(); | 2974 int arg_count = args->length(); |
(...skipping 2504 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5481 return previous_; | 5479 return previous_; |
5482 } | 5480 } |
5483 | 5481 |
5484 | 5482 |
5485 #undef __ | 5483 #undef __ |
5486 | 5484 |
5487 | 5485 |
5488 } } // namespace v8::internal | 5486 } } // namespace v8::internal |
5489 | 5487 |
5490 #endif // V8_TARGET_ARCH_ARM64 | 5488 #endif // V8_TARGET_ARCH_ARM64 |
OLD | NEW |