< prev index next >

src/hotspot/cpu/s390/macroAssembler_s390.cpp

Print this page

        

*** 1,8 **** /* ! * Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved. ! * Copyright (c) 2016, 2019, 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) 2016, 2018, Oracle and/or its affiliates. All rights reserved. ! * Copyright (c) 2016, 2018, 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.
*** 3128,3164 **** temp1_reg, temp2_reg, &L_success, NULL); BIND(failure); BLOCK_COMMENT("} check_klass_subtype"); } - void MacroAssembler::clinit_barrier(Register klass, Register thread, Label* L_fast_path, Label* L_slow_path) { - assert(L_fast_path != NULL || L_slow_path != NULL, "at least one is required"); - - Label L_fallthrough; - if (L_fast_path == NULL) { - L_fast_path = &L_fallthrough; - } else if (L_slow_path == NULL) { - L_slow_path = &L_fallthrough; - } - - // Fast path check: class is fully initialized - z_cli(Address(klass, InstanceKlass::init_state_offset()), InstanceKlass::fully_initialized); - z_bre(*L_fast_path); - - // Fast path check: current thread is initializer thread - z_cg(thread, Address(klass, InstanceKlass::init_thread_offset())); - if (L_slow_path == &L_fallthrough) { - z_bre(*L_fast_path); - } else if (L_fast_path == &L_fallthrough) { - z_brne(*L_slow_path); - } else { - Unimplemented(); - } - - bind(L_fallthrough); - } - // Increment a counter at counter_address when the eq condition code is // set. Kills registers tmp1_reg and tmp2_reg and preserves the condition code. void MacroAssembler::increment_counter_eq(address counter_address, Register tmp1_reg, Register tmp2_reg) { Label l; z_brne(l); --- 3128,3137 ----
*** 4364,4386 **** void MacroAssembler::resolve_oop_handle(Register result) { // OopHandle::resolve is an indirection. z_lg(result, 0, result); } ! void MacroAssembler::load_mirror_from_const_method(Register mirror, Register const_method) { ! mem2reg_opt(mirror, Address(const_method, ConstMethod::constants_offset())); mem2reg_opt(mirror, Address(mirror, ConstantPool::pool_holder_offset_in_bytes())); mem2reg_opt(mirror, Address(mirror, Klass::java_mirror_offset())); resolve_oop_handle(mirror); } - void MacroAssembler::load_method_holder(Register holder, Register method) { - mem2reg_opt(holder, Address(method, Method::const_offset())); - mem2reg_opt(holder, Address(holder, ConstMethod::constants_offset())); - mem2reg_opt(holder, Address(holder, ConstantPool::pool_holder_offset_in_bytes())); - } - //--------------------------------------------------------------- //--- Operations on arrays. //--------------------------------------------------------------- // Compiler ensures base is doubleword aligned and cnt is #doublewords. --- 4337,4354 ---- void MacroAssembler::resolve_oop_handle(Register result) { // OopHandle::resolve is an indirection. z_lg(result, 0, result); } ! void MacroAssembler::load_mirror(Register mirror, Register method) { ! mem2reg_opt(mirror, Address(method, Method::const_offset())); ! mem2reg_opt(mirror, Address(mirror, ConstMethod::constants_offset())); mem2reg_opt(mirror, Address(mirror, ConstantPool::pool_holder_offset_in_bytes())); mem2reg_opt(mirror, Address(mirror, Klass::java_mirror_offset())); resolve_oop_handle(mirror); } //--------------------------------------------------------------- //--- Operations on arrays. //--------------------------------------------------------------- // Compiler ensures base is doubleword aligned and cnt is #doublewords.
< prev index next >