src/share/vm/opto/compile.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/opto

src/share/vm/opto/compile.hpp

Print this page
rev 6579 : 8046542: [I.finalize() calls from methods compiled by C1 do not cause IllegalAccessError on Sparc
Summary: call to Object.finalize() sometimes allowed by compilers on array type
Reviewed-by:


 835 
 836   // Building nodes
 837   void              rethrow_exceptions(JVMState* jvms);
 838   void              return_values(JVMState* jvms);
 839   JVMState*         build_start_state(StartNode* start, const TypeFunc* tf);
 840 
 841   // Decide how to build a call.
 842   // The profile factor is a discount to apply to this site's interp. profile.
 843   CallGenerator*    call_generator(ciMethod* call_method, int vtable_index, bool call_does_dispatch,
 844                                    JVMState* jvms, bool allow_inline, float profile_factor, ciKlass* speculative_receiver_type = NULL,
 845                                    bool allow_intrinsics = true, bool delayed_forbidden = false);
 846   bool should_delay_inlining(ciMethod* call_method, JVMState* jvms) {
 847     return should_delay_string_inlining(call_method, jvms) ||
 848            should_delay_boxing_inlining(call_method, jvms);
 849   }
 850   bool should_delay_string_inlining(ciMethod* call_method, JVMState* jvms);
 851   bool should_delay_boxing_inlining(ciMethod* call_method, JVMState* jvms);
 852 
 853   // Helper functions to identify inlining potential at call-site
 854   ciMethod* optimize_virtual_call(ciMethod* caller, int bci, ciInstanceKlass* klass,
 855                                   ciMethod* callee, const TypeOopPtr* receiver_type,
 856                                   bool is_virtual,
 857                                   bool &call_does_dispatch, int &vtable_index);
 858   ciMethod* optimize_inlining(ciMethod* caller, int bci, ciInstanceKlass* klass,
 859                               ciMethod* callee, const TypeOopPtr* receiver_type);
 860 
 861   // Report if there were too many traps at a current method and bci.
 862   // Report if a trap was recorded, and/or PerMethodTrapLimit was exceeded.
 863   // If there is no MDO at all, report no trap unless told to assume it.
 864   bool too_many_traps(ciMethod* method, int bci, Deoptimization::DeoptReason reason);
 865   // This version, unspecific to a particular bci, asks if
 866   // PerMethodTrapLimit was exceeded for all inlined methods seen so far.
 867   bool too_many_traps(Deoptimization::DeoptReason reason,
 868                       // Privately used parameter for logging:
 869                       ciMethodData* logmd = NULL);
 870   // Report if there were too many recompiles at a method and bci.
 871   bool too_many_recompiles(ciMethod* method, int bci, Deoptimization::DeoptReason reason);
 872   // Return a bitset with the reasons where deoptimization is allowed,
 873   // i.e., where there were not too many uncommon traps.
 874   int _allowed_reasons;
 875   int      allowed_deopt_reasons() { return _allowed_reasons; }
 876   void set_allowed_deopt_reasons();




 835 
 836   // Building nodes
 837   void              rethrow_exceptions(JVMState* jvms);
 838   void              return_values(JVMState* jvms);
 839   JVMState*         build_start_state(StartNode* start, const TypeFunc* tf);
 840 
 841   // Decide how to build a call.
 842   // The profile factor is a discount to apply to this site's interp. profile.
 843   CallGenerator*    call_generator(ciMethod* call_method, int vtable_index, bool call_does_dispatch,
 844                                    JVMState* jvms, bool allow_inline, float profile_factor, ciKlass* speculative_receiver_type = NULL,
 845                                    bool allow_intrinsics = true, bool delayed_forbidden = false);
 846   bool should_delay_inlining(ciMethod* call_method, JVMState* jvms) {
 847     return should_delay_string_inlining(call_method, jvms) ||
 848            should_delay_boxing_inlining(call_method, jvms);
 849   }
 850   bool should_delay_string_inlining(ciMethod* call_method, JVMState* jvms);
 851   bool should_delay_boxing_inlining(ciMethod* call_method, JVMState* jvms);
 852 
 853   // Helper functions to identify inlining potential at call-site
 854   ciMethod* optimize_virtual_call(ciMethod* caller, int bci, ciInstanceKlass* klass,
 855                                   ciKlass* holder, ciMethod* callee,
 856                                   const TypeOopPtr* receiver_type, bool is_virtual,
 857                                   bool &call_does_dispatch, int &vtable_index);
 858   ciMethod* optimize_inlining(ciMethod* caller, int bci, ciInstanceKlass* klass,
 859                               ciMethod* callee, const TypeOopPtr* receiver_type);
 860 
 861   // Report if there were too many traps at a current method and bci.
 862   // Report if a trap was recorded, and/or PerMethodTrapLimit was exceeded.
 863   // If there is no MDO at all, report no trap unless told to assume it.
 864   bool too_many_traps(ciMethod* method, int bci, Deoptimization::DeoptReason reason);
 865   // This version, unspecific to a particular bci, asks if
 866   // PerMethodTrapLimit was exceeded for all inlined methods seen so far.
 867   bool too_many_traps(Deoptimization::DeoptReason reason,
 868                       // Privately used parameter for logging:
 869                       ciMethodData* logmd = NULL);
 870   // Report if there were too many recompiles at a method and bci.
 871   bool too_many_recompiles(ciMethod* method, int bci, Deoptimization::DeoptReason reason);
 872   // Return a bitset with the reasons where deoptimization is allowed,
 873   // i.e., where there were not too many uncommon traps.
 874   int _allowed_reasons;
 875   int      allowed_deopt_reasons() { return _allowed_reasons; }
 876   void set_allowed_deopt_reasons();


src/share/vm/opto/compile.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File