< prev index next >

src/cpu/ppc/vm/macroAssembler_ppc.cpp

Print this page

        

*** 1,8 **** /* ! * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved. ! * Copyright (c) 2012, 2017 SAP SE. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,8 ---- /* ! * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved. ! * Copyright (c) 2012, 2016 SAP SE. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 3031,3068 **** li(R0, 0); // dirty if (UseConcMarkSweepGC) membar(Assembler::StoreStore); stbx(R0, Rtmp, Robj); } - // Kills R31 if value is a volatile register. - void MacroAssembler::resolve_jobject(Register value, Register tmp1, Register tmp2, bool needs_frame) { - Label done; - cmpdi(CCR0, value, 0); - beq(CCR0, done); // Use NULL as-is. - - clrrdi(tmp1, value, JNIHandles::weak_tag_size); - #if INCLUDE_ALL_GCS - if (UseG1GC) { andi_(tmp2, value, JNIHandles::weak_tag_mask); } - #endif - ld(value, 0, tmp1); // Resolve (untagged) jobject. - - #if INCLUDE_ALL_GCS - if (UseG1GC) { - Label not_weak; - beq(CCR0, not_weak); // Test for jweak tag. - verify_oop(value); - g1_write_barrier_pre(noreg, // obj - noreg, // offset - value, // pre_val - tmp1, tmp2, needs_frame); - bind(not_weak); - } - #endif // INCLUDE_ALL_GCS - verify_oop(value); - bind(done); - } - #if INCLUDE_ALL_GCS // General G1 pre-barrier generator. // Goal: record the previous value if it is not null. void MacroAssembler::g1_write_barrier_pre(Register Robj, RegisterOrConstant offset, Register Rpre_val, Register Rtmp1, Register Rtmp2, bool needs_frame) { --- 3031,3040 ----
*** 3120,3130 **** stdx(Rpre_val, Rbuffer, Rindex); b(filtered); bind(runtime); ! // May need to preserve LR. Also needed if current frame is not compatible with C calling convention. if (needs_frame) { save_LR_CR(Rtmp1); push_frame_reg_args(0, Rtmp2); } --- 3092,3102 ---- stdx(Rpre_val, Rbuffer, Rindex); b(filtered); bind(runtime); ! // VM call need frame to access(write) O register. if (needs_frame) { save_LR_CR(Rtmp1); push_frame_reg_args(0, Rtmp2); }
< prev index next >