27 * @summary Add simple range check into VM implemenation of Unsafe access methods
28 * @library /testlibrary
29 */
30
31 import com.oracle.java.testlibrary.*;
32 import sun.misc.Unsafe;
33
34 public class RangeCheck {
35
36 public static void main(String args[]) throws Exception {
37 if (!Platform.isDebugBuild()) {
38 System.out.println("Testing assert which requires a debug build. Passing silently.");
39 return;
40 }
41
42 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
43 true,
44 "-Xmx32m",
45 "-XX:-TransmitErrorReport",
46 "-XX:-InlineUnsafeOps", // The compiler intrinsics doesn't have the assert
47 DummyClassWithMainRangeCheck.class.getName());
48
49 OutputAnalyzer output = new OutputAnalyzer(pb.start());
50 output.shouldMatch("assert\\(byte_offset < p_size\\) failed: Unsafe access: offset \\d+ > object's size \\d+");
51 }
52
53 public static class DummyClassWithMainRangeCheck {
54 public static void main(String args[]) throws Exception {
55 Unsafe unsafe = Utils.getUnsafe();
56 unsafe.getObject(new DummyClassWithMainRangeCheck(), Short.MAX_VALUE);
57 }
58 }
59 }
|
27 * @summary Add simple range check into VM implemenation of Unsafe access methods
28 * @library /testlibrary
29 */
30
31 import com.oracle.java.testlibrary.*;
32 import sun.misc.Unsafe;
33
34 public class RangeCheck {
35
36 public static void main(String args[]) throws Exception {
37 if (!Platform.isDebugBuild()) {
38 System.out.println("Testing assert which requires a debug build. Passing silently.");
39 return;
40 }
41
42 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
43 true,
44 "-Xmx32m",
45 "-XX:-TransmitErrorReport",
46 "-XX:-InlineUnsafeOps", // The compiler intrinsics doesn't have the assert
47 "-XX:-CreateCoredumpOnCrash",
48 DummyClassWithMainRangeCheck.class.getName());
49
50 OutputAnalyzer output = new OutputAnalyzer(pb.start());
51 output.shouldMatch("assert\\(byte_offset < p_size\\) failed: Unsafe access: offset \\d+ > object's size \\d+");
52 }
53
54 public static class DummyClassWithMainRangeCheck {
55 public static void main(String args[]) throws Exception {
56 Unsafe unsafe = Utils.getUnsafe();
57 unsafe.getObject(new DummyClassWithMainRangeCheck(), Short.MAX_VALUE);
58 }
59 }
60 }
|