| 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 2437 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2448 __ Ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); | 2448 __ Ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); |
| 2449 context()->DropAndPlug(1, x0); | 2449 context()->DropAndPlug(1, x0); |
| 2450 } | 2450 } |
| 2451 | 2451 |
| 2452 | 2452 |
| 2453 void FullCodeGenerator::EmitResolvePossiblyDirectEval(int arg_count) { | 2453 void FullCodeGenerator::EmitResolvePossiblyDirectEval(int arg_count) { |
| 2454 ASM_LOCATION("FullCodeGenerator::EmitResolvePossiblyDirectEval"); | 2454 ASM_LOCATION("FullCodeGenerator::EmitResolvePossiblyDirectEval"); |
| 2455 // Prepare to push a copy of the first argument or undefined if it doesn't | 2455 // Prepare to push a copy of the first argument or undefined if it doesn't |
| 2456 // exist. | 2456 // exist. |
| 2457 if (arg_count > 0) { | 2457 if (arg_count > 0) { |
| 2458 __ Peek(x10, arg_count * kXRegSize); | 2458 __ Peek(x9, arg_count * kXRegSize); |
| 2459 } else { | 2459 } else { |
| 2460 __ LoadRoot(x10, Heap::kUndefinedValueRootIndex); | 2460 __ LoadRoot(x9, Heap::kUndefinedValueRootIndex); |
| 2461 } | 2461 } |
| 2462 | 2462 |
| 2463 __ Ldr(x10, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset)); |
| 2463 // Prepare to push the receiver of the enclosing function. | 2464 // Prepare to push the receiver of the enclosing function. |
| 2464 int receiver_offset = 2 + info_->scope()->num_parameters(); | 2465 int receiver_offset = 2 + info_->scope()->num_parameters(); |
| 2465 __ Ldr(x11, MemOperand(fp, receiver_offset * kPointerSize)); | 2466 __ Ldr(x11, MemOperand(fp, receiver_offset * kPointerSize)); |
| 2466 | 2467 |
| 2467 // Prepare to push the language mode. | 2468 // Prepare to push the language mode. |
| 2468 __ Mov(x12, Smi::FromInt(strict_mode())); | 2469 __ Mov(x12, Smi::FromInt(strict_mode())); |
| 2469 // Prepare to push the start position of the scope the calls resides in. | 2470 // Prepare to push the start position of the scope the calls resides in. |
| 2470 __ Mov(x13, Smi::FromInt(scope()->start_position())); | 2471 __ Mov(x13, Smi::FromInt(scope()->start_position())); |
| 2471 | 2472 |
| 2472 // Push. | 2473 // Push. |
| 2473 __ Push(x10, x11, x12, x13); | 2474 __ Push(x9, x10, x11, x12, x13); |
| 2474 | 2475 |
| 2475 // Do the runtime call. | 2476 // Do the runtime call. |
| 2476 __ CallRuntime(Runtime::kResolvePossiblyDirectEval, 5); | 2477 __ CallRuntime(Runtime::kResolvePossiblyDirectEval, 6); |
| 2477 } | 2478 } |
| 2478 | 2479 |
| 2479 | 2480 |
| 2480 void FullCodeGenerator::VisitCall(Call* expr) { | 2481 void FullCodeGenerator::VisitCall(Call* expr) { |
| 2481 #ifdef DEBUG | 2482 #ifdef DEBUG |
| 2482 // We want to verify that RecordJSReturnSite gets called on all paths | 2483 // We want to verify that RecordJSReturnSite gets called on all paths |
| 2483 // through this function. Avoid early returns. | 2484 // through this function. Avoid early returns. |
| 2484 expr->return_is_recorded_ = false; | 2485 expr->return_is_recorded_ = false; |
| 2485 #endif | 2486 #endif |
| 2486 | 2487 |
| (...skipping 2509 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4996 return previous_; | 4997 return previous_; |
| 4997 } | 4998 } |
| 4998 | 4999 |
| 4999 | 5000 |
| 5000 #undef __ | 5001 #undef __ |
| 5001 | 5002 |
| 5002 | 5003 |
| 5003 } } // namespace v8::internal | 5004 } } // namespace v8::internal |
| 5004 | 5005 |
| 5005 #endif // V8_TARGET_ARCH_ARM64 | 5006 #endif // V8_TARGET_ARCH_ARM64 |
| OLD | NEW |