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

Side by Side Diff: src/ic/arm64/ic-arm64.cc

Issue 754303003: Flesh out vector ic state query and set mechanisms. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: REBASE. Created 6 years 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
« no previous file with comments | « src/ic/arm/ic-arm.cc ('k') | src/ic/ia32/ic-ia32.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #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/codegen.h" 9 #include "src/codegen.h"
10 #include "src/ic/ic.h" 10 #include "src/ic/ic.h"
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 350
351 351
352 void LoadIC::GenerateMiss(MacroAssembler* masm) { 352 void LoadIC::GenerateMiss(MacroAssembler* masm) {
353 // The return address is in lr. 353 // The return address is in lr.
354 Isolate* isolate = masm->isolate(); 354 Isolate* isolate = masm->isolate();
355 ASM_LOCATION("LoadIC::GenerateMiss"); 355 ASM_LOCATION("LoadIC::GenerateMiss");
356 356
357 __ IncrementCounter(isolate->counters()->load_miss(), 1, x3, x4); 357 __ IncrementCounter(isolate->counters()->load_miss(), 1, x3, x4);
358 358
359 // Perform tail call to the entry. 359 // Perform tail call to the entry.
360 __ Push(LoadDescriptor::ReceiverRegister(), LoadDescriptor::NameRegister()); 360 if (FLAG_vector_ics) {
361 __ Push(VectorLoadICDescriptor::ReceiverRegister(),
362 VectorLoadICDescriptor::NameRegister(),
363 VectorLoadICDescriptor::SlotRegister(),
364 VectorLoadICDescriptor::VectorRegister());
365 } else {
366 __ Push(LoadDescriptor::ReceiverRegister(), LoadDescriptor::NameRegister());
367 }
361 ExternalReference ref = ExternalReference(IC_Utility(kLoadIC_Miss), isolate); 368 ExternalReference ref = ExternalReference(IC_Utility(kLoadIC_Miss), isolate);
362 __ TailCallExternalReference(ref, 2, 1); 369 int arg_count = FLAG_vector_ics ? 4 : 2;
370 __ TailCallExternalReference(ref, arg_count, 1);
363 } 371 }
364 372
365 373
366 void LoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) { 374 void LoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) {
367 // The return address is in lr. 375 // The return address is in lr.
368 __ Push(LoadDescriptor::ReceiverRegister(), LoadDescriptor::NameRegister()); 376 __ Push(LoadDescriptor::ReceiverRegister(), LoadDescriptor::NameRegister());
369 __ TailCallRuntime(Runtime::kGetProperty, 2, 1); 377 __ TailCallRuntime(Runtime::kGetProperty, 2, 1);
370 } 378 }
371 379
372 380
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 GenerateMiss(masm); 423 GenerateMiss(masm);
416 } 424 }
417 425
418 426
419 void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) { 427 void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) {
420 // The return address is in lr. 428 // The return address is in lr.
421 Isolate* isolate = masm->isolate(); 429 Isolate* isolate = masm->isolate();
422 430
423 __ IncrementCounter(isolate->counters()->keyed_load_miss(), 1, x10, x11); 431 __ IncrementCounter(isolate->counters()->keyed_load_miss(), 1, x10, x11);
424 432
425 __ Push(LoadDescriptor::ReceiverRegister(), LoadDescriptor::NameRegister()); 433 if (FLAG_vector_ics) {
434 __ Push(VectorLoadICDescriptor::ReceiverRegister(),
435 VectorLoadICDescriptor::NameRegister(),
436 VectorLoadICDescriptor::SlotRegister(),
437 VectorLoadICDescriptor::VectorRegister());
438 } else {
439 __ Push(LoadDescriptor::ReceiverRegister(), LoadDescriptor::NameRegister());
440 }
426 441
427 // Perform tail call to the entry. 442 // Perform tail call to the entry.
428 ExternalReference ref = 443 ExternalReference ref =
429 ExternalReference(IC_Utility(kKeyedLoadIC_Miss), isolate); 444 ExternalReference(IC_Utility(kKeyedLoadIC_Miss), isolate);
430 445 int arg_count = FLAG_vector_ics ? 4 : 2;
431 __ TailCallExternalReference(ref, 2, 1); 446 __ TailCallExternalReference(ref, arg_count, 1);
432 } 447 }
433 448
434 449
435 void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) { 450 void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) {
436 // The return address is in lr. 451 // The return address is in lr.
437 __ Push(LoadDescriptor::ReceiverRegister(), LoadDescriptor::NameRegister()); 452 __ Push(LoadDescriptor::ReceiverRegister(), LoadDescriptor::NameRegister());
438 __ TailCallRuntime(Runtime::kKeyedGetProperty, 2, 1); 453 __ TailCallRuntime(Runtime::kKeyedGetProperty, 2, 1);
439 } 454 }
440 455
441 456
(...skipping 578 matching lines...) Expand 10 before | Expand all | Expand 10 after
1020 } else { 1035 } else {
1021 DCHECK(to_patch->Mask(TestBranchMask) == TBNZ); 1036 DCHECK(to_patch->Mask(TestBranchMask) == TBNZ);
1022 // This is JumpIfSmi(smi_reg, branch_imm). 1037 // This is JumpIfSmi(smi_reg, branch_imm).
1023 patcher.tbz(smi_reg, 0, branch_imm); 1038 patcher.tbz(smi_reg, 0, branch_imm);
1024 } 1039 }
1025 } 1040 }
1026 } 1041 }
1027 } // namespace v8::internal 1042 } // namespace v8::internal
1028 1043
1029 #endif // V8_TARGET_ARCH_ARM64 1044 #endif // V8_TARGET_ARCH_ARM64
OLDNEW
« no previous file with comments | « src/ic/arm/ic-arm.cc ('k') | src/ic/ia32/ic-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698