mirror of
https://github.com/openjdk/jdk.git
synced 2026-04-22 21:00:31 +00:00
Review comments resolutions
This commit is contained in:
parent
c59500317c
commit
46fcc9acc0
@ -440,26 +440,25 @@ CallGenerator* CallGenerator::for_mh_late_inline(ciMethod* caller, ciMethod* cal
|
||||
class LateInlineVectorCallGenerator : public LateInlineCallGenerator {
|
||||
protected:
|
||||
bool _use_fallback_generator;
|
||||
CallGenerator* _inline_cg;
|
||||
CallGenerator* _inline_cg2;
|
||||
|
||||
public:
|
||||
LateInlineVectorCallGenerator(ciMethod* method, CallGenerator* intrinsic_cg, CallGenerator* inline_cg) :
|
||||
LateInlineCallGenerator(method, intrinsic_cg) , _inline_cg(inline_cg) {
|
||||
LateInlineCallGenerator(method, intrinsic_cg) , _inline_cg2(inline_cg) {
|
||||
_use_fallback_generator = false;
|
||||
}
|
||||
|
||||
CallGenerator* inline_cg2() const { return _inline_cg; }
|
||||
bool inline_fallback();
|
||||
bool is_fallback_generation() {
|
||||
return _use_fallback_generator;
|
||||
virtual CallGenerator* inline_cg() const {
|
||||
return _use_fallback_generator ? _inline_cg2 : _inline_cg;
|
||||
}
|
||||
virtual bool inline_fallback() const;
|
||||
virtual bool is_vector_late_inline() const { return true; }
|
||||
virtual void enable_fallback_generation() {
|
||||
_use_fallback_generator = true;
|
||||
}
|
||||
};
|
||||
|
||||
bool LateInlineVectorCallGenerator::inline_fallback() {
|
||||
bool LateInlineVectorCallGenerator::inline_fallback() const {
|
||||
switch (method()->intrinsic_id()) {
|
||||
case vmIntrinsics::_VectorSlice: return true;
|
||||
default : return false;
|
||||
@ -705,28 +704,8 @@ void CallGenerator::do_late_inline_helper() {
|
||||
C->set_default_node_notes(entry_nn);
|
||||
}
|
||||
|
||||
CallGenerator* cg = inline_cg();
|
||||
LateInlineVectorCallGenerator* late_inline_vec_cg = nullptr;
|
||||
if (is_vector_late_inline()) {
|
||||
late_inline_vec_cg = static_cast<LateInlineVectorCallGenerator*>(this);
|
||||
if (late_inline_vec_cg->is_fallback_generation() && late_inline_vec_cg->inline_fallback()) {
|
||||
cg = late_inline_vec_cg->inline_cg2();
|
||||
}
|
||||
}
|
||||
|
||||
// Now perform the inlining using the synthesized JVMState
|
||||
JVMState* new_jvms = cg->generate(jvms);
|
||||
|
||||
// Bookkeep call generator for lazy inlining fallback implementation in case of
|
||||
// intrinsification failure.
|
||||
if (late_inline_vec_cg != nullptr && !late_inline_vec_cg->is_fallback_generation()) {
|
||||
if (new_jvms == nullptr) {
|
||||
C->vector_late_inlines()->append_if_missing(this);
|
||||
} else {
|
||||
C->vector_late_inlines()->remove_if_existing(this);
|
||||
}
|
||||
}
|
||||
|
||||
JVMState* new_jvms = inline_cg()->generate(jvms);
|
||||
if (new_jvms == nullptr) return; // no change
|
||||
if (C->failing()) return;
|
||||
|
||||
|
||||
@ -76,6 +76,7 @@ class CallGenerator : public ArenaObj {
|
||||
virtual bool is_mh_late_inline() const { return false; }
|
||||
virtual bool is_string_late_inline() const { return false; }
|
||||
virtual bool is_vector_late_inline() const { return false; }
|
||||
virtual bool inline_fallback() const { return false; }
|
||||
virtual void enable_fallback_generation() { return; }
|
||||
virtual bool is_boxing_late_inline() const { return false; }
|
||||
virtual bool is_vector_reboxing_late_inline() const { return false; }
|
||||
|
||||
@ -2016,8 +2016,10 @@ void Compile::inline_vector_fallback(PhaseIterGVN& igvn) {
|
||||
while (_vector_late_inlines.length() > 0) {
|
||||
CallGenerator* cg = _vector_late_inlines.pop();
|
||||
assert(cg->is_vector_late_inline(), "");
|
||||
cg->enable_fallback_generation();
|
||||
cg->do_late_inline();
|
||||
if (cg->inline_fallback()) {
|
||||
cg->enable_fallback_generation();
|
||||
cg->do_late_inline();
|
||||
}
|
||||
if (failing()) return;
|
||||
}
|
||||
_vector_late_inlines.trunc_to(0);
|
||||
@ -2116,6 +2118,9 @@ bool Compile::inline_incrementally_one() {
|
||||
} else if (inlining_progress()) {
|
||||
_late_inlines_pos = i+1; // restore the position in case new elements were inserted
|
||||
print_method(PHASE_INCREMENTAL_INLINE_STEP, 3, cg->call_node());
|
||||
if (cg->is_vector_late_inline()) {
|
||||
C->vector_late_inlines()->remove_if_existing(cg);
|
||||
}
|
||||
break; // process one call site at a time
|
||||
} else {
|
||||
bool is_scheduled_for_igvn_after = C->igvn_worklist()->member(cg->call_node());
|
||||
@ -2126,6 +2131,9 @@ bool Compile::inline_incrementally_one() {
|
||||
// Ensure call node has not disappeared from IGVN worklist during a failed inlining attempt
|
||||
assert(!is_scheduled_for_igvn_before || is_scheduled_for_igvn_after, "call node removed from IGVN list during inlining pass");
|
||||
cg->call_node()->set_generator(cg);
|
||||
if (cg->is_vector_late_inline()) {
|
||||
C->vector_late_inlines()->append_if_missing(cg);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user