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

Side by Side Diff: src/interface-descriptors.cc

Issue 2172223002: [stubs] Call interface descriptors cleanup. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@store-ic-tf
Patch Set: Addressing comments Created 4 years, 4 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
« no previous file with comments | « src/interface-descriptors.h ('k') | src/interpreter/interpreter.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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/interface-descriptors.h" 5 #include "src/interface-descriptors.h"
6 6
7 namespace v8 { 7 namespace v8 {
8 namespace internal { 8 namespace internal {
9 9
10 namespace { 10 namespace {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 76
77 void VoidDescriptor::InitializePlatformSpecific( 77 void VoidDescriptor::InitializePlatformSpecific(
78 CallInterfaceDescriptorData* data) { 78 CallInterfaceDescriptorData* data) {
79 data->InitializePlatformSpecific(0, nullptr); 79 data->InitializePlatformSpecific(0, nullptr);
80 } 80 }
81 81
82 FunctionType* LoadDescriptor::BuildCallInterfaceDescriptorFunctionType( 82 FunctionType* LoadDescriptor::BuildCallInterfaceDescriptorFunctionType(
83 Isolate* isolate, int parameter_count) { 83 Isolate* isolate, int parameter_count) {
84 Zone* zone = isolate->interface_descriptor_zone(); 84 Zone* zone = isolate->interface_descriptor_zone();
85 FunctionType* function = 85 FunctionType* function =
86 Type::Function(AnyTagged(zone), Type::Undefined(), 3, zone)->AsFunction(); 86 Type::Function(AnyTagged(zone), Type::Undefined(), kParameterCount, zone)
87 function->InitParameter(0, AnyTagged(zone)); 87 ->AsFunction();
88 function->InitParameter(1, AnyTagged(zone)); 88 function->InitParameter(kReceiver, AnyTagged(zone));
89 function->InitParameter(2, SmiType(zone)); 89 function->InitParameter(kName, AnyTagged(zone));
90 function->InitParameter(kSlot, SmiType(zone));
90 return function; 91 return function;
91 } 92 }
92 93
93 94
94 void LoadDescriptor::InitializePlatformSpecific( 95 void LoadDescriptor::InitializePlatformSpecific(
95 CallInterfaceDescriptorData* data) { 96 CallInterfaceDescriptorData* data) {
96 Register registers[] = {ReceiverRegister(), NameRegister(), SlotRegister()}; 97 Register registers[] = {ReceiverRegister(), NameRegister(), SlotRegister()};
97 data->InitializePlatformSpecific(arraysize(registers), registers); 98 data->InitializePlatformSpecific(arraysize(registers), registers);
98 } 99 }
99 100
100 FunctionType* LoadGlobalDescriptor::BuildCallInterfaceDescriptorFunctionType( 101 FunctionType* LoadGlobalDescriptor::BuildCallInterfaceDescriptorFunctionType(
101 Isolate* isolate, int parameter_count) { 102 Isolate* isolate, int parameter_count) {
102 Zone* zone = isolate->interface_descriptor_zone(); 103 Zone* zone = isolate->interface_descriptor_zone();
103 FunctionType* function = 104 FunctionType* function =
104 Type::Function(AnyTagged(zone), Type::Undefined(), 1, zone)->AsFunction(); 105 Type::Function(AnyTagged(zone), Type::Undefined(), kParameterCount, zone)
105 function->InitParameter(0, SmiType(zone)); 106 ->AsFunction();
107 function->InitParameter(kSlot, SmiType(zone));
106 return function; 108 return function;
107 } 109 }
108 110
109 void LoadGlobalDescriptor::InitializePlatformSpecific( 111 void LoadGlobalDescriptor::InitializePlatformSpecific(
110 CallInterfaceDescriptorData* data) { 112 CallInterfaceDescriptorData* data) {
111 Register registers[] = {LoadWithVectorDescriptor::SlotRegister()}; 113 Register registers[] = {LoadWithVectorDescriptor::SlotRegister()};
112 data->InitializePlatformSpecific(arraysize(registers), registers); 114 data->InitializePlatformSpecific(arraysize(registers), registers);
113 } 115 }
114 116
115 FunctionType* 117 FunctionType*
116 LoadGlobalWithVectorDescriptor::BuildCallInterfaceDescriptorFunctionType( 118 LoadGlobalWithVectorDescriptor::BuildCallInterfaceDescriptorFunctionType(
117 Isolate* isolate, int parameter_count) { 119 Isolate* isolate, int parameter_count) {
118 Zone* zone = isolate->interface_descriptor_zone(); 120 Zone* zone = isolate->interface_descriptor_zone();
119 FunctionType* function = 121 FunctionType* function =
120 Type::Function(AnyTagged(zone), Type::Undefined(), 2, zone)->AsFunction(); 122 Type::Function(AnyTagged(zone), Type::Undefined(), kParameterCount, zone)
121 function->InitParameter(0, SmiType(zone)); 123 ->AsFunction();
122 function->InitParameter(1, AnyTagged(zone)); 124 function->InitParameter(kSlot, SmiType(zone));
125 function->InitParameter(kVector, AnyTagged(zone));
123 return function; 126 return function;
124 } 127 }
125 128
126 void LoadGlobalWithVectorDescriptor::InitializePlatformSpecific( 129 void LoadGlobalWithVectorDescriptor::InitializePlatformSpecific(
127 CallInterfaceDescriptorData* data) { 130 CallInterfaceDescriptorData* data) {
128 Register registers[] = {LoadWithVectorDescriptor::SlotRegister(), 131 Register registers[] = {LoadWithVectorDescriptor::SlotRegister(),
129 LoadWithVectorDescriptor::VectorRegister()}; 132 LoadWithVectorDescriptor::VectorRegister()};
130 data->InitializePlatformSpecific(arraysize(registers), registers); 133 data->InitializePlatformSpecific(arraysize(registers), registers);
131 } 134 }
132 135
133 FunctionType* StoreDescriptor::BuildCallInterfaceDescriptorFunctionType( 136 FunctionType* StoreDescriptor::BuildCallInterfaceDescriptorFunctionType(
134 Isolate* isolate, int parameter_count) { 137 Isolate* isolate, int parameter_count) {
135 Zone* zone = isolate->interface_descriptor_zone(); 138 Zone* zone = isolate->interface_descriptor_zone();
136 FunctionType* function = 139 FunctionType* function =
137 Type::Function(AnyTagged(zone), Type::Undefined(), 4, zone)->AsFunction(); 140 Type::Function(AnyTagged(zone), Type::Undefined(), kParameterCount, zone)
138 function->InitParameter(0, AnyTagged(zone)); 141 ->AsFunction();
139 function->InitParameter(1, AnyTagged(zone)); 142 function->InitParameter(kReceiver, AnyTagged(zone));
140 function->InitParameter(2, AnyTagged(zone)); 143 function->InitParameter(kName, AnyTagged(zone));
141 function->InitParameter(3, SmiType(zone)); 144 function->InitParameter(kValue, AnyTagged(zone));
145 function->InitParameter(kSlot, SmiType(zone));
142 return function; 146 return function;
143 } 147 }
144 148
145 void StoreDescriptor::InitializePlatformSpecific( 149 void StoreDescriptor::InitializePlatformSpecific(
146 CallInterfaceDescriptorData* data) { 150 CallInterfaceDescriptorData* data) {
147 Register registers[] = {ReceiverRegister(), NameRegister(), ValueRegister(), 151 Register registers[] = {ReceiverRegister(), NameRegister(), ValueRegister(),
148 SlotRegister()}; 152 SlotRegister()};
149 data->InitializePlatformSpecific(arraysize(registers), registers); 153 data->InitializePlatformSpecific(arraysize(registers), registers);
150 } 154 }
151 155
(...skipping 19 matching lines...) Expand all
171 SlotRegister(), VectorRegister()}; 175 SlotRegister(), VectorRegister()};
172 data->InitializePlatformSpecific(arraysize(registers), registers); 176 data->InitializePlatformSpecific(arraysize(registers), registers);
173 } 177 }
174 } 178 }
175 179
176 FunctionType* 180 FunctionType*
177 StoreTransitionDescriptor::BuildCallInterfaceDescriptorFunctionType( 181 StoreTransitionDescriptor::BuildCallInterfaceDescriptorFunctionType(
178 Isolate* isolate, int parameter_count) { 182 Isolate* isolate, int parameter_count) {
179 Zone* zone = isolate->interface_descriptor_zone(); 183 Zone* zone = isolate->interface_descriptor_zone();
180 FunctionType* function = 184 FunctionType* function =
181 Type::Function(AnyTagged(zone), Type::Undefined(), 4, zone)->AsFunction(); 185 Type::Function(AnyTagged(zone), Type::Undefined(), kParameterCount, zone)
182 function->InitParameter(0, AnyTagged(zone)); // Receiver 186 ->AsFunction();
183 function->InitParameter(1, AnyTagged(zone)); // Name 187 function->InitParameter(kReceiver, AnyTagged(zone));
184 function->InitParameter(2, AnyTagged(zone)); // Value 188 function->InitParameter(kName, AnyTagged(zone));
185 function->InitParameter(3, AnyTagged(zone)); // Map 189 function->InitParameter(kValue, AnyTagged(zone));
190 function->InitParameter(kMap, AnyTagged(zone));
186 return function; 191 return function;
187 } 192 }
188 193
189 FunctionType* 194 FunctionType*
190 StoreGlobalViaContextDescriptor::BuildCallInterfaceDescriptorFunctionType( 195 StoreGlobalViaContextDescriptor::BuildCallInterfaceDescriptorFunctionType(
191 Isolate* isolate, int parameter_count) { 196 Isolate* isolate, int parameter_count) {
192 Zone* zone = isolate->interface_descriptor_zone(); 197 Zone* zone = isolate->interface_descriptor_zone();
193 FunctionType* function = 198 FunctionType* function =
194 Type::Function(AnyTagged(zone), Type::Undefined(), 2, zone)->AsFunction(); 199 Type::Function(AnyTagged(zone), Type::Undefined(), kParameterCount, zone)
195 function->InitParameter(0, UntaggedIntegral32(zone)); 200 ->AsFunction();
196 function->InitParameter(1, AnyTagged(zone)); 201 function->InitParameter(kSlot, UntaggedIntegral32(zone));
202 function->InitParameter(kValue, AnyTagged(zone));
197 return function; 203 return function;
198 } 204 }
199 205
200 206
201 void StoreGlobalViaContextDescriptor::InitializePlatformSpecific( 207 void StoreGlobalViaContextDescriptor::InitializePlatformSpecific(
202 CallInterfaceDescriptorData* data) { 208 CallInterfaceDescriptorData* data) {
203 Register registers[] = {SlotRegister(), ValueRegister()}; 209 Register registers[] = {SlotRegister(), ValueRegister()};
204 data->InitializePlatformSpecific(arraysize(registers), registers); 210 data->InitializePlatformSpecific(arraysize(registers), registers);
205 } 211 }
206 212
(...skipping 20 matching lines...) Expand all
227 CallInterfaceDescriptorData* data) { 233 CallInterfaceDescriptorData* data) {
228 Register registers[] = {exponent()}; 234 Register registers[] = {exponent()};
229 data->InitializePlatformSpecific(arraysize(registers), registers); 235 data->InitializePlatformSpecific(arraysize(registers), registers);
230 } 236 }
231 237
232 FunctionType* 238 FunctionType*
233 LoadWithVectorDescriptor::BuildCallInterfaceDescriptorFunctionType( 239 LoadWithVectorDescriptor::BuildCallInterfaceDescriptorFunctionType(
234 Isolate* isolate, int parameter_count) { 240 Isolate* isolate, int parameter_count) {
235 Zone* zone = isolate->interface_descriptor_zone(); 241 Zone* zone = isolate->interface_descriptor_zone();
236 FunctionType* function = 242 FunctionType* function =
237 Type::Function(AnyTagged(zone), Type::Undefined(), 4, zone)->AsFunction(); 243 Type::Function(AnyTagged(zone), Type::Undefined(), kParameterCount, zone)
238 function->InitParameter(0, AnyTagged(zone)); 244 ->AsFunction();
239 function->InitParameter(1, AnyTagged(zone)); 245 function->InitParameter(kReceiver, AnyTagged(zone));
240 function->InitParameter(2, SmiType(zone)); 246 function->InitParameter(kName, AnyTagged(zone));
241 function->InitParameter(3, AnyTagged(zone)); 247 function->InitParameter(kSlot, SmiType(zone));
248 function->InitParameter(kVector, AnyTagged(zone));
242 return function; 249 return function;
243 } 250 }
244 251
245 252
246 void LoadWithVectorDescriptor::InitializePlatformSpecific( 253 void LoadWithVectorDescriptor::InitializePlatformSpecific(
247 CallInterfaceDescriptorData* data) { 254 CallInterfaceDescriptorData* data) {
248 Register registers[] = {ReceiverRegister(), NameRegister(), SlotRegister(), 255 Register registers[] = {ReceiverRegister(), NameRegister(), SlotRegister(),
249 VectorRegister()}; 256 VectorRegister()};
250 data->InitializePlatformSpecific(arraysize(registers), registers); 257 data->InitializePlatformSpecific(arraysize(registers), registers);
251 } 258 }
252 259
253 FunctionType* 260 FunctionType*
254 VectorStoreTransitionDescriptor::BuildCallInterfaceDescriptorFunctionType( 261 VectorStoreTransitionDescriptor::BuildCallInterfaceDescriptorFunctionType(
255 Isolate* isolate, int parameter_count) { 262 Isolate* isolate, int parameter_count) {
256 Zone* zone = isolate->interface_descriptor_zone(); 263 Zone* zone = isolate->interface_descriptor_zone();
257 bool has_slot = !VectorStoreTransitionDescriptor::SlotRegister().is(no_reg); 264 bool has_slot = !VectorStoreTransitionDescriptor::SlotRegister().is(no_reg);
258 int arg_count = has_slot ? 6 : 5; 265 int arg_count = has_slot ? 6 : 5;
259 FunctionType* function = 266 FunctionType* function =
260 Type::Function(AnyTagged(zone), Type::Undefined(), arg_count, zone) 267 Type::Function(AnyTagged(zone), Type::Undefined(), arg_count, zone)
261 ->AsFunction(); 268 ->AsFunction();
262 int index = 0; 269 int index = 0;
270 // TODO(ishell): use ParameterIndices here
263 function->InitParameter(index++, AnyTagged(zone)); // receiver 271 function->InitParameter(index++, AnyTagged(zone)); // receiver
264 function->InitParameter(index++, AnyTagged(zone)); // name 272 function->InitParameter(index++, AnyTagged(zone)); // name
265 function->InitParameter(index++, AnyTagged(zone)); // value 273 function->InitParameter(index++, AnyTagged(zone)); // value
266 function->InitParameter(index++, AnyTagged(zone)); // map 274 function->InitParameter(index++, AnyTagged(zone)); // map
267 if (has_slot) { 275 if (has_slot) {
268 function->InitParameter(index++, SmiType(zone)); // slot 276 function->InitParameter(index++, SmiType(zone)); // slot
269 } 277 }
270 function->InitParameter(index++, AnyTagged(zone)); // vector 278 function->InitParameter(index++, AnyTagged(zone)); // vector
271 return function; 279 return function;
272 } 280 }
273 281
274 FunctionType* 282 FunctionType*
275 StoreWithVectorDescriptor::BuildCallInterfaceDescriptorFunctionType( 283 StoreWithVectorDescriptor::BuildCallInterfaceDescriptorFunctionType(
276 Isolate* isolate, int parameter_count) { 284 Isolate* isolate, int parameter_count) {
277 Zone* zone = isolate->interface_descriptor_zone(); 285 Zone* zone = isolate->interface_descriptor_zone();
278 FunctionType* function = 286 FunctionType* function =
279 Type::Function(AnyTagged(zone), Type::Undefined(), 5, zone)->AsFunction(); 287 Type::Function(AnyTagged(zone), Type::Undefined(), kParameterCount, zone)
280 function->InitParameter(0, AnyTagged(zone)); 288 ->AsFunction();
281 function->InitParameter(1, AnyTagged(zone)); 289 function->InitParameter(kReceiver, AnyTagged(zone));
282 function->InitParameter(2, AnyTagged(zone)); 290 function->InitParameter(kName, AnyTagged(zone));
283 function->InitParameter(3, SmiType(zone)); 291 function->InitParameter(kValue, AnyTagged(zone));
284 function->InitParameter(4, AnyTagged(zone)); 292 function->InitParameter(kSlot, SmiType(zone));
293 function->InitParameter(kVector, AnyTagged(zone));
285 return function; 294 return function;
286 } 295 }
287 296
288 void StoreWithVectorDescriptor::InitializePlatformSpecific( 297 void StoreWithVectorDescriptor::InitializePlatformSpecific(
289 CallInterfaceDescriptorData* data) { 298 CallInterfaceDescriptorData* data) {
290 Register registers[] = {ReceiverRegister(), NameRegister(), ValueRegister(), 299 Register registers[] = {ReceiverRegister(), NameRegister(), ValueRegister(),
291 SlotRegister(), VectorRegister()}; 300 SlotRegister(), VectorRegister()};
292 data->InitializePlatformSpecific(arraysize(registers), registers); 301 data->InitializePlatformSpecific(arraysize(registers), registers);
293 } 302 }
294 303
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 CallInterfaceDescriptorData* data) { 364 CallInterfaceDescriptorData* data) {
356 Register registers[] = {ObjectRegister(), KeyRegister()}; 365 Register registers[] = {ObjectRegister(), KeyRegister()};
357 data->InitializePlatformSpecific(arraysize(registers), registers); 366 data->InitializePlatformSpecific(arraysize(registers), registers);
358 } 367 }
359 368
360 FunctionType* 369 FunctionType*
361 VarArgFunctionDescriptor::BuildCallInterfaceDescriptorFunctionType( 370 VarArgFunctionDescriptor::BuildCallInterfaceDescriptorFunctionType(
362 Isolate* isolate, int parameter_count) { 371 Isolate* isolate, int parameter_count) {
363 Zone* zone = isolate->interface_descriptor_zone(); 372 Zone* zone = isolate->interface_descriptor_zone();
364 FunctionType* function = 373 FunctionType* function =
365 Type::Function(AnyTagged(zone), AnyTagged(zone), 1, zone)->AsFunction(); 374 Type::Function(AnyTagged(zone), AnyTagged(zone), kParameterCount, zone)
366 function->InitParameter(0, UntaggedIntegral32(zone)); // actual #arguments 375 ->AsFunction();
376 function->InitParameter(kActualArgumentsCount, UntaggedIntegral32(zone));
367 return function; 377 return function;
368 } 378 }
369 379
370 FunctionType* 380 FunctionType*
371 FastCloneRegExpDescriptor::BuildCallInterfaceDescriptorFunctionType( 381 FastCloneRegExpDescriptor::BuildCallInterfaceDescriptorFunctionType(
372 Isolate* isolate, int parameter_count) { 382 Isolate* isolate, int parameter_count) {
373 Zone* zone = isolate->interface_descriptor_zone(); 383 Zone* zone = isolate->interface_descriptor_zone();
374 FunctionType* function = 384 FunctionType* function =
375 Type::Function(AnyTagged(zone), Type::Undefined(), 4, zone)->AsFunction(); 385 Type::Function(AnyTagged(zone), Type::Undefined(), kParameterCount, zone)
376 function->InitParameter(0, AnyTagged(zone)); // closure 386 ->AsFunction();
377 function->InitParameter(1, SmiType(zone)); // literal_index 387 function->InitParameter(kClosure, AnyTagged(zone));
378 function->InitParameter(2, AnyTagged(zone)); // pattern 388 function->InitParameter(kLiteralIndex, SmiType(zone));
379 function->InitParameter(3, AnyTagged(zone)); // flags 389 function->InitParameter(kPattern, AnyTagged(zone));
390 function->InitParameter(kFlags, AnyTagged(zone));
380 return function; 391 return function;
381 } 392 }
382 393
383 FunctionType* 394 FunctionType*
384 FastCloneShallowArrayDescriptor::BuildCallInterfaceDescriptorFunctionType( 395 FastCloneShallowArrayDescriptor::BuildCallInterfaceDescriptorFunctionType(
385 Isolate* isolate, int parameter_count) { 396 Isolate* isolate, int parameter_count) {
386 Zone* zone = isolate->interface_descriptor_zone(); 397 Zone* zone = isolate->interface_descriptor_zone();
387 FunctionType* function = 398 FunctionType* function =
388 Type::Function(AnyTagged(zone), Type::Undefined(), 3, zone)->AsFunction(); 399 Type::Function(AnyTagged(zone), Type::Undefined(), kParameterCount, zone)
389 function->InitParameter(0, AnyTagged(zone)); 400 ->AsFunction();
390 function->InitParameter(1, SmiType(zone)); 401 function->InitParameter(kClosure, AnyTagged(zone));
391 function->InitParameter(2, AnyTagged(zone)); 402 function->InitParameter(kLiteralIndex, SmiType(zone));
403 function->InitParameter(kConstantElements, AnyTagged(zone));
392 return function; 404 return function;
393 } 405 }
394 406
395 FunctionType* 407 FunctionType*
396 CreateAllocationSiteDescriptor::BuildCallInterfaceDescriptorFunctionType( 408 CreateAllocationSiteDescriptor::BuildCallInterfaceDescriptorFunctionType(
397 Isolate* isolate, int parameter_count) { 409 Isolate* isolate, int parameter_count) {
398 Zone* zone = isolate->interface_descriptor_zone(); 410 Zone* zone = isolate->interface_descriptor_zone();
399 FunctionType* function = 411 FunctionType* function =
400 Type::Function(AnyTagged(zone), Type::Undefined(), 2, zone)->AsFunction(); 412 Type::Function(AnyTagged(zone), Type::Undefined(), kParameterCount, zone)
401 function->InitParameter(0, AnyTagged(zone)); 413 ->AsFunction();
402 function->InitParameter(1, SmiType(zone)); 414 function->InitParameter(kVector, AnyTagged(zone));
415 function->InitParameter(kSlot, SmiType(zone));
403 return function; 416 return function;
404 } 417 }
405 418
406 FunctionType* 419 FunctionType*
407 CreateWeakCellDescriptor::BuildCallInterfaceDescriptorFunctionType( 420 CreateWeakCellDescriptor::BuildCallInterfaceDescriptorFunctionType(
408 Isolate* isolate, int parameter_count) { 421 Isolate* isolate, int parameter_count) {
409 Zone* zone = isolate->interface_descriptor_zone(); 422 Zone* zone = isolate->interface_descriptor_zone();
410 FunctionType* function = 423 FunctionType* function =
411 Type::Function(AnyTagged(zone), Type::Undefined(), 3, zone)->AsFunction(); 424 Type::Function(AnyTagged(zone), Type::Undefined(), kParameterCount, zone)
412 function->InitParameter(0, AnyTagged(zone)); 425 ->AsFunction();
413 function->InitParameter(1, SmiType(zone)); 426 function->InitParameter(kVector, AnyTagged(zone));
414 function->InitParameter(2, AnyTagged(zone)); 427 function->InitParameter(kSlot, SmiType(zone));
428 function->InitParameter(kValue, AnyTagged(zone));
415 return function; 429 return function;
416 } 430 }
417 431
418 FunctionType* 432 FunctionType*
419 CallTrampolineDescriptor::BuildCallInterfaceDescriptorFunctionType( 433 CallTrampolineDescriptor::BuildCallInterfaceDescriptorFunctionType(
420 Isolate* isolate, int parameter_count) { 434 Isolate* isolate, int parameter_count) {
421 Zone* zone = isolate->interface_descriptor_zone(); 435 Zone* zone = isolate->interface_descriptor_zone();
422 FunctionType* function = 436 FunctionType* function =
423 Type::Function(AnyTagged(zone), Type::Undefined(), 2, zone)->AsFunction(); 437 Type::Function(AnyTagged(zone), Type::Undefined(), kParameterCount, zone)
424 function->InitParameter(0, AnyTagged(zone)); // target 438 ->AsFunction();
425 function->InitParameter(1, UntaggedIntegral32(zone)); // actual #arguments 439 function->InitParameter(kFunction, AnyTagged(zone));
440 function->InitParameter(kActualArgumentsCount, UntaggedIntegral32(zone));
426 return function; 441 return function;
427 } 442 }
428 443
429 FunctionType* ConstructStubDescriptor::BuildCallInterfaceDescriptorFunctionType( 444 FunctionType* ConstructStubDescriptor::BuildCallInterfaceDescriptorFunctionType(
430 Isolate* isolate, int parameter_count) { 445 Isolate* isolate, int parameter_count) {
431 Zone* zone = isolate->interface_descriptor_zone(); 446 Zone* zone = isolate->interface_descriptor_zone();
432 FunctionType* function = 447 FunctionType* function =
433 Type::Function(AnyTagged(zone), Type::Undefined(), 4, zone)->AsFunction(); 448 Type::Function(AnyTagged(zone), Type::Undefined(), kParameterCount, zone)
434 function->InitParameter(0, AnyTagged(zone)); // target 449 ->AsFunction();
435 function->InitParameter(1, AnyTagged(zone)); // new.target 450 function->InitParameter(kFunction, AnyTagged(zone));
436 function->InitParameter(2, UntaggedIntegral32(zone)); // actual #arguments 451 function->InitParameter(kNewTarget, AnyTagged(zone));
437 function->InitParameter(3, AnyTagged(zone)); // opt. allocation site 452 function->InitParameter(kActualArgumentsCount, UntaggedIntegral32(zone));
453 function->InitParameter(kAllocationSite, AnyTagged(zone));
438 return function; 454 return function;
439 } 455 }
440 456
441 FunctionType* 457 FunctionType*
442 ConstructTrampolineDescriptor::BuildCallInterfaceDescriptorFunctionType( 458 ConstructTrampolineDescriptor::BuildCallInterfaceDescriptorFunctionType(
443 Isolate* isolate, int parameter_count) { 459 Isolate* isolate, int parameter_count) {
444 Zone* zone = isolate->interface_descriptor_zone(); 460 Zone* zone = isolate->interface_descriptor_zone();
445 FunctionType* function = 461 FunctionType* function =
446 Type::Function(AnyTagged(zone), Type::Undefined(), 3, zone)->AsFunction(); 462 Type::Function(AnyTagged(zone), Type::Undefined(), kParameterCount, zone)
447 function->InitParameter(0, AnyTagged(zone)); // target 463 ->AsFunction();
448 function->InitParameter(1, AnyTagged(zone)); // new.target 464 function->InitParameter(kFunction, AnyTagged(zone));
449 function->InitParameter(2, UntaggedIntegral32(zone)); // actual #arguments 465 function->InitParameter(kNewTarget, AnyTagged(zone));
466 function->InitParameter(kActualArgumentsCount, UntaggedIntegral32(zone));
450 return function; 467 return function;
451 } 468 }
452 469
453 FunctionType* 470 FunctionType*
454 CallFunctionWithFeedbackDescriptor::BuildCallInterfaceDescriptorFunctionType( 471 CallFunctionWithFeedbackDescriptor::BuildCallInterfaceDescriptorFunctionType(
455 Isolate* isolate, int parameter_count) { 472 Isolate* isolate, int parameter_count) {
456 Zone* zone = isolate->interface_descriptor_zone(); 473 Zone* zone = isolate->interface_descriptor_zone();
457 FunctionType* function = 474 FunctionType* function =
458 Type::Function(AnyTagged(zone), Type::Undefined(), 2, zone)->AsFunction(); 475 Type::Function(AnyTagged(zone), Type::Undefined(), kParameterCount, zone)
459 function->InitParameter(0, Type::Receiver()); // JSFunction 476 ->AsFunction();
460 function->InitParameter(1, SmiType(zone)); 477 function->InitParameter(kFunction, Type::Receiver());
478 function->InitParameter(kSlot, SmiType(zone));
461 return function; 479 return function;
462 } 480 }
463 481
464 FunctionType* CallFunctionWithFeedbackAndVectorDescriptor:: 482 FunctionType* CallFunctionWithFeedbackAndVectorDescriptor::
465 BuildCallInterfaceDescriptorFunctionType(Isolate* isolate, 483 BuildCallInterfaceDescriptorFunctionType(Isolate* isolate,
466 int parameter_count) { 484 int parameter_count) {
467 Zone* zone = isolate->interface_descriptor_zone(); 485 Zone* zone = isolate->interface_descriptor_zone();
468 FunctionType* function = 486 FunctionType* function =
469 Type::Function(AnyTagged(zone), Type::Undefined(), 3, zone)->AsFunction(); 487 Type::Function(AnyTagged(zone), Type::Undefined(), kParameterCount, zone)
470 function->InitParameter(0, Type::Receiver()); // JSFunction 488 ->AsFunction();
471 function->InitParameter(1, SmiType(zone)); 489 function->InitParameter(kFunction, Type::Receiver());
472 function->InitParameter(2, AnyTagged(zone)); 490 function->InitParameter(kSlot, SmiType(zone));
491 function->InitParameter(kVector, AnyTagged(zone));
473 return function; 492 return function;
474 } 493 }
475 494
476 FunctionType* 495 FunctionType*
477 ArrayNoArgumentConstructorDescriptor::BuildCallInterfaceDescriptorFunctionType( 496 ArrayNoArgumentConstructorDescriptor::BuildCallInterfaceDescriptorFunctionType(
478 Isolate* isolate, int parameter_count) { 497 Isolate* isolate, int parameter_count) {
479 Zone* zone = isolate->interface_descriptor_zone(); 498 Zone* zone = isolate->interface_descriptor_zone();
480 FunctionType* function = 499 FunctionType* function =
481 Type::Function(AnyTagged(zone), Type::Undefined(), 4, zone)->AsFunction(); 500 Type::Function(AnyTagged(zone), Type::Undefined(), kParameterCount, zone)
482 function->InitParameter(0, Type::Receiver()); // JSFunction 501 ->AsFunction();
483 function->InitParameter(1, AnyTagged(zone)); 502 function->InitParameter(kFunction, Type::Receiver());
484 function->InitParameter(2, UntaggedIntegral32(zone)); 503 function->InitParameter(kAllocationSite, AnyTagged(zone));
485 function->InitParameter(3, AnyTagged(zone)); 504 function->InitParameter(kActualArgumentsCount, UntaggedIntegral32(zone));
505 function->InitParameter(kFunctionParameter, AnyTagged(zone));
486 return function; 506 return function;
487 } 507 }
488 508
489 FunctionType* ArraySingleArgumentConstructorDescriptor:: 509 FunctionType* ArraySingleArgumentConstructorDescriptor::
490 BuildCallInterfaceDescriptorFunctionType(Isolate* isolate, 510 BuildCallInterfaceDescriptorFunctionType(Isolate* isolate,
491 int parameter_count) { 511 int parameter_count) {
492 Zone* zone = isolate->interface_descriptor_zone(); 512 Zone* zone = isolate->interface_descriptor_zone();
493 FunctionType* function = 513 FunctionType* function =
494 Type::Function(AnyTagged(zone), Type::Undefined(), 5, zone)->AsFunction(); 514 Type::Function(AnyTagged(zone), Type::Undefined(), kParameterCount, zone)
495 function->InitParameter(0, Type::Receiver()); // JSFunction 515 ->AsFunction();
496 function->InitParameter(1, AnyTagged(zone)); 516 function->InitParameter(kFunction, Type::Receiver());
497 function->InitParameter(2, UntaggedIntegral32(zone)); 517 function->InitParameter(kAllocationSite, AnyTagged(zone));
498 function->InitParameter(3, AnyTagged(zone)); 518 function->InitParameter(kActualArgumentsCount, UntaggedIntegral32(zone));
499 function->InitParameter(4, AnyTagged(zone)); 519 function->InitParameter(kFunctionParameter, AnyTagged(zone));
520 function->InitParameter(kArraySizeSmiParameter, AnyTagged(zone));
500 return function; 521 return function;
501 } 522 }
502 523
503 FunctionType* 524 FunctionType*
504 ArrayNArgumentsConstructorDescriptor::BuildCallInterfaceDescriptorFunctionType( 525 ArrayNArgumentsConstructorDescriptor::BuildCallInterfaceDescriptorFunctionType(
505 Isolate* isolate, int parameter_count) { 526 Isolate* isolate, int parameter_count) {
506 Zone* zone = isolate->interface_descriptor_zone(); 527 Zone* zone = isolate->interface_descriptor_zone();
507 FunctionType* function = 528 FunctionType* function =
508 Type::Function(AnyTagged(zone), Type::Undefined(), 3, zone)->AsFunction(); 529 Type::Function(AnyTagged(zone), Type::Undefined(), kParameterCount, zone)
509 function->InitParameter(0, Type::Receiver()); // JSFunction 530 ->AsFunction();
510 function->InitParameter(1, AnyTagged(zone)); // Allocation site or undefined 531 function->InitParameter(kFunction, Type::Receiver());
511 function->InitParameter(2, UntaggedIntegral32(zone)); // Arg count 532 function->InitParameter(kAllocationSite, AnyTagged(zone));
533 function->InitParameter(kActualArgumentsCount, UntaggedIntegral32(zone));
512 return function; 534 return function;
513 } 535 }
514 536
515 FunctionType* 537 FunctionType*
516 ArgumentAdaptorDescriptor::BuildCallInterfaceDescriptorFunctionType( 538 ArgumentAdaptorDescriptor::BuildCallInterfaceDescriptorFunctionType(
517 Isolate* isolate, int parameter_count) { 539 Isolate* isolate, int parameter_count) {
518 Zone* zone = isolate->interface_descriptor_zone(); 540 Zone* zone = isolate->interface_descriptor_zone();
519 FunctionType* function = 541 FunctionType* function =
520 Type::Function(AnyTagged(zone), Type::Undefined(), 4, zone)->AsFunction(); 542 Type::Function(AnyTagged(zone), Type::Undefined(), kParameterCount, zone)
521 function->InitParameter(0, Type::Receiver()); // JSFunction 543 ->AsFunction();
522 function->InitParameter(1, AnyTagged(zone)); // the new target 544 function->InitParameter(kFunction, Type::Receiver());
523 function->InitParameter(2, UntaggedIntegral32(zone)); // actual #arguments 545 function->InitParameter(kNewTarget, AnyTagged(zone));
524 function->InitParameter(3, UntaggedIntegral32(zone)); // expected #arguments 546 function->InitParameter(kActualArgumentsCount, UntaggedIntegral32(zone));
547 function->InitParameter(kExpectedArgumentsCount, UntaggedIntegral32(zone));
525 return function; 548 return function;
526 } 549 }
527 550
528 CallInterfaceDescriptor ApiCallbackDescriptorBase::ForArgs(Isolate* isolate, 551 CallInterfaceDescriptor ApiCallbackDescriptorBase::ForArgs(Isolate* isolate,
529 int argc) { 552 int argc) {
530 switch (argc) { 553 switch (argc) {
531 case 0: 554 case 0:
532 return ApiCallbackWith0ArgsDescriptor(isolate); 555 return ApiCallbackWith0ArgsDescriptor(isolate);
533 case 1: 556 case 1:
534 return ApiCallbackWith1ArgsDescriptor(isolate); 557 return ApiCallbackWith1ArgsDescriptor(isolate);
(...skipping 12 matching lines...) Expand all
547 default: 570 default:
548 UNREACHABLE(); 571 UNREACHABLE();
549 return VoidDescriptor(isolate); 572 return VoidDescriptor(isolate);
550 } 573 }
551 } 574 }
552 575
553 FunctionType* 576 FunctionType*
554 ApiCallbackDescriptorBase::BuildCallInterfaceDescriptorFunctionTypeWithArg( 577 ApiCallbackDescriptorBase::BuildCallInterfaceDescriptorFunctionTypeWithArg(
555 Isolate* isolate, int parameter_count, int argc) { 578 Isolate* isolate, int parameter_count, int argc) {
556 Zone* zone = isolate->interface_descriptor_zone(); 579 Zone* zone = isolate->interface_descriptor_zone();
557 FunctionType* function = 580 FunctionType* function = Type::Function(AnyTagged(zone), Type::Undefined(),
558 Type::Function(AnyTagged(zone), Type::Undefined(), 4 + argc, zone) 581 kParameterCount + argc, zone)
559 ->AsFunction(); 582 ->AsFunction();
560 function->InitParameter(0, AnyTagged(zone)); // callee 583 function->InitParameter(kFunction, AnyTagged(zone));
561 function->InitParameter(1, AnyTagged(zone)); // call_data 584 function->InitParameter(kCallData, AnyTagged(zone));
562 function->InitParameter(2, AnyTagged(zone)); // holder 585 function->InitParameter(kHolder, AnyTagged(zone));
563 function->InitParameter(3, ExternalPointer(zone)); // api_function_address 586 function->InitParameter(kApiFunctionAddress, ExternalPointer(zone));
564 for (int i = 0; i < argc; i++) { 587 for (int i = 0; i < argc; i++) {
565 function->InitParameter(i, AnyTagged(zone)); 588 function->InitParameter(i, AnyTagged(zone));
566 } 589 }
567 return function; 590 return function;
568 } 591 }
569 592
570 FunctionType* 593 FunctionType*
571 InterpreterDispatchDescriptor::BuildCallInterfaceDescriptorFunctionType( 594 InterpreterDispatchDescriptor::BuildCallInterfaceDescriptorFunctionType(
572 Isolate* isolate, int parameter_count) { 595 Isolate* isolate, int parameter_count) {
573 Zone* zone = isolate->interface_descriptor_zone(); 596 Zone* zone = isolate->interface_descriptor_zone();
574 FunctionType* function = 597 FunctionType* function =
575 Type::Function(AnyTagged(zone), Type::Undefined(), 4, zone)->AsFunction(); 598 Type::Function(AnyTagged(zone), Type::Undefined(), kParameterCount, zone)
576 function->InitParameter(kAccumulatorParameter, AnyTagged(zone)); 599 ->AsFunction();
577 function->InitParameter(kBytecodeOffsetParameter, UntaggedIntegral32(zone)); 600 function->InitParameter(kAccumulator, AnyTagged(zone));
578 function->InitParameter(kBytecodeArrayParameter, AnyTagged(zone)); 601 function->InitParameter(kBytecodeOffset, UntaggedIntegral32(zone));
579 function->InitParameter(kDispatchTableParameter, AnyTagged(zone)); 602 function->InitParameter(kBytecodeArray, AnyTagged(zone));
603 function->InitParameter(kDispatchTable, AnyTagged(zone));
580 return function; 604 return function;
581 } 605 }
582 606
583 } // namespace internal 607 } // namespace internal
584 } // namespace v8 608 } // namespace v8
OLDNEW
« no previous file with comments | « src/interface-descriptors.h ('k') | src/interpreter/interpreter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698