comparison src/share/vm/interpreter/interpreterRuntime.cpp @ 10107:8df6ddda8090

Merge
author jiangli
date Mon, 15 Apr 2013 21:25:23 -0400
parents cc32ccaaf47f aeaca88565e6
children 746b070f5022
comparison
equal deleted inserted replaced
9149:c60f69931e1a 10107:8df6ddda8090
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,