comparison src/share/vm/opto/compile.hpp @ 7478:5698813d45eb

8005418: JSR 292: virtual dispatch bug in 292 impl Reviewed-by: jrose, kvn
author twisti
date Wed, 09 Jan 2013 15:37:23 -0800
parents d092d1b31229
children 8b3da8d14c93
comparison
equal deleted inserted replaced
7477:038dd2875b94 7478:5698813d45eb
70 class StartNode; 70 class StartNode;
71 class SafePointNode; 71 class SafePointNode;
72 class JVMState; 72 class JVMState;
73 class TypeData; 73 class TypeData;
74 class TypePtr; 74 class TypePtr;
75 class TypeOopPtr;
75 class TypeFunc; 76 class TypeFunc;
76 class Unique_Node_List; 77 class Unique_Node_List;
77 class nmethod; 78 class nmethod;
78 class WarmCallInfo; 79 class WarmCallInfo;
79 class Node_Stack; 80 class Node_Stack;
738 void return_values(JVMState* jvms); 739 void return_values(JVMState* jvms);
739 JVMState* build_start_state(StartNode* start, const TypeFunc* tf); 740 JVMState* build_start_state(StartNode* start, const TypeFunc* tf);
740 741
741 // Decide how to build a call. 742 // Decide how to build a call.
742 // The profile factor is a discount to apply to this site's interp. profile. 743 // The profile factor is a discount to apply to this site's interp. profile.
743 CallGenerator* call_generator(ciMethod* call_method, int vtable_index, bool call_is_virtual, JVMState* jvms, bool allow_inline, float profile_factor, bool allow_intrinsics = true, bool delayed_forbidden = false); 744 CallGenerator* call_generator(ciMethod* call_method, int vtable_index, bool call_does_dispatch, JVMState* jvms, bool allow_inline, float profile_factor, bool allow_intrinsics = true, bool delayed_forbidden = false);
744 bool should_delay_inlining(ciMethod* call_method, JVMState* jvms); 745 bool should_delay_inlining(ciMethod* call_method, JVMState* jvms);
746
747 // Helper functions to identify inlining potential at call-site
748 ciMethod* optimize_virtual_call(ciMethod* caller, int bci, ciInstanceKlass* klass,
749 ciMethod* callee, const TypeOopPtr* receiver_type,
750 bool is_virtual,
751 bool &call_does_dispatch, int &vtable_index);
752 ciMethod* optimize_inlining(ciMethod* caller, int bci, ciInstanceKlass* klass,
753 ciMethod* callee, const TypeOopPtr* receiver_type);
745 754
746 // Report if there were too many traps at a current method and bci. 755 // Report if there were too many traps at a current method and bci.
747 // Report if a trap was recorded, and/or PerMethodTrapLimit was exceeded. 756 // Report if a trap was recorded, and/or PerMethodTrapLimit was exceeded.
748 // If there is no MDO at all, report no trap unless told to assume it. 757 // If there is no MDO at all, report no trap unless told to assume it.
749 bool too_many_traps(ciMethod* method, int bci, Deoptimization::DeoptReason reason); 758 bool too_many_traps(ciMethod* method, int bci, Deoptimization::DeoptReason reason);