8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package java.lang.invoke;
27
28 /**
29 * Base class for memory segment var handle view implementations.
30 */
31 abstract sealed class VarHandleSegmentViewBase extends VarHandle permits
32 VarHandleSegmentAsBytes,
33 VarHandleSegmentAsChars,
34 VarHandleSegmentAsDoubles,
35 VarHandleSegmentAsFloats,
36 VarHandleSegmentAsInts,
37 VarHandleSegmentAsLongs,
38 VarHandleSegmentAsShorts {
39
40 /** endianness **/
41 final boolean be;
42
43 /** access size (in bytes, computed from var handle carrier type) **/
44 final long length;
45
46 /** alignment constraint (in bytes, expressed as a bit mask) **/
47 final long alignmentMask;
48
49 VarHandleSegmentViewBase(VarForm form, boolean be, long length, long alignmentMask, boolean exact) {
50 super(form, exact);
51 this.be = be;
52 this.length = length;
53 this.alignmentMask = alignmentMask;
54 }
55
56 static IllegalArgumentException newIllegalArgumentExceptionForMisalignedAccess(long address) {
57 return new IllegalArgumentException("Misaligned access at address: " + address);
58 }
59 }
|
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package java.lang.invoke;
27
28 import jdk.internal.foreign.Utils;
29
30 /**
31 * Base class for memory segment var handle view implementations.
32 */
33 abstract sealed class VarHandleSegmentViewBase extends VarHandle permits
34 VarHandleSegmentAsBytes,
35 VarHandleSegmentAsChars,
36 VarHandleSegmentAsDoubles,
37 VarHandleSegmentAsFloats,
38 VarHandleSegmentAsInts,
39 VarHandleSegmentAsLongs,
40 VarHandleSegmentAsShorts {
41
42 /** endianness **/
43 final boolean be;
44
45 /** access size (in bytes, computed from var handle carrier type) **/
46 final long length;
47
48 /** alignment constraint (in bytes, expressed as a bit mask) **/
49 final long alignmentMask;
50
51 VarHandleSegmentViewBase(VarForm form, boolean be, long length, long alignmentMask, boolean exact) {
52 super(form, exact);
53 this.be = be;
54 this.length = length;
55 this.alignmentMask = alignmentMask;
56 }
57
58 static IllegalArgumentException newIllegalArgumentExceptionForMisalignedAccess(long address) {
59 return new IllegalArgumentException("Misaligned access at address: " + Utils.toHexString(address));
60 }
61
62 static UnsupportedOperationException newUnsupportedAccessModeForAlignment(long alignment) {
63 return new UnsupportedOperationException("Unsupported access mode for alignment: " + alignment);
64 }
65 }
|