OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 30 matching lines...) Expand all Loading... |
41 namespace v8 { | 41 namespace v8 { |
42 namespace internal { | 42 namespace internal { |
43 | 43 |
44 | 44 |
45 void KeyedLoadFastElementStub::InitializeInterfaceDescriptor( | 45 void KeyedLoadFastElementStub::InitializeInterfaceDescriptor( |
46 Isolate* isolate, | 46 Isolate* isolate, |
47 CodeStubInterfaceDescriptor* descriptor) { | 47 CodeStubInterfaceDescriptor* descriptor) { |
48 static Register registers[] = { edx, ecx }; | 48 static Register registers[] = { edx, ecx }; |
49 descriptor->register_param_count_ = 2; | 49 descriptor->register_param_count_ = 2; |
50 descriptor->register_params_ = registers; | 50 descriptor->register_params_ = registers; |
| 51 descriptor->stack_parameter_count_ = NULL; |
51 descriptor->deoptimization_handler_ = | 52 descriptor->deoptimization_handler_ = |
52 FUNCTION_ADDR(KeyedLoadIC_MissFromStubFailure); | 53 FUNCTION_ADDR(KeyedLoadIC_MissFromStubFailure); |
53 } | 54 } |
54 | 55 |
55 | 56 |
56 void TransitionElementsKindStub::InitializeInterfaceDescriptor( | 57 void TransitionElementsKindStub::InitializeInterfaceDescriptor( |
57 Isolate* isolate, | 58 Isolate* isolate, |
58 CodeStubInterfaceDescriptor* descriptor) { | 59 CodeStubInterfaceDescriptor* descriptor) { |
59 static Register registers[] = { eax, ebx }; | 60 static Register registers[] = { eax, ebx }; |
60 descriptor->register_param_count_ = 2; | 61 descriptor->register_param_count_ = 2; |
(...skipping 7578 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7639 __ pop(edx); | 7640 __ pop(edx); |
7640 __ ret(0); | 7641 __ ret(0); |
7641 } | 7642 } |
7642 | 7643 |
7643 | 7644 |
7644 void StubFailureTrampolineStub::Generate(MacroAssembler* masm) { | 7645 void StubFailureTrampolineStub::Generate(MacroAssembler* masm) { |
7645 ASSERT(!Serializer::enabled()); | 7646 ASSERT(!Serializer::enabled()); |
7646 bool save_fp_regs = CpuFeatures::IsSupported(SSE2); | 7647 bool save_fp_regs = CpuFeatures::IsSupported(SSE2); |
7647 CEntryStub ces(1, save_fp_regs ? kSaveFPRegs : kDontSaveFPRegs); | 7648 CEntryStub ces(1, save_fp_regs ? kSaveFPRegs : kDontSaveFPRegs); |
7648 __ call(ces.GetCode(), RelocInfo::CODE_TARGET); | 7649 __ call(ces.GetCode(), RelocInfo::CODE_TARGET); |
| 7650 int parameter_count_offset = |
| 7651 StubFailureTrampolineFrame::kCallerStackParameterCountFrameOffset; |
| 7652 __ mov(ebx, MemOperand(ebp, parameter_count_offset)); |
7649 masm->LeaveFrame(StackFrame::STUB_FAILURE_TRAMPOLINE); | 7653 masm->LeaveFrame(StackFrame::STUB_FAILURE_TRAMPOLINE); |
7650 __ ret(0); // Return to IC Miss stub, continuation still on stack. | 7654 __ pop(ecx); |
| 7655 __ lea(esp, MemOperand(esp, ebx, times_pointer_size, |
| 7656 extra_expression_stack_count_ * kPointerSize)); |
| 7657 __ jmp(ecx); // Return to IC Miss stub, continuation still on stack. |
7651 } | 7658 } |
7652 | 7659 |
7653 | 7660 |
7654 void ProfileEntryHookStub::MaybeCallEntryHook(MacroAssembler* masm) { | 7661 void ProfileEntryHookStub::MaybeCallEntryHook(MacroAssembler* masm) { |
7655 if (entry_hook_ != NULL) { | 7662 if (entry_hook_ != NULL) { |
7656 ProfileEntryHookStub stub; | 7663 ProfileEntryHookStub stub; |
7657 masm->CallStub(&stub); | 7664 masm->CallStub(&stub); |
7658 } | 7665 } |
7659 } | 7666 } |
7660 | 7667 |
(...skipping 19 matching lines...) Expand all Loading... |
7680 // Restore ecx. | 7687 // Restore ecx. |
7681 __ pop(ecx); | 7688 __ pop(ecx); |
7682 __ ret(0); | 7689 __ ret(0); |
7683 } | 7690 } |
7684 | 7691 |
7685 #undef __ | 7692 #undef __ |
7686 | 7693 |
7687 } } // namespace v8::internal | 7694 } } // namespace v8::internal |
7688 | 7695 |
7689 #endif // V8_TARGET_ARCH_IA32 | 7696 #endif // V8_TARGET_ARCH_IA32 |
OLD | NEW |