src/share/vm/c1/c1_Instruction.cpp

Print this page
rev 2893 : 7121756: Improve C1 inlining policy by using profiling at call sites
Summary: profile based recompilation of methods with C1 with more inlining.
Reviewed-by:

*** 235,250 **** ciType* CheckCast::declared_type() const { return klass(); } ciType* CheckCast::exact_type() const { ! if (klass()->is_instance_klass()) { ! ciInstanceKlass* ik = (ciInstanceKlass*)klass(); ! if (ik->is_loaded() && ik->is_final()) { ! return ik; ! } ! } return NULL; } // Implementation of ArithmeticOp --- 235,248 ---- ciType* CheckCast::declared_type() const { return klass(); } ciType* CheckCast::exact_type() const { ! if (direct_compare()) return klass(); ! ! assert(!klass()->is_instance_klass() || !klass()->is_loaded() || !((ciInstanceKlass*)klass())->is_final(), "should be a direct compare"); ! return NULL; } // Implementation of ArithmeticOp
*** 339,355 **** // Implementation of Invoke Invoke::Invoke(Bytecodes::Code code, ValueType* result_type, Value recv, Values* args, ! int vtable_index, ciMethod* target, ValueStack* state_before) : StateSplit(result_type, state_before) , _code(code) , _recv(recv) , _args(args) , _vtable_index(vtable_index) , _target(target) { set_flag(TargetIsLoadedFlag, target->is_loaded()); set_flag(TargetIsFinalFlag, target_is_loaded() && target->is_final_method()); set_flag(TargetIsStrictfpFlag, target_is_loaded() && target->is_strict()); --- 337,355 ---- // Implementation of Invoke Invoke::Invoke(Bytecodes::Code code, ValueType* result_type, Value recv, Values* args, ! int vtable_index, ciMethod* target, ValueStack* state_before, ! bool is_profiled) : StateSplit(result_type, state_before) , _code(code) , _recv(recv) , _args(args) , _vtable_index(vtable_index) , _target(target) + , _is_profiled(is_profiled) { set_flag(TargetIsLoadedFlag, target->is_loaded()); set_flag(TargetIsFinalFlag, target_is_loaded() && target->is_final_method()); set_flag(TargetIsStrictfpFlag, target_is_loaded() && target->is_strict());