src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp	Tue Dec 13 20:05:39 2011
--- new/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp	Tue Dec 13 20:05:39 2011

*** 2200,2211 **** --- 2200,2210 ---- if (!(flags & LIR_OpArrayCopy::src_objarray)) { __ load_klass(src, tmp); } else if (!(flags & LIR_OpArrayCopy::dst_objarray)) { __ load_klass(dst, tmp); } ! int lh_offset = klassOopDesc::header_size() * HeapWordSize + Klass::layout_helper_offset_in_bytes(); ! int lh_offset = in_bytes(Klass::layout_helper_offset()); __ lduw(tmp, lh_offset, tmp2); jint objArray_lh = Klass::array_layout_helper(T_OBJECT); __ set(objArray_lh, tmp);
*** 2236,2251 **** --- 2235,2248 ---- __ add(dst_ptr, tmp, dst_ptr); } __ mov(length, len); __ load_klass(dst, tmp); ! int ek_offset = (klassOopDesc::header_size() * HeapWordSize + objArrayKlass::element_klass_offset_in_bytes()); ! int ek_offset = in_bytes(objArrayKlass::element_klass_offset()); __ ld_ptr(tmp, ek_offset, super_k); ! int sco_offset = (klassOopDesc::header_size() * HeapWordSize + Klass::super_check_offset_offset_in_bytes()); ! int sco_offset = in_bytes(Klass::super_check_offset_offset()); __ lduw(super_k, sco_offset, chk_off); __ call_VM_leaf(tmp, copyfunc_addr); #ifndef PRODUCT
*** 2454,2464 **** --- 2451,2461 ---- op->tmp3()->as_register() == G4 && op->obj()->as_register() == O0 && op->klass()->as_register() == G5, "must be"); if (op->init_check()) { __ ld(op->klass()->as_register(), ! instanceKlass::init_state_offset_in_bytes() + sizeof(oopDesc), ! in_bytes(instanceKlass::init_state_offset()), op->tmp1()->as_register()); add_debug_info_for_null_check_here(op->stub()->info()); __ cmp(op->tmp1()->as_register(), instanceKlass::fully_initialized); __ br(Assembler::notEqual, false, Assembler::pn, *op->stub()->entry()); __ delayed()->nop();
*** 2625,2635 **** --- 2622,2632 ---- __ brx(Assembler::notEqual, false, Assembler::pt, *failure_target); __ delayed()->nop(); } else { bool need_slow_path = true; if (k->is_loaded()) { ! if (k->super_check_offset() != sizeof(oopDesc) + Klass::secondary_super_cache_offset_in_bytes()) ! if ((int) k->super_check_offset() != in_bytes(Klass::secondary_super_cache_offset())) need_slow_path = false; // perform the fast part of the checking logic __ check_klass_subtype_fast_path(klass_RInfo, k_RInfo, Rtmp1, noreg, (need_slow_path ? success_target : NULL), failure_target, NULL,
*** 2729,2739 **** --- 2726,2736 ---- add_debug_info_for_null_check_here(op->info_for_exception()); __ load_klass(array, k_RInfo); __ load_klass(value, klass_RInfo); // get instance klass ! __ ld_ptr(Address(k_RInfo, objArrayKlass::element_klass_offset_in_bytes() + sizeof(oopDesc)), k_RInfo); // perform the fast part of the checking logic __ check_klass_subtype_fast_path(klass_RInfo, k_RInfo, Rtmp1, O7, success_target, failure_target, NULL); // call out-of-line instance of __ check_klass_subtype_slow_path(...): assert(klass_RInfo == G3 && k_RInfo == G1, "incorrect call setup");

src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File