src/share/vm/opto/runtime.cpp

changeset 1648
6deeaebad47a
parent 1601
7b0e9cba0307
child 1651
7f8790caccb0
equal deleted inserted replaced
1631:f3345b7b01b4 1648:6deeaebad47a
1 /* 1 /*
2 * Copyright 1998-2009 Sun Microsystems, Inc. All Rights Reserved. 2 * Copyright 1998-2010 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
808 fatal("Native mathod should not have path to exception handling"); 808 fatal("Native mathod should not have path to exception handling");
809 } else { 809 } else {
810 // we are switching to old paradigm: search for exception handler in caller_frame 810 // we are switching to old paradigm: search for exception handler in caller_frame
811 // instead in exception handler of caller_frame.sender() 811 // instead in exception handler of caller_frame.sender()
812 812
813 if (JvmtiExport::can_post_exceptions()) { 813 if (JvmtiExport::can_post_on_exceptions()) {
814 // "Full-speed catching" is not necessary here, 814 // "Full-speed catching" is not necessary here,
815 // since we're notifying the VM on every catch. 815 // since we're notifying the VM on every catch.
816 // Force deoptimization and the rest of the lookup 816 // Force deoptimization and the rest of the lookup
817 // will be fine. 817 // will be fine.
818 deoptimize_caller_frame(thread, true); 818 deoptimize_caller_frame(thread, true);
973 RegisterMap reg_map(thread); 973 RegisterMap reg_map(thread);
974 frame stub_frame = thread->last_frame(); 974 frame stub_frame = thread->last_frame();
975 assert(stub_frame.is_runtime_frame() || exception_blob()->contains(stub_frame.pc()), "sanity check"); 975 assert(stub_frame.is_runtime_frame() || exception_blob()->contains(stub_frame.pc()), "sanity check");
976 frame caller_frame = stub_frame.sender(&reg_map); 976 frame caller_frame = stub_frame.sender(&reg_map);
977 977
978 VM_DeoptimizeFrame deopt(thread, caller_frame.id()); 978 // bypass VM_DeoptimizeFrame and deoptimize the frame directly
979 VMThread::execute(&deopt); 979 Deoptimization::deoptimize_frame(thread, caller_frame.id());
980 } 980 }
981 } 981 }
982 982
983 983
984 const TypeFunc *OptoRuntime::register_finalizer_Type() { 984 const TypeFunc *OptoRuntime::register_finalizer_Type() {

mercurial