equal
deleted
inserted
replaced
1 /* |
1 /* |
2 * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. 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. |
452 // enough stack space available to reprotect the stack. |
452 // enough stack space available to reprotect the stack. |
453 #ifndef CC_INTERP |
453 #ifndef CC_INTERP |
454 continuation = Interpreter::remove_activation_entry(); |
454 continuation = Interpreter::remove_activation_entry(); |
455 #endif |
455 #endif |
456 // Count this for compilation purposes |
456 // Count this for compilation purposes |
457 h_method->interpreter_throwout_increment(); |
457 h_method->interpreter_throwout_increment(THREAD); |
458 } else { |
458 } else { |
459 // handler in this method => change bci/bcp to handler bci/bcp and continue there |
459 // handler in this method => change bci/bcp to handler bci/bcp and continue there |
460 handler_pc = h_method->code_base() + handler_bci; |
460 handler_pc = h_method->code_base() + handler_bci; |
461 #ifndef CC_INTERP |
461 #ifndef CC_INTERP |
462 set_bcp_and_mdp(handler_pc, thread); |
462 set_bcp_and_mdp(handler_pc, thread); |
899 // need to take the lock before making any ProfileData structures. |
899 // need to take the lock before making any ProfileData structures. |
900 ProfileData* data = h_mdo->data_at(h_mdo->dp_to_di(fr.interpreter_frame_mdp())); |
900 ProfileData* data = h_mdo->data_at(h_mdo->dp_to_di(fr.interpreter_frame_mdp())); |
901 RetData* rdata = data->as_RetData(); |
901 RetData* rdata = data->as_RetData(); |
902 address new_mdp = rdata->fixup_ret(return_bci, h_mdo); |
902 address new_mdp = rdata->fixup_ret(return_bci, h_mdo); |
903 fr.interpreter_frame_set_mdp(new_mdp); |
903 fr.interpreter_frame_set_mdp(new_mdp); |
|
904 IRT_END |
|
905 |
|
906 IRT_ENTRY(MethodCounters*, InterpreterRuntime::build_method_counters(JavaThread* thread, Method* m)) |
|
907 MethodCounters* mcs = Method::build_method_counters(m, thread); |
|
908 if (HAS_PENDING_EXCEPTION) { |
|
909 assert((PENDING_EXCEPTION->is_a(SystemDictionary::OutOfMemoryError_klass())), "we expect only an OOM error here"); |
|
910 CLEAR_PENDING_EXCEPTION; |
|
911 } |
|
912 return mcs; |
904 IRT_END |
913 IRT_END |
905 |
914 |
906 |
915 |
907 IRT_ENTRY(void, InterpreterRuntime::at_safepoint(JavaThread* thread)) |
916 IRT_ENTRY(void, InterpreterRuntime::at_safepoint(JavaThread* thread)) |
908 // We used to need an explict preserve_arguments here for invoke bytecodes. However, |
917 // We used to need an explict preserve_arguments here for invoke bytecodes. However, |