Skip to content

Commit ea5ee28

Browse files
committed
[GR-60217] Enable sun.misc.Unsafe access in launchers.
1 parent 25c8a87 commit ea5ee28

File tree

9 files changed

+26
-15
lines changed

9 files changed

+26
-15
lines changed

sdk/mx.sdk/mx_sdk_vm_impl.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2306,6 +2306,9 @@ def _get_extra_jvm_args():
23062306
extra_jvm_args = mx.list_to_cmd_line(image_config.extra_jvm_args)
23072307
if isinstance(self.subject.component, mx_sdk.GraalVmTruffleComponent) or image_config.is_polyglot:
23082308
extra_jvm_args = ' '.join([extra_jvm_args, '--enable-native-access=org.graalvm.truffle'])
2309+
# GR-59703: Migrate sun.misc.* usages.
2310+
if mx.VersionSpec("23.0.0") <= mx.get_jdk(tag='default').version:
2311+
extra_jvm_args = ' '.join([extra_jvm_args, '--sun-misc-unsafe-memory-access=allow'])
23092312
if not _jlink_libraries():
23102313
if mx.is_windows():
23112314
extra_jvm_args = ' '.join([extra_jvm_args, r'--upgrade-module-path "%location%\..\..\jvmci\graal.jar"'])

sdk/src/org.graalvm.launcher.native/src/launcher.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,10 @@ static void parse_vm_options(int argc, char **argv, std::string exeDir, JavaVMIn
558558

559559
/* Allow Truffle NFI Panama to use Linker#{downcallHandle,upcallStub} without warnings. */
560560
vmArgs.push_back("--enable-native-access=org.graalvm.truffle");
561+
// GR-59703: Migrate sun.misc.* usages.
562+
#if LAUNCHER_JDK_VERSION >= 23
563+
vmArgs.push_back("--sun-misc-unsafe-memory-access=allow");
564+
#endif
561565
}
562566

563567
jint nOptions = jvmMode ? vmArgs.size() : 1 + vmArgs.size();

sulong/mx.sulong/mx_sulong_unittest.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ def apply(self, config, overrideSulongConfig=None):
100100
else:
101101
native_access_target_module = 'ALL-UNNAMED'
102102
vmArgs += [f'--enable-native-access={native_access_target_module}']
103+
# GR-59703: Migrate sun.misc.* usages.
104+
vmArgs += ['--sun-misc-unsafe-memory-access=allow']
103105
if mx.get_opts().use_llvm_standalone is not None:
104106
vmArgs += [f'-Dsulongtest.testAOTImage={mx_sulong.get_lli_path()}']
105107
else:

sulong/tests/com.oracle.truffle.llvm.tests/src/com/oracle/truffle/llvm/tests/util/ProcessHarnessManager.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,8 @@ private ProcessHarnessInstance startInstance() throws IOException {
269269
} else {
270270
commandArgs.add("--enable-native-access=ALL-UNNAMED");
271271
}
272+
// GR-59703: Migrate sun.misc.* usages.
273+
commandArgs.add("--sun-misc-unsafe-memory-access=allow");
272274

273275
copyProperty(commandArgs, "polyglot.engine.WarnInterpreterOnly");
274276
copyProperty(commandArgs, "truffle.nfi.library");

vm/tests/all/agentscript/agent-dumparray.test

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
>[??] rm -rf ${TMP_DIR}/array.hprof*
2828
>[7?] js --insight=sieveArrayInsight.js --heap.dump=${TMP_DIR}/array.hprof sieveArray.js
2929
# a JavaScript heap has been generated
30-
>[0] java --enable-native-access=org.graalvm.truffle -cp $CP HeapQuery ${TMP_DIR}/array.hprof -e 'heap.forEachObject((arr) => print(arr.length), "java.lang.Object[]");'
30+
>[0] java --sun-misc-unsafe-memory-access=allow --enable-native-access=org.graalvm.truffle -cp $CP HeapQuery ${TMP_DIR}/array.hprof -e 'heap.forEachObject((arr) => print(arr.length), "java.lang.Object[]");'
3131
50000
32-
>[0] java --enable-native-access=org.graalvm.truffle -cp $CP HeapQuery ${TMP_DIR}/array.hprof -e 'var max = 0; heap.forEachObject((arr) => { for (let i = 0; i < arr.length; i++) { let p = arr[i].value; if (p > max) max = p; } }, "java.lang.Object[]"); print("Maximal number is " + max);'
32+
>[0] java --sun-misc-unsafe-memory-access=allow --enable-native-access=org.graalvm.truffle -cp $CP HeapQuery ${TMP_DIR}/array.hprof -e 'var max = 0; heap.forEachObject((arr) => { for (let i = 0; i < arr.length; i++) { let p = arr[i].value; if (p > max) max = p; } }, "java.lang.Object[]"); print("Maximal number is " + max);'
3333
Maximal number is 611953

