Index: vm/jitrino/src/jet/cg_fld_arr.cpp =================================================================== --- vm/jitrino/src/jet/cg_fld_arr.cpp (revision 593059) +++ vm/jitrino/src/jet/cg_fld_arr.cpp (working copy) @@ -270,13 +270,6 @@ void CodeGen::do_field_op(const FieldOpInfo& fieldOp) { - // Presumption: we dont have compressed refs on IA32 and all other - // (64bits) platforms have compressed refs. - // is_ia32() check added below so on IA32 it becomes 'false' during the - // compilation, without access to g_refs_squeeze in runtime. - assert(is_ia32() || g_refs_squeeze); - - jtype jt = to_jtype(class_get_cp_field_type(fieldOp.enclClass, fieldOp.cpIndex)); const char* fieldDescName = const_pool_get_field_descriptor(fieldOp.enclClass, fieldOp.cpIndex); @@ -308,8 +301,8 @@ // pop out ref vpop(); } - if (!is_ia32() && g_refs_squeeze && (jt == jobj || fieldIsMagic)) { - if (fieldIsMagic) { + if ( jt == jobj || fieldIsMagic ) { + if (fieldIsMagic || !g_refs_squeeze) { AR gr_ref = valloc(jobj); rlock(gr_ref); Opnd obj(jobj, gr_ref); @@ -317,6 +310,7 @@ runlock(gr_ref); vpush(obj); } else { + assert(!is_ia32()); AR gr_base = valloc(jobj); rlock(gr_base); AR gr_ref = valloc(jobj); @@ -379,13 +373,14 @@ where.index(), where.scale()); mov(where32, Opnd(ref)); } - else if (!is_ia32() && g_refs_squeeze && (jt == jobj || fieldIsMagic)) { + else if ( jt == jobj || fieldIsMagic ) { // have the reference on a register Val& s0 = vstack(0, true); rlock(s0); - if (fieldIsMagic) { + if (fieldIsMagic || !g_refs_squeeze) { mov(where, s0.as_opnd()); } else { + assert(!is_ia32()); // compress the reference AR tmp = valloc(jobj); void * inv_base = (void*)-(int_ptr)OBJ_BASE; Index: vm/jitrino/src/jet/cg.cpp =================================================================== --- vm/jitrino/src/jet/cg.cpp (revision 593059) +++ vm/jitrino/src/jet/cg.cpp (working copy) @@ -222,12 +222,11 @@ alu(alu_cmp, opnd, gr_null); } else { - assert(sizeof(void*)==4); assert(NULL_REF == 0); if (opnd.is_reg()) { alu(alu_test, opnd, opnd); - } - else { + } else { + // There is no imm64 for cmp. But it is not a problem as we compare with zero. alu(alu_cmp, opnd, Opnd((int)(int_ptr)NULL_REF)); } }