Mercurial > hg > graal-jvmci-8
comparison src/share/vm/prims/unsafe.cpp @ 23660:b5f3a471e646
Merge.
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Wed, 01 Jun 2016 00:11:44 +0200 |
parents | dd9cc155639c 32b682649973 |
children | f13e777eb255 |
comparison
equal
deleted
inserted
replaced
23411:d7cf78885a3a | 23660:b5f3a471e646 |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | 4 * |
5 * This code is free software; you can redistribute it and/or modify it | 5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as | 6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
154 } | 154 } |
155 | 155 |
156 | 156 |
157 ///// Data in the Java heap. | 157 ///// Data in the Java heap. |
158 | 158 |
159 #define truncate_jboolean(x) ((x) & 1) | |
160 #define truncate_jbyte(x) (x) | |
161 #define truncate_jshort(x) (x) | |
162 #define truncate_jchar(x) (x) | |
163 #define truncate_jint(x) (x) | |
164 #define truncate_jlong(x) (x) | |
165 #define truncate_jfloat(x) (x) | |
166 #define truncate_jdouble(x) (x) | |
167 | |
159 #define GET_FIELD(obj, offset, type_name, v) \ | 168 #define GET_FIELD(obj, offset, type_name, v) \ |
160 oop p = JNIHandles::resolve(obj); \ | 169 oop p = JNIHandles::resolve(obj); \ |
161 type_name v = *(type_name*)index_oop_from_field_offset_long(p, offset) | 170 type_name v = *(type_name*)index_oop_from_field_offset_long(p, offset) |
162 | 171 |
163 #define SET_FIELD(obj, offset, type_name, x) \ | 172 #define SET_FIELD(obj, offset, type_name, x) \ |
164 oop p = JNIHandles::resolve(obj); \ | 173 oop p = JNIHandles::resolve(obj); \ |
165 *(type_name*)index_oop_from_field_offset_long(p, offset) = x | 174 *(type_name*)index_oop_from_field_offset_long(p, offset) = truncate_##type_name(x) |
166 | 175 |
167 #define GET_FIELD_VOLATILE(obj, offset, type_name, v) \ | 176 #define GET_FIELD_VOLATILE(obj, offset, type_name, v) \ |
168 oop p = JNIHandles::resolve(obj); \ | 177 oop p = JNIHandles::resolve(obj); \ |
169 if (support_IRIW_for_not_multiple_copy_atomic_cpu) { \ | 178 if (support_IRIW_for_not_multiple_copy_atomic_cpu) { \ |
170 OrderAccess::fence(); \ | 179 OrderAccess::fence(); \ |
171 } \ | 180 } \ |
172 volatile type_name v = OrderAccess::load_acquire((volatile type_name*)index_oop_from_field_offset_long(p, offset)); | 181 volatile type_name v = OrderAccess::load_acquire((volatile type_name*)index_oop_from_field_offset_long(p, offset)); |
173 | 182 |
174 #define SET_FIELD_VOLATILE(obj, offset, type_name, x) \ | 183 #define SET_FIELD_VOLATILE(obj, offset, type_name, x) \ |
175 oop p = JNIHandles::resolve(obj); \ | 184 oop p = JNIHandles::resolve(obj); \ |
176 OrderAccess::release_store_fence((volatile type_name*)index_oop_from_field_offset_long(p, offset), x); | 185 OrderAccess::release_store_fence((volatile type_name*)index_oop_from_field_offset_long(p, offset), truncate_##type_name(x)); |
177 | 186 |
178 // Macros for oops that check UseCompressedOops | 187 // Macros for oops that check UseCompressedOops |
179 | 188 |
180 #define GET_OOP_FIELD(obj, offset, v) \ | 189 #define GET_OOP_FIELD(obj, offset, v) \ |
181 oop p = JNIHandles::resolve(obj); \ | 190 oop p = JNIHandles::resolve(obj); \ |