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

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

Issue 400523007: Cache IC handlers on the prototype's map if possible (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: addressed comment Created 6 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « src/arm/stub-cache-arm.cc ('k') | src/arm64/stub-cache-arm64.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/arm64/assembler-arm64.h" 9 #include "src/arm64/assembler-arm64.h"
10 #include "src/code-stubs.h" 10 #include "src/code-stubs.h"
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 362
363 363
364 void LoadIC::GenerateMegamorphic(MacroAssembler* masm) { 364 void LoadIC::GenerateMegamorphic(MacroAssembler* masm) {
365 // The return address is in lr. 365 // The return address is in lr.
366 Register receiver = ReceiverRegister(); 366 Register receiver = ReceiverRegister();
367 Register name = NameRegister(); 367 Register name = NameRegister();
368 ASSERT(receiver.is(x1)); 368 ASSERT(receiver.is(x1));
369 ASSERT(name.is(x2)); 369 ASSERT(name.is(x2));
370 370
371 // Probe the stub cache. 371 // Probe the stub cache.
372 Code::Flags flags = Code::ComputeHandlerFlags(Code::LOAD_IC); 372 Code::Flags flags = Code::RemoveTypeAndHolderFromFlags(
373 Code::ComputeHandlerFlags(Code::LOAD_IC));
373 masm->isolate()->stub_cache()->GenerateProbe( 374 masm->isolate()->stub_cache()->GenerateProbe(
374 masm, flags, receiver, name, x3, x4, x5, x6); 375 masm, flags, receiver, name, x3, x4, x5, x6);
375 376
376 // Cache miss: Jump to runtime. 377 // Cache miss: Jump to runtime.
377 GenerateMiss(masm); 378 GenerateMiss(masm);
378 } 379 }
379 380
380 381
381 void LoadIC::GenerateNormal(MacroAssembler* masm) { 382 void LoadIC::GenerateNormal(MacroAssembler* masm) {
382 Register dictionary = x0; 383 Register dictionary = x0;
(...skipping 732 matching lines...) Expand 10 before | Expand all | Expand 10 after
1115 elements_map, elements); 1116 elements_map, elements);
1116 } 1117 }
1117 1118
1118 1119
1119 void StoreIC::GenerateMegamorphic(MacroAssembler* masm) { 1120 void StoreIC::GenerateMegamorphic(MacroAssembler* masm) {
1120 Register receiver = ReceiverRegister(); 1121 Register receiver = ReceiverRegister();
1121 Register name = NameRegister(); 1122 Register name = NameRegister();
1122 ASSERT(!AreAliased(receiver, name, ValueRegister(), x3, x4, x5, x6)); 1123 ASSERT(!AreAliased(receiver, name, ValueRegister(), x3, x4, x5, x6));
1123 1124
1124 // Probe the stub cache. 1125 // Probe the stub cache.
1125 Code::Flags flags = Code::ComputeHandlerFlags(Code::STORE_IC); 1126 Code::Flags flags = Code::RemoveTypeAndHolderFromFlags(
1127 Code::ComputeHandlerFlags(Code::STORE_IC));
1126 masm->isolate()->stub_cache()->GenerateProbe( 1128 masm->isolate()->stub_cache()->GenerateProbe(
1127 masm, flags, receiver, name, x3, x4, x5, x6); 1129 masm, flags, receiver, name, x3, x4, x5, x6);
1128 1130
1129 // Cache miss: Jump to runtime. 1131 // Cache miss: Jump to runtime.
1130 GenerateMiss(masm); 1132 GenerateMiss(masm);
1131 } 1133 }
1132 1134
1133 1135
1134 void StoreIC::GenerateMiss(MacroAssembler* masm) { 1136 void StoreIC::GenerateMiss(MacroAssembler* masm) {
1135 __ Push(ReceiverRegister(), NameRegister(), ValueRegister()); 1137 __ Push(ReceiverRegister(), NameRegister(), ValueRegister());
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
1281 ASSERT(to_patch->Mask(TestBranchMask) == TBNZ); 1283 ASSERT(to_patch->Mask(TestBranchMask) == TBNZ);
1282 // This is JumpIfSmi(smi_reg, branch_imm). 1284 // This is JumpIfSmi(smi_reg, branch_imm).
1283 patcher.tbz(smi_reg, 0, branch_imm); 1285 patcher.tbz(smi_reg, 0, branch_imm);
1284 } 1286 }
1285 } 1287 }
1286 1288
1287 1289
1288 } } // namespace v8::internal 1290 } } // namespace v8::internal
1289 1291
1290 #endif // V8_TARGET_ARCH_ARM64 1292 #endif // V8_TARGET_ARCH_ARM64
OLDNEW
« no previous file with comments | « src/arm/stub-cache-arm.cc ('k') | src/arm64/stub-cache-arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698