vm/tests/all/agentscript/agent-dumpheap.test

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@
2727
>[??] rm -rf ${TMP_DIR}/sample.hprof*
2828
>[7?] js --insight=agent-dump.js --heap.dump=${TMP_DIR}/sample.hprof agent-fib.js
2929
# a JavaScript heap has been generated
30-
>[0] java --enable-native-access=org.graalvm.truffle -cp $CP HeapQuery ${TMP_DIR}/sample.hprof -e 'heap.forEachClass((c) => c.name.startsWith("frame:") && print(c.name))'
30+
>[0] java --sun-misc-unsafe-memory-access=allow --enable-native-access=org.graalvm.truffle -cp $CP HeapQuery ${TMP_DIR}/sample.hprof -e 'heap.forEachClass((c) => c.name.startsWith("frame:") && print(c.name))'
3131
frame:minusTwo
32-
>[0] java --enable-native-access=org.graalvm.truffle -cp $CP HeapQuery ${TMP_DIR}/sample.hprof -e 'let arr = []; heap.forEachObject((frame) => { for (let p in frame) { arr.push(p); } }, "frame:minusTwo"); arr.sort(); print(arr);'
32+
>[0] java --sun-misc-unsafe-memory-access=allow --enable-native-access=org.graalvm.truffle -cp $CP HeapQuery ${TMP_DIR}/sample.hprof -e 'let arr = []; heap.forEachObject((frame) => { for (let p in frame) { arr.push(p); } }, "frame:minusTwo"); arr.sort(); print(arr);'
3333
["n", "this"]
34-
>[0] java --enable-native-access=org.graalvm.truffle -cp $CP HeapQuery ${TMP_DIR}/sample.hprof -e 'heap.forEachObject((frame) => print(frame.n.value), "frame:minusTwo");'
34+
>[0] java --sun-misc-unsafe-memory-access=allow --enable-native-access=org.graalvm.truffle -cp $CP HeapQuery ${TMP_DIR}/sample.hprof -e 'heap.forEachObject((frame) => print(frame.n.value), "frame:minusTwo");'
3535
2

vm/tests/all/agentscript/agent-embedding-symlinks.test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
# questions.
2323
#
2424
>[0] javac EmbeddingSymlinks*.java -d ${TMP_DIR}
25-
>[0] java --enable-native-access=org.graalvm.truffle -ea -cp ${TMP_DIR} EmbeddingSymlinks ${TMP_DIR}
25+
>[0] java --sun-misc-unsafe-memory-access=allow --enable-native-access=org.graalvm.truffle -ea -cp ${TMP_DIR} EmbeddingSymlinks ${TMP_DIR}
2626
loaded source named (?:fooMain\.js from truffle:[0-9a-f]+/fooMain\.js|foo from file:.*/baz\.mjs)
2727
loaded source named (?:fooMain\.js from truffle:[0-9a-f]+/fooMain\.js|foo from file:.*/baz\.mjs)
2828
computed add at foo from file:.*/baz\.mjs with value 42

vm/tests/all/agentscript/agent-embedding.test

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@
2222
# questions.
2323
#
2424
>[0] javac Embedding*.java -d ${TMP_DIR}
25-
>[0] java --enable-native-access=org.graalvm.truffle -ea -cp .:${TMP_DIR} Embedding
25+
>[0] java --sun-misc-unsafe-memory-access=allow --enable-native-access=org.graalvm.truffle -ea -cp .:${TMP_DIR} Embedding
2626
Everything is OK!
27-
>[0] java --enable-native-access=org.graalvm.truffle -ea -cp ${TMP_DIR} EmbeddingDoubled
27+
>[0] java --sun-misc-unsafe-memory-access=allow --enable-native-access=org.graalvm.truffle -ea -cp ${TMP_DIR} EmbeddingDoubled
2828
Everything is OK!
29-
>[0] java --enable-native-access=org.graalvm.truffle -ea -cp .:${TMP_DIR} EmbeddingMoreContexts 2
29+
>[0] java --sun-misc-unsafe-memory-access=allow --enable-native-access=org.graalvm.truffle -ea -cp .:${TMP_DIR} EmbeddingMoreContexts 2
3030
calling fib with 11
3131
result is 89
3232
calling fib with 12
@@ -46,7 +46,7 @@ OK 2 times!
4646
# ##################################################################
4747
# Register instrument using deprecated -Dtruffle.class.path.append
4848
# ##################################################################
49-
>[1] java --enable-native-access=org.graalvm.truffle -ea -Dtruffle.class.path.append=${TMP_DIR}/instrument.jar -cp ${TMP_DIR} EmbeddingRegisterSymbols primitives
49+
>[1] java --sun-misc-unsafe-memory-access=allow --enable-native-access=org.graalvm.truffle -ea -Dtruffle.class.path.append=${TMP_DIR}/instrument.jar -cp ${TMP_DIR} EmbeddingRegisterSymbols primitives
5050
\[engine\] The internal option -Dtruffle\.class\.path\.append option is deprecated.*
5151

