< prev index next >
src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp
Print this page
@@ -187,19 +187,33 @@
init_class_id(Class_LoadBarrier);
BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2();
bs->register_potential_barrier_node(this);
}
+uint LoadBarrierNode::size_of() const {
+ return sizeof(*this);
+}
+
+uint LoadBarrierNode::cmp(const Node& n) const {
+ ShouldNotReachHere();
+ return 0;
+}
+
const Type *LoadBarrierNode::bottom_type() const {
const Type** floadbarrier = (const Type **)(Compile::current()->type_arena()->Amalloc_4((Number_of_Outputs)*sizeof(Type*)));
Node* in_oop = in(Oop);
floadbarrier[Control] = Type::CONTROL;
floadbarrier[Memory] = Type::MEMORY;
floadbarrier[Oop] = in_oop == NULL ? Type::TOP : in_oop->bottom_type();
return TypeTuple::make(Number_of_Outputs, floadbarrier);
}
+const TypePtr* LoadBarrierNode::adr_type() const {
+ ShouldNotReachHere();
+ return NULL;
+}
+
const Type *LoadBarrierNode::Value(PhaseGVN *phase) const {
const Type** floadbarrier = (const Type **)(phase->C->type_arena()->Amalloc_4((Number_of_Outputs)*sizeof(Type*)));
const Type* val_t = phase->type(in(Oop));
floadbarrier[Control] = Type::CONTROL;
floadbarrier[Memory] = Type::MEMORY;
@@ -439,10 +453,15 @@
}
return NULL;
}
+uint LoadBarrierNode::match_edge(uint idx) const {
+ ShouldNotReachHere();
+ return 0;
+}
+
void LoadBarrierNode::fix_similar_in_uses(PhaseIterGVN* igvn) {
Node* out_res = proj_out_or_null(Oop);
if (out_res == NULL) {
return;
}
< prev index next >