Mercurial > hg > truffle
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); |