| 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/v8.h" | 5 #include "src/v8.h" |
| 6 | 6 |
| 7 #if V8_TARGET_ARCH_ARM | 7 #if V8_TARGET_ARCH_ARM |
| 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 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 304 void CallDescriptors::InitializeForIsolate(Isolate* isolate) { | 304 void CallDescriptors::InitializeForIsolate(Isolate* isolate) { |
| 305 static PlatformCallInterfaceDescriptor default_descriptor = | 305 static PlatformCallInterfaceDescriptor default_descriptor = |
| 306 PlatformCallInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS); | 306 PlatformCallInterfaceDescriptor(CAN_INLINE_TARGET_ADDRESS); |
| 307 | 307 |
| 308 static PlatformCallInterfaceDescriptor noInlineDescriptor = | 308 static PlatformCallInterfaceDescriptor noInlineDescriptor = |
| 309 PlatformCallInterfaceDescriptor(NEVER_INLINE_TARGET_ADDRESS); | 309 PlatformCallInterfaceDescriptor(NEVER_INLINE_TARGET_ADDRESS); |
| 310 | 310 |
| 311 { | 311 { |
| 312 CallInterfaceDescriptor* descriptor = | 312 CallInterfaceDescriptor* descriptor = |
| 313 isolate->call_descriptor(Isolate::ArgumentAdaptorCall); | 313 isolate->call_descriptor(Isolate::ArgumentAdaptorCall); |
| 314 static Register registers[] = { r1, // JSFunction | 314 Register registers[] = { r1, // JSFunction |
| 315 cp, // context | 315 cp, // context |
| 316 r0, // actual number of arguments | 316 r0, // actual number of arguments |
| 317 r2, // expected number of arguments | 317 r2, // expected number of arguments |
| 318 }; | 318 }; |
| 319 static Representation representations[] = { | 319 Representation representations[] = { |
| 320 Representation::Tagged(), // JSFunction | 320 Representation::Tagged(), // JSFunction |
| 321 Representation::Tagged(), // context | 321 Representation::Tagged(), // context |
| 322 Representation::Integer32(), // actual number of arguments | 322 Representation::Integer32(), // actual number of arguments |
| 323 Representation::Integer32(), // expected number of arguments | 323 Representation::Integer32(), // expected number of arguments |
| 324 }; | 324 }; |
| 325 descriptor->register_param_count_ = 4; | 325 descriptor->Initialize(ARRAY_SIZE(registers), registers, |
| 326 descriptor->register_params_ = registers; | 326 representations, &default_descriptor); |
| 327 descriptor->param_representations_ = representations; | |
| 328 descriptor->platform_specific_descriptor_ = &default_descriptor; | |
| 329 } | 327 } |
| 330 { | 328 { |
| 331 CallInterfaceDescriptor* descriptor = | 329 CallInterfaceDescriptor* descriptor = |
| 332 isolate->call_descriptor(Isolate::KeyedCall); | 330 isolate->call_descriptor(Isolate::KeyedCall); |
| 333 static Register registers[] = { cp, // context | 331 Register registers[] = { cp, // context |
| 334 r2, // key | 332 r2, // key |
| 335 }; | 333 }; |
| 336 static Representation representations[] = { | 334 Representation representations[] = { |
| 337 Representation::Tagged(), // context | 335 Representation::Tagged(), // context |
| 338 Representation::Tagged(), // key | 336 Representation::Tagged(), // key |
| 339 }; | 337 }; |
| 340 descriptor->register_param_count_ = 2; | 338 descriptor->Initialize(ARRAY_SIZE(registers), registers, |
| 341 descriptor->register_params_ = registers; | 339 representations, &noInlineDescriptor); |
| 342 descriptor->param_representations_ = representations; | |
| 343 descriptor->platform_specific_descriptor_ = &noInlineDescriptor; | |
| 344 } | 340 } |
| 345 { | 341 { |
| 346 CallInterfaceDescriptor* descriptor = | 342 CallInterfaceDescriptor* descriptor = |
| 347 isolate->call_descriptor(Isolate::NamedCall); | 343 isolate->call_descriptor(Isolate::NamedCall); |
| 348 static Register registers[] = { cp, // context | 344 Register registers[] = { cp, // context |
| 349 r2, // name | 345 r2, // name |
| 350 }; | 346 }; |
| 351 static Representation representations[] = { | 347 Representation representations[] = { |
| 352 Representation::Tagged(), // context | 348 Representation::Tagged(), // context |
| 353 Representation::Tagged(), // name | 349 Representation::Tagged(), // name |
| 354 }; | 350 }; |
| 355 descriptor->register_param_count_ = 2; | 351 descriptor->Initialize(ARRAY_SIZE(registers), registers, |
| 356 descriptor->register_params_ = registers; | 352 representations, &noInlineDescriptor); |
| 357 descriptor->param_representations_ = representations; | |
| 358 descriptor->platform_specific_descriptor_ = &noInlineDescriptor; | |
| 359 } | 353 } |
| 360 { | 354 { |
| 361 CallInterfaceDescriptor* descriptor = | 355 CallInterfaceDescriptor* descriptor = |
| 362 isolate->call_descriptor(Isolate::CallHandler); | 356 isolate->call_descriptor(Isolate::CallHandler); |
| 363 static Register registers[] = { cp, // context | 357 Register registers[] = { cp, // context |
| 364 r0, // receiver | 358 r0, // receiver |
| 365 }; | 359 }; |
| 366 static Representation representations[] = { | 360 Representation representations[] = { |
| 367 Representation::Tagged(), // context | 361 Representation::Tagged(), // context |
| 368 Representation::Tagged(), // receiver | 362 Representation::Tagged(), // receiver |
| 369 }; | 363 }; |
| 370 descriptor->register_param_count_ = 2; | 364 descriptor->Initialize(ARRAY_SIZE(registers), registers, |
| 371 descriptor->register_params_ = registers; | 365 representations, &default_descriptor); |
| 372 descriptor->param_representations_ = representations; | |
| 373 descriptor->platform_specific_descriptor_ = &default_descriptor; | |
| 374 } | 366 } |
| 375 { | 367 { |
| 376 CallInterfaceDescriptor* descriptor = | 368 CallInterfaceDescriptor* descriptor = |
| 377 isolate->call_descriptor(Isolate::ApiFunctionCall); | 369 isolate->call_descriptor(Isolate::ApiFunctionCall); |
| 378 static Register registers[] = { r0, // callee | 370 Register registers[] = { r0, // callee |
| 379 r4, // call_data | 371 r4, // call_data |
| 380 r2, // holder | 372 r2, // holder |
| 381 r1, // api_function_address | 373 r1, // api_function_address |
| 382 cp, // context | 374 cp, // context |
| 383 }; | 375 }; |
| 384 static Representation representations[] = { | 376 Representation representations[] = { |
| 385 Representation::Tagged(), // callee | 377 Representation::Tagged(), // callee |
| 386 Representation::Tagged(), // call_data | 378 Representation::Tagged(), // call_data |
| 387 Representation::Tagged(), // holder | 379 Representation::Tagged(), // holder |
| 388 Representation::External(), // api_function_address | 380 Representation::External(), // api_function_address |
| 389 Representation::Tagged(), // context | 381 Representation::Tagged(), // context |
| 390 }; | 382 }; |
| 391 descriptor->register_param_count_ = 5; | 383 descriptor->Initialize(ARRAY_SIZE(registers), registers, |
| 392 descriptor->register_params_ = registers; | 384 representations, &default_descriptor); |
| 393 descriptor->param_representations_ = representations; | |
| 394 descriptor->platform_specific_descriptor_ = &default_descriptor; | |
| 395 } | 385 } |
| 396 } | 386 } |
| 397 | 387 |
| 398 | 388 |
| 399 #define __ ACCESS_MASM(masm) | 389 #define __ ACCESS_MASM(masm) |
| 400 | 390 |
| 401 | 391 |
| 402 static void EmitIdenticalObjectComparison(MacroAssembler* masm, | 392 static void EmitIdenticalObjectComparison(MacroAssembler* masm, |
| 403 Label* slow, | 393 Label* slow, |
| 404 Condition cond); | 394 Condition cond); |
| (...skipping 4715 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5120 MemOperand(fp, 6 * kPointerSize), | 5110 MemOperand(fp, 6 * kPointerSize), |
| 5121 NULL); | 5111 NULL); |
| 5122 } | 5112 } |
| 5123 | 5113 |
| 5124 | 5114 |
| 5125 #undef __ | 5115 #undef __ |
| 5126 | 5116 |
| 5127 } } // namespace v8::internal | 5117 } } // namespace v8::internal |
| 5128 | 5118 |
| 5129 #endif // V8_TARGET_ARCH_ARM | 5119 #endif // V8_TARGET_ARCH_ARM |
| OLD | NEW |