aboutsummaryrefslogtreecommitdiff
path: root/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/x86/vm/c1_LIRGenerator_x86.cpp')
-rw-r--r--src/cpu/x86/vm/c1_LIRGenerator_x86.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp b/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp
index cf2cd5646..d75f0b206 100644
--- a/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp
+++ b/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp
@@ -1151,9 +1151,12 @@ void LIRGenerator::do_CheckCast(CheckCast* x) {
stub = new SimpleExceptionStub(Runtime1::throw_class_cast_exception_id, obj.result(), info_for_exception);
}
LIR_Opr reg = rlock_result(x);
+ LIR_Opr tmp3 = LIR_OprFact::illegalOpr;
+ if (!x->klass()->is_loaded() || UseCompressedOops) {
+ tmp3 = new_register(objectType);
+ }
__ checkcast(reg, obj.result(), x->klass(),
- new_register(objectType), new_register(objectType),
- !x->klass()->is_loaded() ? new_register(objectType) : LIR_OprFact::illegalOpr,
+ new_register(objectType), new_register(objectType), tmp3,
x->direct_compare(), info_for_exception, patching_info, stub,
x->profiled_method(), x->profiled_bci());
}
@@ -1170,9 +1173,12 @@ void LIRGenerator::do_InstanceOf(InstanceOf* x) {
patching_info = state_for(x, x->state_before());
}
obj.load_item();
+ LIR_Opr tmp3 = LIR_OprFact::illegalOpr;
+ if (!x->klass()->is_loaded() || UseCompressedOops) {
+ tmp3 = new_register(objectType);
+ }
__ instanceof(reg, obj.result(), x->klass(),
- new_register(objectType), new_register(objectType),
- !x->klass()->is_loaded() ? new_register(objectType) : LIR_OprFact::illegalOpr,
+ new_register(objectType), new_register(objectType), tmp3,
x->direct_compare(), patching_info, x->profiled_method(), x->profiled_bci());
}