| 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 #if V8_TARGET_ARCH_X64 | 5 #if V8_TARGET_ARCH_X64 |
| 6 | 6 |
| 7 #include "src/code-stubs.h" | 7 #include "src/code-stubs.h" |
| 8 #include "src/api-arguments.h" | 8 #include "src/api-arguments.h" |
| 9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" |
| 10 #include "src/codegen.h" | 10 #include "src/codegen.h" |
| (...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 504 Label miss; | 504 Label miss; |
| 505 Register receiver = LoadDescriptor::ReceiverRegister(); | 505 Register receiver = LoadDescriptor::ReceiverRegister(); |
| 506 // Ensure that the vector and slot registers won't be clobbered before | 506 // Ensure that the vector and slot registers won't be clobbered before |
| 507 // calling the miss handler. | 507 // calling the miss handler. |
| 508 DCHECK(!AreAliased(r8, r9, LoadWithVectorDescriptor::VectorRegister(), | 508 DCHECK(!AreAliased(r8, r9, LoadWithVectorDescriptor::VectorRegister(), |
| 509 LoadDescriptor::SlotRegister())); | 509 LoadDescriptor::SlotRegister())); |
| 510 | 510 |
| 511 NamedLoadHandlerCompiler::GenerateLoadFunctionPrototype(masm, receiver, r8, | 511 NamedLoadHandlerCompiler::GenerateLoadFunctionPrototype(masm, receiver, r8, |
| 512 r9, &miss); | 512 r9, &miss); |
| 513 __ bind(&miss); | 513 __ bind(&miss); |
| 514 PropertyAccessCompiler::TailCallBuiltin( | 514 PropertyAccessCompiler::TailCallMissHandler(masm, Code::LOAD_IC); |
| 515 masm, PropertyAccessCompiler::MissBuiltin(Code::LOAD_IC)); | |
| 516 } | 515 } |
| 517 | 516 |
| 518 | 517 |
| 519 void LoadIndexedStringStub::Generate(MacroAssembler* masm) { | 518 void LoadIndexedStringStub::Generate(MacroAssembler* masm) { |
| 520 // Return address is on the stack. | 519 // Return address is on the stack. |
| 521 Label miss; | 520 Label miss; |
| 522 | 521 |
| 523 Register receiver = LoadDescriptor::ReceiverRegister(); | 522 Register receiver = LoadDescriptor::ReceiverRegister(); |
| 524 Register index = LoadDescriptor::NameRegister(); | 523 Register index = LoadDescriptor::NameRegister(); |
| 525 Register scratch = rdi; | 524 Register scratch = rdi; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 536 &miss, // When not a number. | 535 &miss, // When not a number. |
| 537 &miss, // When index out of range. | 536 &miss, // When index out of range. |
| 538 RECEIVER_IS_STRING); | 537 RECEIVER_IS_STRING); |
| 539 char_at_generator.GenerateFast(masm); | 538 char_at_generator.GenerateFast(masm); |
| 540 __ ret(0); | 539 __ ret(0); |
| 541 | 540 |
| 542 StubRuntimeCallHelper call_helper; | 541 StubRuntimeCallHelper call_helper; |
| 543 char_at_generator.GenerateSlow(masm, PART_OF_IC_HANDLER, call_helper); | 542 char_at_generator.GenerateSlow(masm, PART_OF_IC_HANDLER, call_helper); |
| 544 | 543 |
| 545 __ bind(&miss); | 544 __ bind(&miss); |
| 546 PropertyAccessCompiler::TailCallBuiltin( | 545 PropertyAccessCompiler::TailCallMissHandler(masm, Code::KEYED_LOAD_IC); |
| 547 masm, PropertyAccessCompiler::MissBuiltin(Code::KEYED_LOAD_IC)); | |
| 548 } | 546 } |
| 549 | 547 |
| 550 | 548 |
| 551 void RegExpExecStub::Generate(MacroAssembler* masm) { | 549 void RegExpExecStub::Generate(MacroAssembler* masm) { |
| 552 // Just jump directly to runtime if native RegExp is not selected at compile | 550 // Just jump directly to runtime if native RegExp is not selected at compile |
| 553 // time or if regexp entry in generated code is turned off runtime switch or | 551 // time or if regexp entry in generated code is turned off runtime switch or |
| 554 // at compilation. | 552 // at compilation. |
| 555 #ifdef V8_INTERPRETED_REGEXP | 553 #ifdef V8_INTERPRETED_REGEXP |
| 556 __ TailCallRuntime(Runtime::kRegExpExec); | 554 __ TailCallRuntime(Runtime::kRegExpExec); |
| 557 #else // V8_INTERPRETED_REGEXP | 555 #else // V8_INTERPRETED_REGEXP |
| (...skipping 4885 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5443 kStackUnwindSpace, nullptr, return_value_operand, | 5441 kStackUnwindSpace, nullptr, return_value_operand, |
| 5444 NULL); | 5442 NULL); |
| 5445 } | 5443 } |
| 5446 | 5444 |
| 5447 #undef __ | 5445 #undef __ |
| 5448 | 5446 |
| 5449 } // namespace internal | 5447 } // namespace internal |
| 5450 } // namespace v8 | 5448 } // namespace v8 |
| 5451 | 5449 |
| 5452 #endif // V8_TARGET_ARCH_X64 | 5450 #endif // V8_TARGET_ARCH_X64 |
| OLD | NEW |