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

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

Issue 381633002: Use a register spec for StoreIC and KeyedStoreIC. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Code comments. 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/debug-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/bootstrapper.h" 9 #include "src/bootstrapper.h"
10 #include "src/code-stubs.h" 10 #include "src/code-stubs.h"
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 // x2: length 95 // x2: length
96 // x1: index (of last match) 96 // x1: index (of last match)
97 // x0: string 97 // x0: string
98 Register registers[] = { x2, x1, x0 }; 98 Register registers[] = { x2, x1, x0 };
99 descriptor->Initialize( 99 descriptor->Initialize(
100 ARRAY_SIZE(registers), registers, 100 ARRAY_SIZE(registers), registers,
101 Runtime::FunctionForId(Runtime::kRegExpConstructResult)->entry); 101 Runtime::FunctionForId(Runtime::kRegExpConstructResult)->entry);
102 } 102 }
103 103
104 104
105 void KeyedStoreFastElementStub::InitializeInterfaceDescriptor(
106 CodeStubInterfaceDescriptor* descriptor) {
107 // x2: receiver
108 // x1: key
109 // x0: value
110 Register registers[] = { x2, x1, x0 };
111 descriptor->Initialize(
112 ARRAY_SIZE(registers), registers,
113 FUNCTION_ADDR(KeyedStoreIC_MissFromStubFailure));
114 }
115
116
117 void TransitionElementsKindStub::InitializeInterfaceDescriptor( 105 void TransitionElementsKindStub::InitializeInterfaceDescriptor(
118 CodeStubInterfaceDescriptor* descriptor) { 106 CodeStubInterfaceDescriptor* descriptor) {
119 // x0: value (js_array) 107 // x0: value (js_array)
120 // x1: to_map 108 // x1: to_map
121 Register registers[] = { x0, x1 }; 109 Register registers[] = { x0, x1 };
122 Address entry = 110 Address entry =
123 Runtime::FunctionForId(Runtime::kTransitionElementsKind)->entry; 111 Runtime::FunctionForId(Runtime::kTransitionElementsKind)->entry;
124 descriptor->Initialize(ARRAY_SIZE(registers), registers, 112 descriptor->Initialize(ARRAY_SIZE(registers), registers,
125 FUNCTION_ADDR(entry)); 113 FUNCTION_ADDR(entry));
126 } 114 }
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 CodeStubInterfaceDescriptor* descriptor) { 231 CodeStubInterfaceDescriptor* descriptor) {
244 // x0: value 232 // x0: value
245 Register registers[] = { x0 }; 233 Register registers[] = { x0 };
246 descriptor->Initialize(ARRAY_SIZE(registers), registers, 234 descriptor->Initialize(ARRAY_SIZE(registers), registers,
247 FUNCTION_ADDR(ToBooleanIC_Miss)); 235 FUNCTION_ADDR(ToBooleanIC_Miss));
248 descriptor->SetMissHandler( 236 descriptor->SetMissHandler(
249 ExternalReference(IC_Utility(IC::kToBooleanIC_Miss), isolate())); 237 ExternalReference(IC_Utility(IC::kToBooleanIC_Miss), isolate()));
250 } 238 }
251 239
252 240
253 void StoreGlobalStub::InitializeInterfaceDescriptor(
254 CodeStubInterfaceDescriptor* descriptor) {
255 // x1: receiver
256 // x2: key (unused)
257 // x0: value
258 Register registers[] = { x1, x2, x0 };
259 descriptor->Initialize(ARRAY_SIZE(registers), registers,
260 FUNCTION_ADDR(StoreIC_MissFromStubFailure));
261 }
262
263
264 void ElementsTransitionAndStoreStub::InitializeInterfaceDescriptor( 241 void ElementsTransitionAndStoreStub::InitializeInterfaceDescriptor(
265 CodeStubInterfaceDescriptor* descriptor) { 242 CodeStubInterfaceDescriptor* descriptor) {
266 // x0: value 243 // x0: value
267 // x3: target map 244 // x3: target map
268 // x1: key 245 // x1: key
269 // x2: receiver 246 // x2: receiver
270 Register registers[] = { x0, x3, x1, x2 }; 247 Register registers[] = { x0, x3, x1, x2 };
271 descriptor->Initialize(ARRAY_SIZE(registers), registers, 248 descriptor->Initialize(ARRAY_SIZE(registers), registers,
272 FUNCTION_ADDR(ElementsTransitionAndStoreIC_Miss)); 249 FUNCTION_ADDR(ElementsTransitionAndStoreIC_Miss));
273 } 250 }
(...skipping 5152 matching lines...) Expand 10 before | Expand all | Expand 10 after
5426 MemOperand(fp, 6 * kPointerSize), 5403 MemOperand(fp, 6 * kPointerSize),
5427 NULL); 5404 NULL);
5428 } 5405 }
5429 5406
5430 5407
5431 #undef __ 5408 #undef __
5432 5409
5433 } } // namespace v8::internal 5410 } } // namespace v8::internal
5434 5411
5435 #endif // V8_TARGET_ARCH_ARM64 5412 #endif // V8_TARGET_ARCH_ARM64
OLDNEW
« no previous file with comments | « src/arm/stub-cache-arm.cc ('k') | src/arm64/debug-arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698