| OLD | NEW |
| 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 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 73 return ""; | 73 return ""; |
| 74 } | 74 } |
| 75 | 75 |
| 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 paramater_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(), 3, zone)->AsFunction(); |
| 87 function->InitParameter(0, AnyTagged(zone)); | 87 function->InitParameter(0, AnyTagged(zone)); |
| 88 function->InitParameter(1, AnyTagged(zone)); | 88 function->InitParameter(1, AnyTagged(zone)); |
| 89 function->InitParameter(2, SmiType(zone)); | 89 function->InitParameter(2, SmiType(zone)); |
| 90 return function; | 90 return function; |
| 91 } | 91 } |
| 92 | 92 |
| 93 | 93 |
| 94 void LoadDescriptor::InitializePlatformSpecific( | 94 void LoadDescriptor::InitializePlatformSpecific( |
| 95 CallInterfaceDescriptorData* data) { | 95 CallInterfaceDescriptorData* data) { |
| 96 Register registers[] = {ReceiverRegister(), NameRegister(), SlotRegister()}; | 96 Register registers[] = {ReceiverRegister(), NameRegister(), SlotRegister()}; |
| 97 data->InitializePlatformSpecific(arraysize(registers), registers); | 97 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 98 } | 98 } |
| 99 | 99 |
| 100 FunctionType* LoadGlobalDescriptor::BuildCallInterfaceDescriptorFunctionType( | 100 FunctionType* LoadGlobalDescriptor::BuildCallInterfaceDescriptorFunctionType( |
| 101 Isolate* isolate, int paramater_count) { | 101 Isolate* isolate, int parameter_count) { |
| 102 Zone* zone = isolate->interface_descriptor_zone(); | 102 Zone* zone = isolate->interface_descriptor_zone(); |
| 103 FunctionType* function = | 103 FunctionType* function = |
| 104 Type::Function(AnyTagged(zone), Type::Undefined(), 1, zone)->AsFunction(); | 104 Type::Function(AnyTagged(zone), Type::Undefined(), 1, zone)->AsFunction(); |
| 105 function->InitParameter(0, SmiType(zone)); | 105 function->InitParameter(0, SmiType(zone)); |
| 106 return function; | 106 return function; |
| 107 } | 107 } |
| 108 | 108 |
| 109 void LoadGlobalDescriptor::InitializePlatformSpecific( | 109 void LoadGlobalDescriptor::InitializePlatformSpecific( |
| 110 CallInterfaceDescriptorData* data) { | 110 CallInterfaceDescriptorData* data) { |
| 111 Register registers[] = {LoadWithVectorDescriptor::SlotRegister()}; | 111 Register registers[] = {LoadWithVectorDescriptor::SlotRegister()}; |
| 112 data->InitializePlatformSpecific(arraysize(registers), registers); | 112 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 113 } | 113 } |
| 114 | 114 |
| 115 FunctionType* | 115 FunctionType* |
| 116 LoadGlobalWithVectorDescriptor::BuildCallInterfaceDescriptorFunctionType( | 116 LoadGlobalWithVectorDescriptor::BuildCallInterfaceDescriptorFunctionType( |
| 117 Isolate* isolate, int paramater_count) { | 117 Isolate* isolate, int parameter_count) { |
| 118 Zone* zone = isolate->interface_descriptor_zone(); | 118 Zone* zone = isolate->interface_descriptor_zone(); |
| 119 FunctionType* function = | 119 FunctionType* function = |
| 120 Type::Function(AnyTagged(zone), Type::Undefined(), 2, zone)->AsFunction(); | 120 Type::Function(AnyTagged(zone), Type::Undefined(), 2, zone)->AsFunction(); |
| 121 function->InitParameter(0, SmiType(zone)); | 121 function->InitParameter(0, SmiType(zone)); |
| 122 function->InitParameter(1, AnyTagged(zone)); | 122 function->InitParameter(1, AnyTagged(zone)); |
| 123 return function; | 123 return function; |
| 124 } | 124 } |
| 125 | 125 |
| 126 void LoadGlobalWithVectorDescriptor::InitializePlatformSpecific( | 126 void LoadGlobalWithVectorDescriptor::InitializePlatformSpecific( |
| 127 CallInterfaceDescriptorData* data) { | 127 CallInterfaceDescriptorData* data) { |
| 128 Register registers[] = {LoadWithVectorDescriptor::SlotRegister(), | 128 Register registers[] = {LoadWithVectorDescriptor::SlotRegister(), |
| 129 LoadWithVectorDescriptor::VectorRegister()}; | 129 LoadWithVectorDescriptor::VectorRegister()}; |
| 130 data->InitializePlatformSpecific(arraysize(registers), registers); | 130 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 131 } | 131 } |
| 132 | 132 |
| 133 FunctionType* StoreDescriptor::BuildCallInterfaceDescriptorFunctionType( |
| 134 Isolate* isolate, int parameter_count) { |
| 135 Zone* zone = isolate->interface_descriptor_zone(); |
| 136 FunctionType* function = |
| 137 Type::Function(AnyTagged(zone), Type::Undefined(), 4, zone)->AsFunction(); |
| 138 function->InitParameter(0, AnyTagged(zone)); |
| 139 function->InitParameter(1, AnyTagged(zone)); |
| 140 function->InitParameter(2, AnyTagged(zone)); |
| 141 function->InitParameter(3, SmiType(zone)); |
| 142 return function; |
| 143 } |
| 144 |
| 133 void StoreDescriptor::InitializePlatformSpecific( | 145 void StoreDescriptor::InitializePlatformSpecific( |
| 134 CallInterfaceDescriptorData* data) { | 146 CallInterfaceDescriptorData* data) { |
| 135 Register registers[] = {ReceiverRegister(), NameRegister(), ValueRegister()}; | 147 Register registers[] = {ReceiverRegister(), NameRegister(), ValueRegister(), |
| 148 SlotRegister()}; |
| 136 data->InitializePlatformSpecific(arraysize(registers), registers); | 149 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 137 } | 150 } |
| 138 | 151 |
| 139 | 152 |
| 140 void StoreTransitionDescriptor::InitializePlatformSpecific( | 153 void StoreTransitionDescriptor::InitializePlatformSpecific( |
| 141 CallInterfaceDescriptorData* data) { | 154 CallInterfaceDescriptorData* data) { |
| 142 Register registers[] = {ReceiverRegister(), NameRegister(), ValueRegister(), | 155 Register registers[] = {ReceiverRegister(), NameRegister(), ValueRegister(), |
| 143 MapRegister()}; | 156 MapRegister()}; |
| 144 | 157 |
| 145 data->InitializePlatformSpecific(arraysize(registers), registers); | 158 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 146 } | 159 } |
| 147 | 160 |
| 148 | 161 |
| 149 void VectorStoreTransitionDescriptor::InitializePlatformSpecific( | 162 void VectorStoreTransitionDescriptor::InitializePlatformSpecific( |
| 150 CallInterfaceDescriptorData* data) { | 163 CallInterfaceDescriptorData* data) { |
| 151 if (SlotRegister().is(no_reg)) { | 164 if (SlotRegister().is(no_reg)) { |
| 152 Register registers[] = {ReceiverRegister(), NameRegister(), ValueRegister(), | 165 Register registers[] = {ReceiverRegister(), NameRegister(), ValueRegister(), |
| 153 MapRegister(), VectorRegister()}; | 166 MapRegister(), VectorRegister()}; |
| 154 data->InitializePlatformSpecific(arraysize(registers), registers); | 167 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 155 } else { | 168 } else { |
| 156 Register registers[] = {ReceiverRegister(), NameRegister(), | 169 Register registers[] = {ReceiverRegister(), NameRegister(), |
| 157 ValueRegister(), MapRegister(), | 170 ValueRegister(), MapRegister(), |
| 158 SlotRegister(), VectorRegister()}; | 171 SlotRegister(), VectorRegister()}; |
| 159 data->InitializePlatformSpecific(arraysize(registers), registers); | 172 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 160 } | 173 } |
| 161 } | 174 } |
| 162 | 175 |
| 163 FunctionType* | 176 FunctionType* |
| 164 StoreTransitionDescriptor::BuildCallInterfaceDescriptorFunctionType( | 177 StoreTransitionDescriptor::BuildCallInterfaceDescriptorFunctionType( |
| 165 Isolate* isolate, int paramater_count) { | 178 Isolate* isolate, int parameter_count) { |
| 166 Zone* zone = isolate->interface_descriptor_zone(); | 179 Zone* zone = isolate->interface_descriptor_zone(); |
| 167 FunctionType* function = | 180 FunctionType* function = |
| 168 Type::Function(AnyTagged(zone), Type::Undefined(), 4, zone)->AsFunction(); | 181 Type::Function(AnyTagged(zone), Type::Undefined(), 4, zone)->AsFunction(); |
| 169 function->InitParameter(0, AnyTagged(zone)); // Receiver | 182 function->InitParameter(0, AnyTagged(zone)); // Receiver |
| 170 function->InitParameter(1, AnyTagged(zone)); // Name | 183 function->InitParameter(1, AnyTagged(zone)); // Name |
| 171 function->InitParameter(2, AnyTagged(zone)); // Value | 184 function->InitParameter(2, AnyTagged(zone)); // Value |
| 172 function->InitParameter(3, AnyTagged(zone)); // Map | 185 function->InitParameter(3, AnyTagged(zone)); // Map |
| 173 return function; | 186 return function; |
| 174 } | 187 } |
| 175 | 188 |
| 176 FunctionType* | 189 FunctionType* |
| 177 StoreGlobalViaContextDescriptor::BuildCallInterfaceDescriptorFunctionType( | 190 StoreGlobalViaContextDescriptor::BuildCallInterfaceDescriptorFunctionType( |
| 178 Isolate* isolate, int paramater_count) { | 191 Isolate* isolate, int parameter_count) { |
| 179 Zone* zone = isolate->interface_descriptor_zone(); | 192 Zone* zone = isolate->interface_descriptor_zone(); |
| 180 FunctionType* function = | 193 FunctionType* function = |
| 181 Type::Function(AnyTagged(zone), Type::Undefined(), 2, zone)->AsFunction(); | 194 Type::Function(AnyTagged(zone), Type::Undefined(), 2, zone)->AsFunction(); |
| 182 function->InitParameter(0, UntaggedIntegral32(zone)); | 195 function->InitParameter(0, UntaggedIntegral32(zone)); |
| 183 function->InitParameter(1, AnyTagged(zone)); | 196 function->InitParameter(1, AnyTagged(zone)); |
| 184 return function; | 197 return function; |
| 185 } | 198 } |
| 186 | 199 |
| 187 | 200 |
| 188 void StoreGlobalViaContextDescriptor::InitializePlatformSpecific( | 201 void StoreGlobalViaContextDescriptor::InitializePlatformSpecific( |
| (...skipping 22 matching lines...) Expand all Loading... |
| 211 } | 224 } |
| 212 | 225 |
| 213 void MathPowIntegerDescriptor::InitializePlatformSpecific( | 226 void MathPowIntegerDescriptor::InitializePlatformSpecific( |
| 214 CallInterfaceDescriptorData* data) { | 227 CallInterfaceDescriptorData* data) { |
| 215 Register registers[] = {exponent()}; | 228 Register registers[] = {exponent()}; |
| 216 data->InitializePlatformSpecific(arraysize(registers), registers); | 229 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 217 } | 230 } |
| 218 | 231 |
| 219 FunctionType* | 232 FunctionType* |
| 220 LoadWithVectorDescriptor::BuildCallInterfaceDescriptorFunctionType( | 233 LoadWithVectorDescriptor::BuildCallInterfaceDescriptorFunctionType( |
| 221 Isolate* isolate, int paramater_count) { | 234 Isolate* isolate, int parameter_count) { |
| 222 Zone* zone = isolate->interface_descriptor_zone(); | 235 Zone* zone = isolate->interface_descriptor_zone(); |
| 223 FunctionType* function = | 236 FunctionType* function = |
| 224 Type::Function(AnyTagged(zone), Type::Undefined(), 4, zone)->AsFunction(); | 237 Type::Function(AnyTagged(zone), Type::Undefined(), 4, zone)->AsFunction(); |
| 225 function->InitParameter(0, AnyTagged(zone)); | 238 function->InitParameter(0, AnyTagged(zone)); |
| 226 function->InitParameter(1, AnyTagged(zone)); | 239 function->InitParameter(1, AnyTagged(zone)); |
| 227 function->InitParameter(2, SmiType(zone)); | 240 function->InitParameter(2, SmiType(zone)); |
| 228 function->InitParameter(3, AnyTagged(zone)); | 241 function->InitParameter(3, AnyTagged(zone)); |
| 229 return function; | 242 return function; |
| 230 } | 243 } |
| 231 | 244 |
| 232 | 245 |
| 233 void LoadWithVectorDescriptor::InitializePlatformSpecific( | 246 void LoadWithVectorDescriptor::InitializePlatformSpecific( |
| 234 CallInterfaceDescriptorData* data) { | 247 CallInterfaceDescriptorData* data) { |
| 235 Register registers[] = {ReceiverRegister(), NameRegister(), SlotRegister(), | 248 Register registers[] = {ReceiverRegister(), NameRegister(), SlotRegister(), |
| 236 VectorRegister()}; | 249 VectorRegister()}; |
| 237 data->InitializePlatformSpecific(arraysize(registers), registers); | 250 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 238 } | 251 } |
| 239 | 252 |
| 240 FunctionType* | 253 FunctionType* |
| 241 VectorStoreTransitionDescriptor::BuildCallInterfaceDescriptorFunctionType( | 254 VectorStoreTransitionDescriptor::BuildCallInterfaceDescriptorFunctionType( |
| 242 Isolate* isolate, int paramater_count) { | 255 Isolate* isolate, int parameter_count) { |
| 243 Zone* zone = isolate->interface_descriptor_zone(); | 256 Zone* zone = isolate->interface_descriptor_zone(); |
| 244 bool has_slot = !VectorStoreTransitionDescriptor::SlotRegister().is(no_reg); | 257 bool has_slot = !VectorStoreTransitionDescriptor::SlotRegister().is(no_reg); |
| 245 int arg_count = has_slot ? 6 : 5; | 258 int arg_count = has_slot ? 6 : 5; |
| 246 FunctionType* function = | 259 FunctionType* function = |
| 247 Type::Function(AnyTagged(zone), Type::Undefined(), arg_count, zone) | 260 Type::Function(AnyTagged(zone), Type::Undefined(), arg_count, zone) |
| 248 ->AsFunction(); | 261 ->AsFunction(); |
| 249 int index = 0; | 262 int index = 0; |
| 250 function->InitParameter(index++, AnyTagged(zone)); // receiver | 263 function->InitParameter(index++, AnyTagged(zone)); // receiver |
| 251 function->InitParameter(index++, AnyTagged(zone)); // name | 264 function->InitParameter(index++, AnyTagged(zone)); // name |
| 252 function->InitParameter(index++, AnyTagged(zone)); // value | 265 function->InitParameter(index++, AnyTagged(zone)); // value |
| 253 function->InitParameter(index++, AnyTagged(zone)); // map | 266 function->InitParameter(index++, AnyTagged(zone)); // map |
| 254 if (has_slot) { | 267 if (has_slot) { |
| 255 function->InitParameter(index++, SmiType(zone)); // slot | 268 function->InitParameter(index++, SmiType(zone)); // slot |
| 256 } | 269 } |
| 257 function->InitParameter(index++, AnyTagged(zone)); // vector | 270 function->InitParameter(index++, AnyTagged(zone)); // vector |
| 258 return function; | 271 return function; |
| 259 } | 272 } |
| 260 | 273 |
| 261 FunctionType* VectorStoreICDescriptor::BuildCallInterfaceDescriptorFunctionType( | 274 FunctionType* |
| 262 Isolate* isolate, int paramater_count) { | 275 StoreWithVectorDescriptor::BuildCallInterfaceDescriptorFunctionType( |
| 276 Isolate* isolate, int parameter_count) { |
| 263 Zone* zone = isolate->interface_descriptor_zone(); | 277 Zone* zone = isolate->interface_descriptor_zone(); |
| 264 FunctionType* function = | 278 FunctionType* function = |
| 265 Type::Function(AnyTagged(zone), Type::Undefined(), 5, zone)->AsFunction(); | 279 Type::Function(AnyTagged(zone), Type::Undefined(), 5, zone)->AsFunction(); |
| 266 function->InitParameter(0, AnyTagged(zone)); | 280 function->InitParameter(0, AnyTagged(zone)); |
| 267 function->InitParameter(1, AnyTagged(zone)); | 281 function->InitParameter(1, AnyTagged(zone)); |
| 268 function->InitParameter(2, AnyTagged(zone)); | 282 function->InitParameter(2, AnyTagged(zone)); |
| 269 function->InitParameter(3, SmiType(zone)); | 283 function->InitParameter(3, SmiType(zone)); |
| 270 function->InitParameter(4, AnyTagged(zone)); | 284 function->InitParameter(4, AnyTagged(zone)); |
| 271 return function; | 285 return function; |
| 272 } | 286 } |
| 273 | 287 |
| 274 | 288 void StoreWithVectorDescriptor::InitializePlatformSpecific( |
| 275 void VectorStoreICDescriptor::InitializePlatformSpecific( | |
| 276 CallInterfaceDescriptorData* data) { | 289 CallInterfaceDescriptorData* data) { |
| 277 Register registers[] = {ReceiverRegister(), NameRegister(), ValueRegister(), | 290 Register registers[] = {ReceiverRegister(), NameRegister(), ValueRegister(), |
| 278 SlotRegister(), VectorRegister()}; | 291 SlotRegister(), VectorRegister()}; |
| 279 data->InitializePlatformSpecific(arraysize(registers), registers); | 292 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 280 } | 293 } |
| 281 | 294 |
| 282 FunctionType* | |
| 283 VectorStoreICTrampolineDescriptor::BuildCallInterfaceDescriptorFunctionType( | |
| 284 Isolate* isolate, int paramater_count) { | |
| 285 Zone* zone = isolate->interface_descriptor_zone(); | |
| 286 FunctionType* function = | |
| 287 Type::Function(AnyTagged(zone), Type::Undefined(), 4, zone)->AsFunction(); | |
| 288 function->InitParameter(0, AnyTagged(zone)); | |
| 289 function->InitParameter(1, AnyTagged(zone)); | |
| 290 function->InitParameter(2, AnyTagged(zone)); | |
| 291 function->InitParameter(3, SmiType(zone)); | |
| 292 return function; | |
| 293 } | |
| 294 | |
| 295 | |
| 296 void VectorStoreICTrampolineDescriptor::InitializePlatformSpecific( | |
| 297 CallInterfaceDescriptorData* data) { | |
| 298 Register registers[] = {ReceiverRegister(), NameRegister(), ValueRegister(), | |
| 299 SlotRegister()}; | |
| 300 data->InitializePlatformSpecific(arraysize(registers), registers); | |
| 301 } | |
| 302 | |
| 303 const Register ApiGetterDescriptor::ReceiverRegister() { | 295 const Register ApiGetterDescriptor::ReceiverRegister() { |
| 304 return LoadDescriptor::ReceiverRegister(); | 296 return LoadDescriptor::ReceiverRegister(); |
| 305 } | 297 } |
| 306 | 298 |
| 307 void ApiGetterDescriptor::InitializePlatformSpecific( | 299 void ApiGetterDescriptor::InitializePlatformSpecific( |
| 308 CallInterfaceDescriptorData* data) { | 300 CallInterfaceDescriptorData* data) { |
| 309 Register registers[] = {ReceiverRegister(), HolderRegister(), | 301 Register registers[] = {ReceiverRegister(), HolderRegister(), |
| 310 CallbackRegister()}; | 302 CallbackRegister()}; |
| 311 data->InitializePlatformSpecific(arraysize(registers), registers); | 303 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 312 } | 304 } |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 360 } | 352 } |
| 361 | 353 |
| 362 void GrowArrayElementsDescriptor::InitializePlatformSpecific( | 354 void GrowArrayElementsDescriptor::InitializePlatformSpecific( |
| 363 CallInterfaceDescriptorData* data) { | 355 CallInterfaceDescriptorData* data) { |
| 364 Register registers[] = {ObjectRegister(), KeyRegister()}; | 356 Register registers[] = {ObjectRegister(), KeyRegister()}; |
| 365 data->InitializePlatformSpecific(arraysize(registers), registers); | 357 data->InitializePlatformSpecific(arraysize(registers), registers); |
| 366 } | 358 } |
| 367 | 359 |
| 368 FunctionType* | 360 FunctionType* |
| 369 VarArgFunctionDescriptor::BuildCallInterfaceDescriptorFunctionType( | 361 VarArgFunctionDescriptor::BuildCallInterfaceDescriptorFunctionType( |
| 370 Isolate* isolate, int paramater_count) { | 362 Isolate* isolate, int parameter_count) { |
| 371 Zone* zone = isolate->interface_descriptor_zone(); | 363 Zone* zone = isolate->interface_descriptor_zone(); |
| 372 FunctionType* function = | 364 FunctionType* function = |
| 373 Type::Function(AnyTagged(zone), AnyTagged(zone), 1, zone)->AsFunction(); | 365 Type::Function(AnyTagged(zone), AnyTagged(zone), 1, zone)->AsFunction(); |
| 374 function->InitParameter(0, UntaggedIntegral32(zone)); // actual #arguments | 366 function->InitParameter(0, UntaggedIntegral32(zone)); // actual #arguments |
| 375 return function; | 367 return function; |
| 376 } | 368 } |
| 377 | 369 |
| 378 FunctionType* | 370 FunctionType* |
| 379 FastCloneRegExpDescriptor::BuildCallInterfaceDescriptorFunctionType( | 371 FastCloneRegExpDescriptor::BuildCallInterfaceDescriptorFunctionType( |
| 380 Isolate* isolate, int paramater_count) { | 372 Isolate* isolate, int parameter_count) { |
| 381 Zone* zone = isolate->interface_descriptor_zone(); | 373 Zone* zone = isolate->interface_descriptor_zone(); |
| 382 FunctionType* function = | 374 FunctionType* function = |
| 383 Type::Function(AnyTagged(zone), Type::Undefined(), 4, zone)->AsFunction(); | 375 Type::Function(AnyTagged(zone), Type::Undefined(), 4, zone)->AsFunction(); |
| 384 function->InitParameter(0, AnyTagged(zone)); // closure | 376 function->InitParameter(0, AnyTagged(zone)); // closure |
| 385 function->InitParameter(1, SmiType(zone)); // literal_index | 377 function->InitParameter(1, SmiType(zone)); // literal_index |
| 386 function->InitParameter(2, AnyTagged(zone)); // pattern | 378 function->InitParameter(2, AnyTagged(zone)); // pattern |
| 387 function->InitParameter(3, AnyTagged(zone)); // flags | 379 function->InitParameter(3, AnyTagged(zone)); // flags |
| 388 return function; | 380 return function; |
| 389 } | 381 } |
| 390 | 382 |
| 391 FunctionType* | 383 FunctionType* |
| 392 FastCloneShallowArrayDescriptor::BuildCallInterfaceDescriptorFunctionType( | 384 FastCloneShallowArrayDescriptor::BuildCallInterfaceDescriptorFunctionType( |
| 393 Isolate* isolate, int paramater_count) { | 385 Isolate* isolate, int parameter_count) { |
| 394 Zone* zone = isolate->interface_descriptor_zone(); | 386 Zone* zone = isolate->interface_descriptor_zone(); |
| 395 FunctionType* function = | 387 FunctionType* function = |
| 396 Type::Function(AnyTagged(zone), Type::Undefined(), 3, zone)->AsFunction(); | 388 Type::Function(AnyTagged(zone), Type::Undefined(), 3, zone)->AsFunction(); |
| 397 function->InitParameter(0, AnyTagged(zone)); | 389 function->InitParameter(0, AnyTagged(zone)); |
| 398 function->InitParameter(1, SmiType(zone)); | 390 function->InitParameter(1, SmiType(zone)); |
| 399 function->InitParameter(2, AnyTagged(zone)); | 391 function->InitParameter(2, AnyTagged(zone)); |
| 400 return function; | 392 return function; |
| 401 } | 393 } |
| 402 | 394 |
| 403 FunctionType* | 395 FunctionType* |
| 404 CreateAllocationSiteDescriptor::BuildCallInterfaceDescriptorFunctionType( | 396 CreateAllocationSiteDescriptor::BuildCallInterfaceDescriptorFunctionType( |
| 405 Isolate* isolate, int paramater_count) { | 397 Isolate* isolate, int parameter_count) { |
| 406 Zone* zone = isolate->interface_descriptor_zone(); | 398 Zone* zone = isolate->interface_descriptor_zone(); |
| 407 FunctionType* function = | 399 FunctionType* function = |
| 408 Type::Function(AnyTagged(zone), Type::Undefined(), 2, zone)->AsFunction(); | 400 Type::Function(AnyTagged(zone), Type::Undefined(), 2, zone)->AsFunction(); |
| 409 function->InitParameter(0, AnyTagged(zone)); | 401 function->InitParameter(0, AnyTagged(zone)); |
| 410 function->InitParameter(1, SmiType(zone)); | 402 function->InitParameter(1, SmiType(zone)); |
| 411 return function; | 403 return function; |
| 412 } | 404 } |
| 413 | 405 |
| 414 FunctionType* | 406 FunctionType* |
| 415 CreateWeakCellDescriptor::BuildCallInterfaceDescriptorFunctionType( | 407 CreateWeakCellDescriptor::BuildCallInterfaceDescriptorFunctionType( |
| 416 Isolate* isolate, int paramater_count) { | 408 Isolate* isolate, int parameter_count) { |
| 417 Zone* zone = isolate->interface_descriptor_zone(); | 409 Zone* zone = isolate->interface_descriptor_zone(); |
| 418 FunctionType* function = | 410 FunctionType* function = |
| 419 Type::Function(AnyTagged(zone), Type::Undefined(), 3, zone)->AsFunction(); | 411 Type::Function(AnyTagged(zone), Type::Undefined(), 3, zone)->AsFunction(); |
| 420 function->InitParameter(0, AnyTagged(zone)); | 412 function->InitParameter(0, AnyTagged(zone)); |
| 421 function->InitParameter(1, SmiType(zone)); | 413 function->InitParameter(1, SmiType(zone)); |
| 422 function->InitParameter(2, AnyTagged(zone)); | 414 function->InitParameter(2, AnyTagged(zone)); |
| 423 return function; | 415 return function; |
| 424 } | 416 } |
| 425 | 417 |
| 426 FunctionType* | 418 FunctionType* |
| 427 CallTrampolineDescriptor::BuildCallInterfaceDescriptorFunctionType( | 419 CallTrampolineDescriptor::BuildCallInterfaceDescriptorFunctionType( |
| 428 Isolate* isolate, int paramater_count) { | 420 Isolate* isolate, int parameter_count) { |
| 429 Zone* zone = isolate->interface_descriptor_zone(); | 421 Zone* zone = isolate->interface_descriptor_zone(); |
| 430 FunctionType* function = | 422 FunctionType* function = |
| 431 Type::Function(AnyTagged(zone), Type::Undefined(), 2, zone)->AsFunction(); | 423 Type::Function(AnyTagged(zone), Type::Undefined(), 2, zone)->AsFunction(); |
| 432 function->InitParameter(0, AnyTagged(zone)); // target | 424 function->InitParameter(0, AnyTagged(zone)); // target |
| 433 function->InitParameter(1, UntaggedIntegral32(zone)); // actual #arguments | 425 function->InitParameter(1, UntaggedIntegral32(zone)); // actual #arguments |
| 434 return function; | 426 return function; |
| 435 } | 427 } |
| 436 | 428 |
| 437 FunctionType* ConstructStubDescriptor::BuildCallInterfaceDescriptorFunctionType( | 429 FunctionType* ConstructStubDescriptor::BuildCallInterfaceDescriptorFunctionType( |
| 438 Isolate* isolate, int paramater_count) { | 430 Isolate* isolate, int parameter_count) { |
| 439 Zone* zone = isolate->interface_descriptor_zone(); | 431 Zone* zone = isolate->interface_descriptor_zone(); |
| 440 FunctionType* function = | 432 FunctionType* function = |
| 441 Type::Function(AnyTagged(zone), Type::Undefined(), 4, zone)->AsFunction(); | 433 Type::Function(AnyTagged(zone), Type::Undefined(), 4, zone)->AsFunction(); |
| 442 function->InitParameter(0, AnyTagged(zone)); // target | 434 function->InitParameter(0, AnyTagged(zone)); // target |
| 443 function->InitParameter(1, AnyTagged(zone)); // new.target | 435 function->InitParameter(1, AnyTagged(zone)); // new.target |
| 444 function->InitParameter(2, UntaggedIntegral32(zone)); // actual #arguments | 436 function->InitParameter(2, UntaggedIntegral32(zone)); // actual #arguments |
| 445 function->InitParameter(3, AnyTagged(zone)); // opt. allocation site | 437 function->InitParameter(3, AnyTagged(zone)); // opt. allocation site |
| 446 return function; | 438 return function; |
| 447 } | 439 } |
| 448 | 440 |
| 449 FunctionType* | 441 FunctionType* |
| 450 ConstructTrampolineDescriptor::BuildCallInterfaceDescriptorFunctionType( | 442 ConstructTrampolineDescriptor::BuildCallInterfaceDescriptorFunctionType( |
| 451 Isolate* isolate, int paramater_count) { | 443 Isolate* isolate, int parameter_count) { |
| 452 Zone* zone = isolate->interface_descriptor_zone(); | 444 Zone* zone = isolate->interface_descriptor_zone(); |
| 453 FunctionType* function = | 445 FunctionType* function = |
| 454 Type::Function(AnyTagged(zone), Type::Undefined(), 3, zone)->AsFunction(); | 446 Type::Function(AnyTagged(zone), Type::Undefined(), 3, zone)->AsFunction(); |
| 455 function->InitParameter(0, AnyTagged(zone)); // target | 447 function->InitParameter(0, AnyTagged(zone)); // target |
| 456 function->InitParameter(1, AnyTagged(zone)); // new.target | 448 function->InitParameter(1, AnyTagged(zone)); // new.target |
| 457 function->InitParameter(2, UntaggedIntegral32(zone)); // actual #arguments | 449 function->InitParameter(2, UntaggedIntegral32(zone)); // actual #arguments |
| 458 return function; | 450 return function; |
| 459 } | 451 } |
| 460 | 452 |
| 461 FunctionType* | 453 FunctionType* |
| 462 CallFunctionWithFeedbackDescriptor::BuildCallInterfaceDescriptorFunctionType( | 454 CallFunctionWithFeedbackDescriptor::BuildCallInterfaceDescriptorFunctionType( |
| 463 Isolate* isolate, int paramater_count) { | 455 Isolate* isolate, int parameter_count) { |
| 464 Zone* zone = isolate->interface_descriptor_zone(); | 456 Zone* zone = isolate->interface_descriptor_zone(); |
| 465 FunctionType* function = | 457 FunctionType* function = |
| 466 Type::Function(AnyTagged(zone), Type::Undefined(), 2, zone)->AsFunction(); | 458 Type::Function(AnyTagged(zone), Type::Undefined(), 2, zone)->AsFunction(); |
| 467 function->InitParameter(0, Type::Receiver()); // JSFunction | 459 function->InitParameter(0, Type::Receiver()); // JSFunction |
| 468 function->InitParameter(1, SmiType(zone)); | 460 function->InitParameter(1, SmiType(zone)); |
| 469 return function; | 461 return function; |
| 470 } | 462 } |
| 471 | 463 |
| 472 FunctionType* CallFunctionWithFeedbackAndVectorDescriptor:: | 464 FunctionType* CallFunctionWithFeedbackAndVectorDescriptor:: |
| 473 BuildCallInterfaceDescriptorFunctionType(Isolate* isolate, | 465 BuildCallInterfaceDescriptorFunctionType(Isolate* isolate, |
| 474 int paramater_count) { | 466 int parameter_count) { |
| 475 Zone* zone = isolate->interface_descriptor_zone(); | 467 Zone* zone = isolate->interface_descriptor_zone(); |
| 476 FunctionType* function = | 468 FunctionType* function = |
| 477 Type::Function(AnyTagged(zone), Type::Undefined(), 3, zone)->AsFunction(); | 469 Type::Function(AnyTagged(zone), Type::Undefined(), 3, zone)->AsFunction(); |
| 478 function->InitParameter(0, Type::Receiver()); // JSFunction | 470 function->InitParameter(0, Type::Receiver()); // JSFunction |
| 479 function->InitParameter(1, SmiType(zone)); | 471 function->InitParameter(1, SmiType(zone)); |
| 480 function->InitParameter(2, AnyTagged(zone)); | 472 function->InitParameter(2, AnyTagged(zone)); |
| 481 return function; | 473 return function; |
| 482 } | 474 } |
| 483 | 475 |
| 484 FunctionType* | 476 FunctionType* |
| 485 ArrayNoArgumentConstructorDescriptor::BuildCallInterfaceDescriptorFunctionType( | 477 ArrayNoArgumentConstructorDescriptor::BuildCallInterfaceDescriptorFunctionType( |
| 486 Isolate* isolate, int paramater_count) { | 478 Isolate* isolate, int parameter_count) { |
| 487 Zone* zone = isolate->interface_descriptor_zone(); | 479 Zone* zone = isolate->interface_descriptor_zone(); |
| 488 FunctionType* function = | 480 FunctionType* function = |
| 489 Type::Function(AnyTagged(zone), Type::Undefined(), 4, zone)->AsFunction(); | 481 Type::Function(AnyTagged(zone), Type::Undefined(), 4, zone)->AsFunction(); |
| 490 function->InitParameter(0, Type::Receiver()); // JSFunction | 482 function->InitParameter(0, Type::Receiver()); // JSFunction |
| 491 function->InitParameter(1, AnyTagged(zone)); | 483 function->InitParameter(1, AnyTagged(zone)); |
| 492 function->InitParameter(2, UntaggedIntegral32(zone)); | 484 function->InitParameter(2, UntaggedIntegral32(zone)); |
| 493 function->InitParameter(3, AnyTagged(zone)); | 485 function->InitParameter(3, AnyTagged(zone)); |
| 494 return function; | 486 return function; |
| 495 } | 487 } |
| 496 | 488 |
| 497 FunctionType* ArraySingleArgumentConstructorDescriptor:: | 489 FunctionType* ArraySingleArgumentConstructorDescriptor:: |
| 498 BuildCallInterfaceDescriptorFunctionType(Isolate* isolate, | 490 BuildCallInterfaceDescriptorFunctionType(Isolate* isolate, |
| 499 int paramater_count) { | 491 int parameter_count) { |
| 500 Zone* zone = isolate->interface_descriptor_zone(); | 492 Zone* zone = isolate->interface_descriptor_zone(); |
| 501 FunctionType* function = | 493 FunctionType* function = |
| 502 Type::Function(AnyTagged(zone), Type::Undefined(), 5, zone)->AsFunction(); | 494 Type::Function(AnyTagged(zone), Type::Undefined(), 5, zone)->AsFunction(); |
| 503 function->InitParameter(0, Type::Receiver()); // JSFunction | 495 function->InitParameter(0, Type::Receiver()); // JSFunction |
| 504 function->InitParameter(1, AnyTagged(zone)); | 496 function->InitParameter(1, AnyTagged(zone)); |
| 505 function->InitParameter(2, UntaggedIntegral32(zone)); | 497 function->InitParameter(2, UntaggedIntegral32(zone)); |
| 506 function->InitParameter(3, AnyTagged(zone)); | 498 function->InitParameter(3, AnyTagged(zone)); |
| 507 function->InitParameter(4, AnyTagged(zone)); | 499 function->InitParameter(4, AnyTagged(zone)); |
| 508 return function; | 500 return function; |
| 509 } | 501 } |
| 510 | 502 |
| 511 FunctionType* | 503 FunctionType* |
| 512 ArrayNArgumentsConstructorDescriptor::BuildCallInterfaceDescriptorFunctionType( | 504 ArrayNArgumentsConstructorDescriptor::BuildCallInterfaceDescriptorFunctionType( |
| 513 Isolate* isolate, int paramater_count) { | 505 Isolate* isolate, int parameter_count) { |
| 514 Zone* zone = isolate->interface_descriptor_zone(); | 506 Zone* zone = isolate->interface_descriptor_zone(); |
| 515 FunctionType* function = | 507 FunctionType* function = |
| 516 Type::Function(AnyTagged(zone), Type::Undefined(), 3, zone)->AsFunction(); | 508 Type::Function(AnyTagged(zone), Type::Undefined(), 3, zone)->AsFunction(); |
| 517 function->InitParameter(0, Type::Receiver()); // JSFunction | 509 function->InitParameter(0, Type::Receiver()); // JSFunction |
| 518 function->InitParameter(1, AnyTagged(zone)); // Allocation site or undefined | 510 function->InitParameter(1, AnyTagged(zone)); // Allocation site or undefined |
| 519 function->InitParameter(2, UntaggedIntegral32(zone)); // Arg count | 511 function->InitParameter(2, UntaggedIntegral32(zone)); // Arg count |
| 520 return function; | 512 return function; |
| 521 } | 513 } |
| 522 | 514 |
| 523 FunctionType* | 515 FunctionType* |
| 524 ArgumentAdaptorDescriptor::BuildCallInterfaceDescriptorFunctionType( | 516 ArgumentAdaptorDescriptor::BuildCallInterfaceDescriptorFunctionType( |
| 525 Isolate* isolate, int paramater_count) { | 517 Isolate* isolate, int parameter_count) { |
| 526 Zone* zone = isolate->interface_descriptor_zone(); | 518 Zone* zone = isolate->interface_descriptor_zone(); |
| 527 FunctionType* function = | 519 FunctionType* function = |
| 528 Type::Function(AnyTagged(zone), Type::Undefined(), 4, zone)->AsFunction(); | 520 Type::Function(AnyTagged(zone), Type::Undefined(), 4, zone)->AsFunction(); |
| 529 function->InitParameter(0, Type::Receiver()); // JSFunction | 521 function->InitParameter(0, Type::Receiver()); // JSFunction |
| 530 function->InitParameter(1, AnyTagged(zone)); // the new target | 522 function->InitParameter(1, AnyTagged(zone)); // the new target |
| 531 function->InitParameter(2, UntaggedIntegral32(zone)); // actual #arguments | 523 function->InitParameter(2, UntaggedIntegral32(zone)); // actual #arguments |
| 532 function->InitParameter(3, UntaggedIntegral32(zone)); // expected #arguments | 524 function->InitParameter(3, UntaggedIntegral32(zone)); // expected #arguments |
| 533 return function; | 525 return function; |
| 534 } | 526 } |
| 535 | 527 |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 583 Type::Function(AnyTagged(zone), Type::Undefined(), 4, zone)->AsFunction(); | 575 Type::Function(AnyTagged(zone), Type::Undefined(), 4, zone)->AsFunction(); |
| 584 function->InitParameter(kAccumulatorParameter, AnyTagged(zone)); | 576 function->InitParameter(kAccumulatorParameter, AnyTagged(zone)); |
| 585 function->InitParameter(kBytecodeOffsetParameter, UntaggedIntegral32(zone)); | 577 function->InitParameter(kBytecodeOffsetParameter, UntaggedIntegral32(zone)); |
| 586 function->InitParameter(kBytecodeArrayParameter, AnyTagged(zone)); | 578 function->InitParameter(kBytecodeArrayParameter, AnyTagged(zone)); |
| 587 function->InitParameter(kDispatchTableParameter, AnyTagged(zone)); | 579 function->InitParameter(kDispatchTableParameter, AnyTagged(zone)); |
| 588 return function; | 580 return function; |
| 589 } | 581 } |
| 590 | 582 |
| 591 } // namespace internal | 583 } // namespace internal |
| 592 } // namespace v8 | 584 } // namespace v8 |
| OLD | NEW |