Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(439)

Side by Side Diff: src/arm64/code-stubs-arm64.cc

Issue 2033423002: [builtins] Turn LoadIC_Miss and LoadIC_Slow builtins to TurboFan code stubs. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@load-ic-stub-tf
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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_ARM64 5 #if V8_TARGET_ARCH_ARM64
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 1436 matching lines...) Expand 10 before | Expand all | Expand 10 after
1447 Register receiver = LoadDescriptor::ReceiverRegister(); 1447 Register receiver = LoadDescriptor::ReceiverRegister();
1448 // Ensure that the vector and slot registers won't be clobbered before 1448 // Ensure that the vector and slot registers won't be clobbered before
1449 // calling the miss handler. 1449 // calling the miss handler.
1450 DCHECK(!AreAliased(x10, x11, LoadWithVectorDescriptor::VectorRegister(), 1450 DCHECK(!AreAliased(x10, x11, LoadWithVectorDescriptor::VectorRegister(),
1451 LoadWithVectorDescriptor::SlotRegister())); 1451 LoadWithVectorDescriptor::SlotRegister()));
1452 1452
1453 NamedLoadHandlerCompiler::GenerateLoadFunctionPrototype(masm, receiver, x10, 1453 NamedLoadHandlerCompiler::GenerateLoadFunctionPrototype(masm, receiver, x10,
1454 x11, &miss); 1454 x11, &miss);
1455 1455
1456 __ Bind(&miss); 1456 __ Bind(&miss);
1457 PropertyAccessCompiler::TailCallBuiltin( 1457 PropertyAccessCompiler::TailCallMissHandler(masm, Code::LOAD_IC);
1458 masm, PropertyAccessCompiler::MissBuiltin(Code::LOAD_IC));
1459 } 1458 }
1460 1459
1461 1460
1462 void LoadIndexedStringStub::Generate(MacroAssembler* masm) { 1461 void LoadIndexedStringStub::Generate(MacroAssembler* masm) {
1463 // Return address is in lr. 1462 // Return address is in lr.
1464 Label miss; 1463 Label miss;
1465 1464
1466 Register receiver = LoadDescriptor::ReceiverRegister(); 1465 Register receiver = LoadDescriptor::ReceiverRegister();
1467 Register index = LoadDescriptor::NameRegister(); 1466 Register index = LoadDescriptor::NameRegister();
1468 Register result = x0; 1467 Register result = x0;
(...skipping 10 matching lines...) Expand all
1479 &miss, // When not a number. 1478 &miss, // When not a number.
1480 &miss, // When index out of range. 1479 &miss, // When index out of range.
1481 RECEIVER_IS_STRING); 1480 RECEIVER_IS_STRING);
1482 char_at_generator.GenerateFast(masm); 1481 char_at_generator.GenerateFast(masm);
1483 __ Ret(); 1482 __ Ret();
1484 1483
1485 StubRuntimeCallHelper call_helper; 1484 StubRuntimeCallHelper call_helper;
1486 char_at_generator.GenerateSlow(masm, PART_OF_IC_HANDLER, call_helper); 1485 char_at_generator.GenerateSlow(masm, PART_OF_IC_HANDLER, call_helper);
1487 1486
1488 __ Bind(&miss); 1487 __ Bind(&miss);
1489 PropertyAccessCompiler::TailCallBuiltin( 1488 PropertyAccessCompiler::TailCallMissHandler(masm, Code::KEYED_LOAD_IC);
1490 masm, PropertyAccessCompiler::MissBuiltin(Code::KEYED_LOAD_IC));
1491 } 1489 }
1492 1490
1493 1491
1494 void RegExpExecStub::Generate(MacroAssembler* masm) { 1492 void RegExpExecStub::Generate(MacroAssembler* masm) {
1495 #ifdef V8_INTERPRETED_REGEXP 1493 #ifdef V8_INTERPRETED_REGEXP
1496 __ TailCallRuntime(Runtime::kRegExpExec); 1494 __ TailCallRuntime(Runtime::kRegExpExec);
1497 #else // V8_INTERPRETED_REGEXP 1495 #else // V8_INTERPRETED_REGEXP
1498 1496
1499 // Stack frame on entry. 1497 // Stack frame on entry.
1500 // jssp[0]: last_match_info (expected JSArray) 1498 // jssp[0]: last_match_info (expected JSArray)
(...skipping 4333 matching lines...) Expand 10 before | Expand all | Expand 10 after
5834 kStackUnwindSpace, NULL, spill_offset, 5832 kStackUnwindSpace, NULL, spill_offset,
5835 return_value_operand, NULL); 5833 return_value_operand, NULL);
5836 } 5834 }
5837 5835
5838 #undef __ 5836 #undef __
5839 5837
5840 } // namespace internal 5838 } // namespace internal
5841 } // namespace v8 5839 } // namespace v8
5842 5840
5843 #endif // V8_TARGET_ARCH_ARM64 5841 #endif // V8_TARGET_ARCH_ARM64
OLDNEW
« no previous file with comments | « src/arm/code-stubs-arm.cc ('k') | src/builtins.h » ('j') | src/code-stubs.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698