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

Side by Side Diff: src/ia32/code-stubs-ia32.cc

Issue 12093089: Support pass-through of stub caller arguments (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: ARM port Created 7 years, 10 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 | Annotate | Revision Log
OLDNEW
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 29 matching lines...) Expand all
40 namespace v8 { 40 namespace v8 {
41 namespace internal { 41 namespace internal {
42 42
43 43
44 void KeyedLoadFastElementStub::InitializeInterfaceDescriptor( 44 void KeyedLoadFastElementStub::InitializeInterfaceDescriptor(
45 Isolate* isolate, 45 Isolate* isolate,
46 CodeStubInterfaceDescriptor* descriptor) { 46 CodeStubInterfaceDescriptor* descriptor) {
47 static Register registers[] = { edx, ecx }; 47 static Register registers[] = { edx, ecx };
48 descriptor->register_param_count_ = 2; 48 descriptor->register_param_count_ = 2;
49 descriptor->register_params_ = registers; 49 descriptor->register_params_ = registers;
50 descriptor->stack_parameter_count_ = NULL;
50 descriptor->deoptimization_handler_ = 51 descriptor->deoptimization_handler_ =
51 FUNCTION_ADDR(KeyedLoadIC_MissFromStubFailure); 52 FUNCTION_ADDR(KeyedLoadIC_MissFromStubFailure);
52 } 53 }
53 54
54 55
55 #define __ ACCESS_MASM(masm) 56 #define __ ACCESS_MASM(masm)
56 57
57 void ToNumberStub::Generate(MacroAssembler* masm) { 58 void ToNumberStub::Generate(MacroAssembler* masm) {
58 // The ToNumber stub takes one argument in eax. 59 // The ToNumber stub takes one argument in eax.
59 Label check_heap_number, call_builtin; 60 Label check_heap_number, call_builtin;
(...skipping 7567 matching lines...) Expand 10 before | Expand all | Expand 10 after
7627 __ pop(edx); 7628 __ pop(edx);
7628 __ ret(0); 7629 __ ret(0);
7629 } 7630 }
7630 7631
7631 7632
7632 void StubFailureTrampolineStub::Generate(MacroAssembler* masm) { 7633 void StubFailureTrampolineStub::Generate(MacroAssembler* masm) {
7633 ASSERT(!Serializer::enabled()); 7634 ASSERT(!Serializer::enabled());
7634 bool save_fp_regs = CpuFeatures::IsSupported(SSE2); 7635 bool save_fp_regs = CpuFeatures::IsSupported(SSE2);
7635 CEntryStub ces(1, save_fp_regs ? kSaveFPRegs : kDontSaveFPRegs); 7636 CEntryStub ces(1, save_fp_regs ? kSaveFPRegs : kDontSaveFPRegs);
7636 __ call(ces.GetCode(), RelocInfo::CODE_TARGET); 7637 __ call(ces.GetCode(), RelocInfo::CODE_TARGET);
7638 __ mov(ebx, MemOperand(ebp, StandardFrameConstants::kMarkerOffset -
7639 2 * kPointerSize));
mvstanton 2013/02/04 08:54:26 Would it make sense to having something like a Stu
danno 2013/02/04 10:22:24 Done.
7637 masm->LeaveFrame(StackFrame::STUB_FAILURE_TRAMPOLINE); 7640 masm->LeaveFrame(StackFrame::STUB_FAILURE_TRAMPOLINE);
7638 __ ret(0); // Return to IC Miss stub, continuation still on stack. 7641 __ pop(ecx);
7642 __ lea(esp, MemOperand(esp, ebx, times_pointer_size,
7643 extra_expression_stack_count_ * kPointerSize));
7644 __ jmp(ecx); // Return to IC Miss stub, continuation still on stack.
7639 } 7645 }
7640 7646
7641 7647
7642 void ProfileEntryHookStub::MaybeCallEntryHook(MacroAssembler* masm) { 7648 void ProfileEntryHookStub::MaybeCallEntryHook(MacroAssembler* masm) {
7643 if (entry_hook_ != NULL) { 7649 if (entry_hook_ != NULL) {
7644 ProfileEntryHookStub stub; 7650 ProfileEntryHookStub stub;
7645 masm->CallStub(&stub); 7651 masm->CallStub(&stub);
7646 } 7652 }
7647 } 7653 }
7648 7654
(...skipping 19 matching lines...) Expand all
7668 // Restore ecx. 7674 // Restore ecx.
7669 __ pop(ecx); 7675 __ pop(ecx);
7670 __ ret(0); 7676 __ ret(0);
7671 } 7677 }
7672 7678
7673 #undef __ 7679 #undef __
7674 7680
7675 } } // namespace v8::internal 7681 } } // namespace v8::internal
7676 7682
7677 #endif // V8_TARGET_ARCH_IA32 7683 #endif // V8_TARGET_ARCH_IA32
OLDNEW
« src/frames.cc ('K') | « src/hydrogen-instructions.h ('k') | src/ia32/deoptimizer-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698