From c42e4fc591a787c17954e63dbbc2cf9668c6ae39 Mon Sep 17 00:00:00 2001 From: Cyrille Artho Date: Sat, 17 Nov 2018 16:11:36 +1100 Subject: [PATCH] Support Runtime.halt. modified: src/peers/gov/nasa/jpf/vm/JPF_java_lang_Runtime.java: Native peers. modified: src/tests/gov/nasa/jpf/test/java/lang/RuntimeTest.java: Tests. --- .../gov/nasa/jpf/vm/JPF_java_lang_Runtime.java | 8 ++++++++ .../gov/nasa/jpf/test/java/lang/RuntimeTest.java | 16 ++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/peers/gov/nasa/jpf/vm/JPF_java_lang_Runtime.java b/src/peers/gov/nasa/jpf/vm/JPF_java_lang_Runtime.java index 8b4ea51..2ac364e 100644 --- a/src/peers/gov/nasa/jpf/vm/JPF_java_lang_Runtime.java +++ b/src/peers/gov/nasa/jpf/vm/JPF_java_lang_Runtime.java @@ -62,6 +62,14 @@ public class JPF_java_lang_Runtime extends NativePeer { public void gc____V (MJIEnv env, int objref){ env.gc(); } + + @MJI + public void halt__I__V (MJIEnv env, int clsObjRef, int ret) { + // TODO: System.exit should start shutdown handler (once supported) + // and call this method (copied code should be removed in System.exit) + ThreadInfo ti = env.getThreadInfo(); + env.getVM().terminateProcess(ti); + } @MJI public int availableProcessors____I (MJIEnv env, int objref){ diff --git a/src/tests/gov/nasa/jpf/test/java/lang/RuntimeTest.java b/src/tests/gov/nasa/jpf/test/java/lang/RuntimeTest.java index e6e3d96..b03d28b 100644 --- a/src/tests/gov/nasa/jpf/test/java/lang/RuntimeTest.java +++ b/src/tests/gov/nasa/jpf/test/java/lang/RuntimeTest.java @@ -25,6 +25,22 @@ import org.junit.Test; public class RuntimeTest extends TestJPF { + @Test + public void testExit() { + if (verifyNoPropertyViolation()) { + System.exit(1); + assert(false); + } + } + + @Test + public void testHalt() { + if (verifyNoPropertyViolation()) { + Runtime.getRuntime().halt(1); + assert(false); + } + } + @Test public void testAvailableProcessors() { -- 2.34.1