7032314: Allow to generate CallLeafNoFPNode in IdealKit

Added CallLeafNoFPNode generation to IdealKit. Added i_o synchronization.

Reviewed-by: never
This commit is contained in:
Vladimir Kozlov 2011-04-02 09:49:27 -07:00
parent 5cd8d5c115
commit 68f1177f59
5 changed files with 129 additions and 34 deletions

View file

@ -3385,10 +3385,15 @@ void GraphKit::add_predicate(int nargs) {
#define __ ideal.
void GraphKit::sync_kit(IdealKit& ideal) {
set_all_memory(__ merged_memory());
set_i_o(__ i_o());
set_control(__ ctrl());
}
void GraphKit::final_sync(IdealKit& ideal) {
// Final sync IdealKit and graphKit.
__ drain_delay_transform();
set_all_memory(__ merged_memory());
set_control(__ ctrl());
sync_kit(ideal);
}
// vanilla/CMS post barrier
@ -3435,7 +3440,7 @@ void GraphKit::write_barrier_post(Node* oop_store,
// (Else it's an array (or unknown), and we want more precise card marks.)
assert(adr != NULL, "");
IdealKit ideal(gvn(), control(), merged_memory(), true);
IdealKit ideal(this, true);
// Convert the pointer to an int prior to doing math on it
Node* cast = __ CastPX(__ ctrl(), adr);
@ -3461,7 +3466,7 @@ void GraphKit::write_barrier_post(Node* oop_store,
}
// Final sync IdealKit and GraphKit.
sync_kit(ideal);
final_sync(ideal);
}
// G1 pre/post barriers
@ -3471,7 +3476,7 @@ void GraphKit::g1_write_barrier_pre(Node* obj,
Node* val,
const TypeOopPtr* val_type,
BasicType bt) {
IdealKit ideal(gvn(), control(), merged_memory(), true);
IdealKit ideal(this, true);
Node* tls = __ thread(); // ThreadLocalStorage
@ -3548,7 +3553,7 @@ void GraphKit::g1_write_barrier_pre(Node* obj,
} __ end_if(); // (!marking)
// Final sync IdealKit and GraphKit.
sync_kit(ideal);
final_sync(ideal);
}
//
@ -3614,7 +3619,7 @@ void GraphKit::g1_write_barrier_post(Node* oop_store,
// (Else it's an array (or unknown), and we want more precise card marks.)
assert(adr != NULL, "");
IdealKit ideal(gvn(), control(), merged_memory(), true);
IdealKit ideal(this, true);
Node* tls = __ thread(); // ThreadLocalStorage
@ -3688,6 +3693,6 @@ void GraphKit::g1_write_barrier_post(Node* oop_store,
}
// Final sync IdealKit and GraphKit.
sync_kit(ideal);
final_sync(ideal);
}
#undef __