614 _last_tf_m = m;
615 _last_tf = tf;
616 }
617
618 AliasType* alias_type(int idx) { assert(idx < num_alias_types(), "oob"); return _alias_types[idx]; }
619 AliasType* alias_type(const TypePtr* adr_type, ciField* field = NULL) { return find_alias_type(adr_type, false, field); }
620 bool have_alias_type(const TypePtr* adr_type);
621 AliasType* alias_type(ciField* field);
622
623 int get_alias_index(const TypePtr* at) { return alias_type(at)->index(); }
624 const TypePtr* get_adr_type(uint aidx) { return alias_type(aidx)->adr_type(); }
625 int get_general_index(uint aidx) { return alias_type(aidx)->general_index(); }
626
627 // Building nodes
628 void rethrow_exceptions(JVMState* jvms);
629 void return_values(JVMState* jvms);
630 JVMState* build_start_state(StartNode* start, const TypeFunc* tf);
631
632 // Decide how to build a call.
633 // The profile factor is a discount to apply to this site's interp. profile.
634 CallGenerator* call_generator(ciMethod* call_method, int vtable_index, bool call_is_virtual, JVMState* jvms, bool allow_inline, float profile_factor);
635 bool should_delay_inlining(ciMethod* call_method, JVMState* jvms);
636
637 // Report if there were too many traps at a current method and bci.
638 // Report if a trap was recorded, and/or PerMethodTrapLimit was exceeded.
639 // If there is no MDO at all, report no trap unless told to assume it.
640 bool too_many_traps(ciMethod* method, int bci, Deoptimization::DeoptReason reason);
641 // This version, unspecific to a particular bci, asks if
642 // PerMethodTrapLimit was exceeded for all inlined methods seen so far.
643 bool too_many_traps(Deoptimization::DeoptReason reason,
644 // Privately used parameter for logging:
645 ciMethodData* logmd = NULL);
646 // Report if there were too many recompiles at a method and bci.
647 bool too_many_recompiles(ciMethod* method, int bci, Deoptimization::DeoptReason reason);
648
649 // Parsing, optimization
650 PhaseGVN* initial_gvn() { return _initial_gvn; }
651 Unique_Node_List* for_igvn() { return _for_igvn; }
652 inline void record_for_igvn(Node* n); // Body is after class Unique_Node_List.
653 void set_initial_gvn(PhaseGVN *gvn) { _initial_gvn = gvn; }
654 void set_for_igvn(Unique_Node_List *for_igvn) { _for_igvn = for_igvn; }
|
614 _last_tf_m = m;
615 _last_tf = tf;
616 }
617
618 AliasType* alias_type(int idx) { assert(idx < num_alias_types(), "oob"); return _alias_types[idx]; }
619 AliasType* alias_type(const TypePtr* adr_type, ciField* field = NULL) { return find_alias_type(adr_type, false, field); }
620 bool have_alias_type(const TypePtr* adr_type);
621 AliasType* alias_type(ciField* field);
622
623 int get_alias_index(const TypePtr* at) { return alias_type(at)->index(); }
624 const TypePtr* get_adr_type(uint aidx) { return alias_type(aidx)->adr_type(); }
625 int get_general_index(uint aidx) { return alias_type(aidx)->general_index(); }
626
627 // Building nodes
628 void rethrow_exceptions(JVMState* jvms);
629 void return_values(JVMState* jvms);
630 JVMState* build_start_state(StartNode* start, const TypeFunc* tf);
631
632 // Decide how to build a call.
633 // The profile factor is a discount to apply to this site's interp. profile.
634 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);
635 bool should_delay_inlining(ciMethod* call_method, JVMState* jvms);
636
637 // Report if there were too many traps at a current method and bci.
638 // Report if a trap was recorded, and/or PerMethodTrapLimit was exceeded.
639 // If there is no MDO at all, report no trap unless told to assume it.
640 bool too_many_traps(ciMethod* method, int bci, Deoptimization::DeoptReason reason);
641 // This version, unspecific to a particular bci, asks if
642 // PerMethodTrapLimit was exceeded for all inlined methods seen so far.
643 bool too_many_traps(Deoptimization::DeoptReason reason,
644 // Privately used parameter for logging:
645 ciMethodData* logmd = NULL);
646 // Report if there were too many recompiles at a method and bci.
647 bool too_many_recompiles(ciMethod* method, int bci, Deoptimization::DeoptReason reason);
648
649 // Parsing, optimization
650 PhaseGVN* initial_gvn() { return _initial_gvn; }
651 Unique_Node_List* for_igvn() { return _for_igvn; }
652 inline void record_for_igvn(Node* n); // Body is after class Unique_Node_List.
653 void set_initial_gvn(PhaseGVN *gvn) { _initial_gvn = gvn; }
654 void set_for_igvn(Unique_Node_List *for_igvn) { _for_igvn = for_igvn; }
|