< prev index next >

src/share/vm/c1/c1_LIRGenerator.cpp

Print this page
rev 10523 : [backport] C1 shenandoah_wb expects obj in a register
rev 10524 : [backport] Some trivial-ish cleanups

*** 1863,1885 **** --- 1863,1902 ---- } else { return obj; } } + LIR_Opr LIRGenerator::ensure_in_register(LIR_Opr obj) { + if (!obj->is_register()) { + LIR_Opr obj_reg = new_register(T_OBJECT); + if (obj->is_constant()) { + __ move(obj, obj_reg); + } else { + __ leal(obj, obj_reg); + } + obj = obj_reg; + } + return obj; + } + LIR_Opr LIRGenerator::shenandoah_write_barrier(LIR_Opr obj, CodeEmitInfo* info, bool need_null_check) { if (UseShenandoahGC && ShenandoahWriteBarrier) { LIR_Opr result = new_register(T_OBJECT); + obj = ensure_in_register(obj); + assert(obj->is_register(), "must be a register at this point"); + __ shenandoah_wb(obj, result, info ? new CodeEmitInfo(info) : NULL, need_null_check); return result; } else { return obj; } } #endif + //------------------------java.nio.Buffer.checkIndex------------------------ // int java.nio.Buffer.checkIndex(int) void LIRGenerator::do_NIOCheckIndex(Intrinsic* x) { // NOTE: by the time we are in checkIndex() we are guaranteed that
< prev index next >