< prev index next >

src/hotspot/cpu/arm/sharedRuntime_arm.cpp

Print this page

        

*** 750,761 **** nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm, const methodHandle& method, int compile_id, BasicType* in_sig_bt, VMRegPair* in_regs, ! BasicType ret_type, ! address critical_entry) { if (method->is_method_handle_intrinsic()) { vmIntrinsics::ID iid = method->intrinsic_id(); intptr_t start = (intptr_t)__ pc(); int vep_offset = ((intptr_t)__ pc()) - start; gen_special_dispatch(masm, --- 750,760 ---- nmethod* SharedRuntime::generate_native_wrapper(MacroAssembler* masm, const methodHandle& method, int compile_id, BasicType* in_sig_bt, VMRegPair* in_regs, ! BasicType ret_type) { if (method->is_method_handle_intrinsic()) { vmIntrinsics::ID iid = method->intrinsic_id(); intptr_t start = (intptr_t)__ pc(); int vep_offset = ((intptr_t)__ pc()) - start; gen_special_dispatch(masm,
*** 859,878 **** __ bx(LR, eq); } __ ldr(Rtemp, Address(obj_reg, oopDesc::mark_offset_in_bytes())); ! assert(markWord::unlocked_value == 1, "adjust this code"); ! __ tbz(Rtemp, exact_log2(markWord::unlocked_value), slow_case); if (UseBiasedLocking) { ! assert(is_power_of_2(markWord::biased_lock_bit_in_place), "adjust this code"); ! __ tbnz(Rtemp, exact_log2(markWord::biased_lock_bit_in_place), slow_case); } ! __ bics(Rtemp, Rtemp, ~markWord::hash_mask_in_place); ! __ mov(R0, AsmOperand(Rtemp, lsr, markWord::hash_shift), ne); __ bx(LR, ne); __ bind(slow_case); } --- 858,877 ---- __ bx(LR, eq); } __ ldr(Rtemp, Address(obj_reg, oopDesc::mark_offset_in_bytes())); ! assert(markOopDesc::unlocked_value == 1, "adjust this code"); ! __ tbz(Rtemp, exact_log2(markOopDesc::unlocked_value), slow_case); if (UseBiasedLocking) { ! assert(is_power_of_2(markOopDesc::biased_lock_bit_in_place), "adjust this code"); ! __ tbnz(Rtemp, exact_log2(markOopDesc::biased_lock_bit_in_place), slow_case); } ! __ bics(Rtemp, Rtemp, ~markOopDesc::hash_mask_in_place); ! __ mov(R0, AsmOperand(Rtemp, lsr, markOopDesc::hash_shift), ne); __ bx(LR, ne); __ bind(slow_case); }
*** 1170,1180 **** // On MP platforms the next load could return a 'stale' value if the memory location has been modified by another thread. // That would be acceptable as either CAS or slow case path is taken in that case __ ldr(mark, Address(sync_obj, oopDesc::mark_offset_in_bytes())); __ sub(disp_hdr, FP, lock_slot_fp_offset); ! __ tst(mark, markWord::unlocked_value); __ b(fast_lock, ne); // Check for recursive lock // See comments in InterpreterMacroAssembler::lock_object for // explanations on the fast recursive locking check. --- 1169,1179 ---- // On MP platforms the next load could return a 'stale' value if the memory location has been modified by another thread. // That would be acceptable as either CAS or slow case path is taken in that case __ ldr(mark, Address(sync_obj, oopDesc::mark_offset_in_bytes())); __ sub(disp_hdr, FP, lock_slot_fp_offset); ! __ tst(mark, markOopDesc::unlocked_value); __ b(fast_lock, ne); // Check for recursive lock // See comments in InterpreterMacroAssembler::lock_object for // explanations on the fast recursive locking check.
< prev index next >