OLD | NEW |
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_X64 | 7 #if V8_TARGET_ARCH_X64 |
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 288 matching lines...) Loading... |
299 descriptor->Initialize( | 299 descriptor->Initialize( |
300 ARRAY_SIZE(registers), registers, | 300 ARRAY_SIZE(registers), registers, |
301 Runtime::FunctionForId(Runtime::kHiddenStringAdd)->entry); | 301 Runtime::FunctionForId(Runtime::kHiddenStringAdd)->entry); |
302 } | 302 } |
303 | 303 |
304 | 304 |
305 void CallDescriptors::InitializeForIsolate(Isolate* isolate) { | 305 void CallDescriptors::InitializeForIsolate(Isolate* isolate) { |
306 { | 306 { |
307 CallInterfaceDescriptor* descriptor = | 307 CallInterfaceDescriptor* descriptor = |
308 isolate->call_descriptor(Isolate::ArgumentAdaptorCall); | 308 isolate->call_descriptor(Isolate::ArgumentAdaptorCall); |
309 static Register registers[] = { rdi, // JSFunction | 309 Register registers[] = { rdi, // JSFunction |
310 rsi, // context | 310 rsi, // context |
311 rax, // actual number of arguments | 311 rax, // actual number of arguments |
312 rbx, // expected number of arguments | 312 rbx, // expected number of arguments |
313 }; | 313 }; |
314 static Representation representations[] = { | 314 Representation representations[] = { |
315 Representation::Tagged(), // JSFunction | 315 Representation::Tagged(), // JSFunction |
316 Representation::Tagged(), // context | 316 Representation::Tagged(), // context |
317 Representation::Integer32(), // actual number of arguments | 317 Representation::Integer32(), // actual number of arguments |
318 Representation::Integer32(), // expected number of arguments | 318 Representation::Integer32(), // expected number of arguments |
319 }; | 319 }; |
320 descriptor->register_param_count_ = 4; | 320 descriptor->Initialize(ARRAY_SIZE(registers), registers, representations); |
321 descriptor->register_params_ = registers; | |
322 descriptor->param_representations_ = representations; | |
323 } | 321 } |
324 { | 322 { |
325 CallInterfaceDescriptor* descriptor = | 323 CallInterfaceDescriptor* descriptor = |
326 isolate->call_descriptor(Isolate::KeyedCall); | 324 isolate->call_descriptor(Isolate::KeyedCall); |
327 static Register registers[] = { rsi, // context | 325 Register registers[] = { rsi, // context |
328 rcx, // key | 326 rcx, // key |
329 }; | 327 }; |
330 static Representation representations[] = { | 328 Representation representations[] = { |
331 Representation::Tagged(), // context | 329 Representation::Tagged(), // context |
332 Representation::Tagged(), // key | 330 Representation::Tagged(), // key |
333 }; | 331 }; |
334 descriptor->register_param_count_ = 2; | 332 descriptor->Initialize(ARRAY_SIZE(registers), registers, representations); |
335 descriptor->register_params_ = registers; | |
336 descriptor->param_representations_ = representations; | |
337 } | 333 } |
338 { | 334 { |
339 CallInterfaceDescriptor* descriptor = | 335 CallInterfaceDescriptor* descriptor = |
340 isolate->call_descriptor(Isolate::NamedCall); | 336 isolate->call_descriptor(Isolate::NamedCall); |
341 static Register registers[] = { rsi, // context | 337 Register registers[] = { rsi, // context |
342 rcx, // name | 338 rcx, // name |
343 }; | 339 }; |
344 static Representation representations[] = { | 340 Representation representations[] = { |
345 Representation::Tagged(), // context | 341 Representation::Tagged(), // context |
346 Representation::Tagged(), // name | 342 Representation::Tagged(), // name |
347 }; | 343 }; |
348 descriptor->register_param_count_ = 2; | 344 descriptor->Initialize(ARRAY_SIZE(registers), registers, representations); |
349 descriptor->register_params_ = registers; | |
350 descriptor->param_representations_ = representations; | |
351 } | 345 } |
352 { | 346 { |
353 CallInterfaceDescriptor* descriptor = | 347 CallInterfaceDescriptor* descriptor = |
354 isolate->call_descriptor(Isolate::CallHandler); | 348 isolate->call_descriptor(Isolate::CallHandler); |
355 static Register registers[] = { rsi, // context | 349 Register registers[] = { rsi, // context |
356 rdx, // receiver | 350 rdx, // receiver |
357 }; | 351 }; |
358 static Representation representations[] = { | 352 Representation representations[] = { |
359 Representation::Tagged(), // context | 353 Representation::Tagged(), // context |
360 Representation::Tagged(), // receiver | 354 Representation::Tagged(), // receiver |
361 }; | 355 }; |
362 descriptor->register_param_count_ = 2; | 356 descriptor->Initialize(ARRAY_SIZE(registers), registers, representations); |
363 descriptor->register_params_ = registers; | |
364 descriptor->param_representations_ = representations; | |
365 } | 357 } |
366 { | 358 { |
367 CallInterfaceDescriptor* descriptor = | 359 CallInterfaceDescriptor* descriptor = |
368 isolate->call_descriptor(Isolate::ApiFunctionCall); | 360 isolate->call_descriptor(Isolate::ApiFunctionCall); |
369 static Register registers[] = { rax, // callee | 361 Register registers[] = { rax, // callee |
370 rbx, // call_data | 362 rbx, // call_data |
371 rcx, // holder | 363 rcx, // holder |
372 rdx, // api_function_address | 364 rdx, // api_function_address |
373 rsi, // context | 365 rsi, // context |
374 }; | 366 }; |
375 static Representation representations[] = { | 367 Representation representations[] = { |
376 Representation::Tagged(), // callee | 368 Representation::Tagged(), // callee |
377 Representation::Tagged(), // call_data | 369 Representation::Tagged(), // call_data |
378 Representation::Tagged(), // holder | 370 Representation::Tagged(), // holder |
379 Representation::External(), // api_function_address | 371 Representation::External(), // api_function_address |
380 Representation::Tagged(), // context | 372 Representation::Tagged(), // context |
381 }; | 373 }; |
382 descriptor->register_param_count_ = 5; | 374 descriptor->Initialize(ARRAY_SIZE(registers), registers, representations); |
383 descriptor->register_params_ = registers; | |
384 descriptor->param_representations_ = representations; | |
385 } | 375 } |
386 } | 376 } |
387 | 377 |
388 | 378 |
389 #define __ ACCESS_MASM(masm) | 379 #define __ ACCESS_MASM(masm) |
390 | 380 |
391 | 381 |
392 void HydrogenCodeStub::GenerateLightweightMiss(MacroAssembler* masm) { | 382 void HydrogenCodeStub::GenerateLightweightMiss(MacroAssembler* masm) { |
393 // Update the static counter each time a new code stub is generated. | 383 // Update the static counter each time a new code stub is generated. |
394 isolate()->counters()->code_stubs()->Increment(); | 384 isolate()->counters()->code_stubs()->Increment(); |
(...skipping 4593 matching lines...) Loading... |
4988 return_value_operand, | 4978 return_value_operand, |
4989 NULL); | 4979 NULL); |
4990 } | 4980 } |
4991 | 4981 |
4992 | 4982 |
4993 #undef __ | 4983 #undef __ |
4994 | 4984 |
4995 } } // namespace v8::internal | 4985 } } // namespace v8::internal |
4996 | 4986 |
4997 #endif // V8_TARGET_ARCH_X64 | 4987 #endif // V8_TARGET_ARCH_X64 |
OLD | NEW |