annotate src/hotspot/cpu/s390/c1_MacroAssembler_s390.hpp @ 54526:ee29b516a36a

revert changes
author jlaskey
date Wed, 23 Jan 2019 16:09:20 -0400
parents 82599d53dd6d
children 90ead0febf56
rev   line source
goetz@42065 1 /*
coleenp@54304 2 * Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
goetz@42065 3 * Copyright (c) 2016 SAP SE. All rights reserved.
goetz@42065 4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
goetz@42065 5 *
goetz@42065 6 * This code is free software; you can redistribute it and/or modify it
goetz@42065 7 * under the terms of the GNU General Public License version 2 only, as
goetz@42065 8 * published by the Free Software Foundation.
goetz@42065 9 *
goetz@42065 10 * This code is distributed in the hope that it will be useful, but WITHOUT
goetz@42065 11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
goetz@42065 12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
goetz@42065 13 * version 2 for more details (a copy is included in the LICENSE file that
goetz@42065 14 * accompanied this code).
goetz@42065 15 *
goetz@42065 16 * You should have received a copy of the GNU General Public License version
goetz@42065 17 * 2 along with this work; if not, write to the Free Software Foundation,
goetz@42065 18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
goetz@42065 19 *
goetz@42065 20 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
goetz@42065 21 * or visit www.oracle.com if you need additional information or have any
goetz@42065 22 * questions.
goetz@42065 23 *
goetz@42065 24 */
goetz@42065 25
coleenp@54304 26 #ifndef CPU_S390_C1_MACROASSEMBLER_S390_HPP
coleenp@54304 27 #define CPU_S390_C1_MACROASSEMBLER_S390_HPP
goetz@42065 28
goetz@42065 29 void pd_init() { /* nothing to do */ }
goetz@42065 30
goetz@42065 31 public:
goetz@42065 32 void try_allocate(
goetz@42065 33 Register obj, // result: Pointer to object after successful allocation.
goetz@42065 34 Register var_size_in_bytes, // Object size in bytes if unknown at compile time; invalid otherwise.
goetz@42065 35 int con_size_in_bytes, // Object size in bytes if known at compile time.
goetz@42065 36 Register t1, // temp register
goetz@42065 37 Label& slow_case // Continuation point if fast allocation fails.
goetz@42065 38 );
goetz@42065 39
goetz@42065 40 void initialize_header(Register obj, Register klass, Register len, Register Rzero, Register t1);
goetz@42065 41 void initialize_body(Register objectFields, Register len_in_bytes, Register Rzero);
goetz@42065 42
goetz@42065 43 // locking
goetz@42065 44 // hdr : Used to hold locked markOop to be CASed into obj, contents destroyed.
goetz@42065 45 // obj : Must point to the object to lock, contents preserved.
goetz@42065 46 // disp_hdr: Must point to the displaced header location, contents preserved.
goetz@42065 47 // Returns code offset at which to add null check debug information.
goetz@42065 48 void lock_object(Register hdr, Register obj, Register disp_hdr, Label& slow_case);
goetz@42065 49
goetz@42065 50 // unlocking
goetz@42065 51 // hdr : Used to hold original markOop to be CASed back into obj, contents destroyed.
goetz@42065 52 // obj : Must point to the object to lock, contents preserved.
goetz@42065 53 // disp_hdr: Must point to the displaced header location, contents destroyed.
goetz@42065 54 void unlock_object(Register hdr, Register obj, Register lock, Label& slow_case);
goetz@42065 55
goetz@42065 56 void initialize_object(
goetz@42065 57 Register obj, // result: Pointer to object after successful allocation.
goetz@42065 58 Register klass, // object klass
goetz@42065 59 Register var_size_in_bytes, // Object size in bytes if unknown at compile time; invalid otherwise.
goetz@42065 60 int con_size_in_bytes, // Object size in bytes if known at compile time.
goetz@42065 61 Register t1, // temp register
goetz@42065 62 Register t2 // temp register
goetz@42065 63 );
goetz@42065 64
goetz@42065 65 // Allocation of fixed-size objects.
goetz@42065 66 // This can also be used to allocate fixed-size arrays, by setting
goetz@42065 67 // hdr_size correctly and storing the array length afterwards.
goetz@42065 68 void allocate_object(
goetz@42065 69 Register obj, // result: Pointer to object after successful allocation.
goetz@42065 70 Register t1, // temp register
goetz@42065 71 Register t2, // temp register
goetz@42065 72 int hdr_size, // object header size in words
goetz@42065 73 int obj_size, // object size in words
goetz@42065 74 Register klass, // object klass
goetz@42065 75 Label& slow_case // Continuation point if fast allocation fails.
goetz@42065 76 );
goetz@42065 77
goetz@42065 78 enum {
goetz@42065 79 max_array_allocation_length = 0x01000000 // Sparc friendly value, requires sethi only.
goetz@42065 80 };
goetz@42065 81
goetz@42065 82 // Allocation of arrays.
goetz@42065 83 void allocate_array(
goetz@42065 84 Register obj, // result: Pointer to array after successful allocation.
goetz@42065 85 Register len, // array length
goetz@42065 86 Register t1, // temp register
goetz@42065 87 Register t2, // temp register
goetz@42065 88 int hdr_size, // object header size in words
goetz@42065 89 int elt_size, // element size in bytes
goetz@42065 90 Register klass, // object klass
goetz@42065 91 Label& slow_case // Continuation point if fast allocation fails.
goetz@42065 92 );
goetz@42065 93
goetz@42065 94 // Invalidates registers in this window.
goetz@42065 95 void invalidate_registers(Register preserve1 = noreg, Register preserve2 = noreg,
goetz@42065 96 Register preserve3 = noreg) PRODUCT_RETURN;
goetz@42065 97
goetz@42065 98 // This platform only uses signal-based null checks. The Label is not needed.
goetz@42065 99 void null_check(Register r, Label *Lnull = NULL) { MacroAssembler::null_check(r); }
goetz@42065 100
coleenp@54304 101 #endif // CPU_S390_C1_MACROASSEMBLER_S390_HPP