hotspot/src/share/vm/interpreter/interpreterRuntime.cpp
changeset 17002 d86c9dfa4a5f
parent 16670 4af09aff4237
parent 17000 11bf92e571a2
child 17087 f0b76c4c93a0
equal deleted inserted replaced
16990:cfee553f467a 17002:d86c9dfa4a5f
     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,