< prev index next >
src/hotspot/share/opto/parseHelper.cpp
Print this page
@@ -347,10 +347,21 @@
//------------------------------do_defaultvalue---------------------------------
void Parse::do_defaultvalue() {
bool will_link;
ciValueKlass* vk = iter().get_klass(will_link)->as_value_klass();
assert(will_link, "defaultvalue: typeflow responsibility");
+
+ // Should initialize, or throw an InstantiationError?
+ if (!vk->is_initialized() && !vk->is_being_initialized()) {
+ uncommon_trap(Deoptimization::Reason_uninitialized,
+ Deoptimization::Action_reinterpret,
+ vk);
+ return;
+ } else if (vk->is_being_initialized()) {
+ emit_guard_for_new(vk);
+ }
+
// Create and push a new default ValueTypeNode
push(ValueTypeNode::make_default(_gvn, vk));
}
//------------------------------do_withfield------------------------------------
< prev index next >