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

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

Issue 22801003: Patch CEntry stub to swallow exception if liveedit/restart frame needs it. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: add test Created 7 years, 4 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 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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 3986 matching lines...) Expand 10 before | Expand all | Expand 10 after
3997 JumpIfOOM(masm, rax, kScratchRegister, &already_have_failure); 3997 JumpIfOOM(masm, rax, kScratchRegister, &already_have_failure);
3998 __ movq(rax, Failure::OutOfMemoryException(0x1), RelocInfo::NONE64); 3998 __ movq(rax, Failure::OutOfMemoryException(0x1), RelocInfo::NONE64);
3999 __ bind(&already_have_failure); 3999 __ bind(&already_have_failure);
4000 __ Store(pending_exception, rax); 4000 __ Store(pending_exception, rax);
4001 // Fall through to the next label. 4001 // Fall through to the next label.
4002 4002
4003 __ bind(&throw_termination_exception); 4003 __ bind(&throw_termination_exception);
4004 __ ThrowUncatchable(rax); 4004 __ ThrowUncatchable(rax);
4005 4005
4006 __ bind(&throw_normal_exception); 4006 __ bind(&throw_normal_exception);
4007
4008 #ifdef ENABLE_DEBUGGER_SUPPORT
4009 Label proceed_throwing;
4010 ExternalReference c_entry_frame_to_ignore_exception =
4011 ExternalReference(Debug_Address::CEntryFrameToIgnoreException(),
4012 masm->isolate());
4013
4014 __ xor_(rcx, rcx);
4015
4016 Operand c_entry_frame_to_ignore_exception_operand =
4017 masm->ExternalOperand(c_entry_frame_to_ignore_exception);
4018 __ movq(rdx, c_entry_frame_to_ignore_exception_operand);
4019
4020 __ Store(c_entry_frame_to_ignore_exception, rcx);
4021
4022 __ cmpq(rbp, rdx);
Yang 2013/09/13 09:47:56 Similar to ia32.
Peter.Rybin 2013/09/19 15:35:31 Done.
4023
4024 __ j(not_equal, &proceed_throwing);
4025
4026 __ LeaveExitFrame(save_doubles_);
4027 __ ret(0);
4028
4029 __ bind(&proceed_throwing);
4030 #endif // ENABLE_DEBUGGER_SUPPORT
4031
4007 __ Throw(rax); 4032 __ Throw(rax);
4008 } 4033 }
4009 4034
4010 4035
4011 void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) { 4036 void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) {
4012 Label invoke, handler_entry, exit; 4037 Label invoke, handler_entry, exit;
4013 Label not_outermost_js, not_outermost_js_2; 4038 Label not_outermost_js, not_outermost_js_2;
4014 4039
4015 ProfileEntryHookStub::MaybeCallEntryHook(masm); 4040 ProfileEntryHookStub::MaybeCallEntryHook(masm);
4016 4041
(...skipping 2783 matching lines...) Expand 10 before | Expand all | Expand 10 after
6800 __ bind(&fast_elements_case); 6825 __ bind(&fast_elements_case);
6801 GenerateCase(masm, FAST_ELEMENTS); 6826 GenerateCase(masm, FAST_ELEMENTS);
6802 } 6827 }
6803 6828
6804 6829
6805 #undef __ 6830 #undef __
6806 6831
6807 } } // namespace v8::internal 6832 } } // namespace v8::internal
6808 6833
6809 #endif // V8_TARGET_ARCH_X64 6834 #endif // V8_TARGET_ARCH_X64
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698