5252
Exception in thread "main" Stop: 0
@@ -61,7 +61,7 @@ Exception in thread "main" Stop: 0
6161
.*at.*org.graalvm.polyglot.Value.execute.*
6262
.*at.*EmbeddingRegisterSymbols.exportAndTest.*
6363
.*at.*EmbeddingRegisterSymbols.main.*
64-
>[1] java --enable-native-access=org.graalvm.truffle -ea -Dtruffle.class.path.append=${TMP_DIR}/instrument.jar -cp ${TMP_DIR} EmbeddingRegisterSymbols object
64+
>[1] java --sun-misc-unsafe-memory-access=allow --enable-native-access=org.graalvm.truffle -ea -Dtruffle.class.path.append=${TMP_DIR}/instrument.jar -cp ${TMP_DIR} EmbeddingRegisterSymbols object
6565
\[engine\] The internal option -Dtruffle\.class\.path\.append option is deprecated.*
6666

6767
Exception in thread "main" Stop: 0
@@ -79,7 +79,7 @@ Exception in thread "main" Stop: 0
7979
# ##################################################################
8080
# Register instrument using module-path
8181
# ##################################################################
82-
>[1] java --enable-native-access=org.graalvm.truffle -ea --module-path ${TMP_DIR}/instrument.jar:${GRAALVM_HOME}/tools/insight -cp ${TMP_DIR} EmbeddingRegisterSymbols primitives
82+
>[1] java --sun-misc-unsafe-memory-access=allow --enable-native-access=org.graalvm.truffle -ea --module-path ${TMP_DIR}/instrument.jar:${GRAALVM_HOME}/tools/insight -cp ${TMP_DIR} EmbeddingRegisterSymbols primitives
8383

8484
Exception in thread "main" Stop: 0
8585
.*at.*js.*insight.js.*
@@ -93,7 +93,7 @@ Exception in thread "main" Stop: 0
9393
.*at.*org.graalvm.polyglot.Value.execute.*
9494
.*at.*EmbeddingRegisterSymbols.exportAndTest.*
9595
.*at.*EmbeddingRegisterSymbols.main.*
96-
>[1] java --enable-native-access=org.graalvm.truffle -ea --module-path ${TMP_DIR}/instrument.jar:${GRAALVM_HOME}/tools/insight -cp ${TMP_DIR} EmbeddingRegisterSymbols object
96+
>[1] java --sun-misc-unsafe-memory-access=allow --enable-native-access=org.graalvm.truffle -ea --module-path ${TMP_DIR}/instrument.jar:${GRAALVM_HOME}/tools/insight -cp ${TMP_DIR} EmbeddingRegisterSymbols object
9797

9898
Exception in thread "main" Stop: 0
9999
.*at.*js.*insight.js.*

vm/tests/all/agentscript/agent-ruby-dump.test

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@
2929
dumping state of Ruby memory when executing Welcome#welcome
3030
Hello World!
3131
# check one frame was captured
32-
>[0] java --enable-native-access=org.graalvm.truffle -cp $CP HeapQuery ${TMP_DIR}/ruby.hprof -e 'heap.forEachClass((c) => c.name.startsWith("frame:") && print(c.name))'
32+
>[0] java --sun-misc-unsafe-memory-access=allow --enable-native-access=org.graalvm.truffle -cp $CP HeapQuery ${TMP_DIR}/ruby.hprof -e 'heap.forEachClass((c) => c.name.startsWith("frame:") && print(c.name))'
3333
frame:Welcome#welcome
3434
# check the h and w variable in the frame
35-
>[0] java --enable-native-access=org.graalvm.truffle -cp $CP HeapQuery ${TMP_DIR}/ruby.hprof -e 'heap.forEachObject((frame) => print(frame.self["@h"].toString() + " " + frame.w.toString() + "!"), "frame:Welcome#welcome")'
35+
>[0] java --sun-misc-unsafe-memory-access=allow --enable-native-access=org.graalvm.truffle -cp $CP HeapQuery ${TMP_DIR}/ruby.hprof -e 'heap.forEachObject((frame) => print(frame.self["@h"].toString() + " " + frame.w.toString() + "!"), "frame:Welcome#welcome")'
3636
Hello World!

0 commit comments

Comments
 (0)