It's needed for testing stack trace creation from VM native methods. Signed-off-by: Tomek Grabiec <tgrab...@gmail.com> --- regression/jato/internal/VM.java | 1 + regression/jvm/StackTraceTest.java | 4 ++-- vm/jato.c | 8 ++++++++ 3 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/regression/jato/internal/VM.java b/regression/jato/internal/VM.java index 18721bd..3e423b2 100644 --- a/regression/jato/internal/VM.java +++ b/regression/jato/internal/VM.java @@ -7,4 +7,5 @@ public class VM { public static native void println(String line); public static native void enableFault(int kind, Object arg); public static native void disableFault(int kind); + public static native void throwNullPointerException(); }; diff --git a/regression/jvm/StackTraceTest.java b/regression/jvm/StackTraceTest.java index a2aa3fd..f50957e 100644 --- a/regression/jvm/StackTraceTest.java +++ b/regression/jvm/StackTraceTest.java @@ -57,7 +57,7 @@ public class StackTraceTest extends TestCase { StackTraceElement []st = null; try { - VM.println(null); + VM.throwNullPointerException(); } catch (NullPointerException e) { st = e.getStackTrace(); } @@ -66,7 +66,7 @@ public class StackTraceTest extends TestCase { assertEquals(4, st.length); assertStackTraceElement(st[0], -1, null, "jato.internal.VM", - "println", true); + "throwNullPointerException", true); assertStackTraceElement(st[1], 60, "StackTraceTest.java", "jvm.StackTraceTest", diff --git a/vm/jato.c b/vm/jato.c index 02f060d..b37ace4 100644 --- a/vm/jato.c +++ b/vm/jato.c @@ -415,11 +415,19 @@ native_vmfile_is_directory(struct vm_object *dirpath) return S_ISDIR(buf.st_mode); } +static void +native_vm_throw_null_pointer_exception(void) +{ + signal_new_exception(vm_java_lang_NullPointerException, NULL); + throw_from_native(0); +} + static struct vm_native natives[] = { DEFINE_NATIVE("gnu/classpath/VMStackWalker", "getClassContext", &native_vmstackwalker_getclasscontext), DEFINE_NATIVE("gnu/classpath/VMSystemProperties", "preInit", &native_vmsystemproperties_preinit), DEFINE_NATIVE("jato/internal/VM", "exit", &native_vmruntime_exit), DEFINE_NATIVE("jato/internal/VM", "println", &native_vmruntime_println), + DEFINE_NATIVE("jato/internal/VM", "throwNullPointerException", &native_vm_throw_null_pointer_exception), DEFINE_NATIVE("java/lang/VMClass", "getClassLoader", &native_vmclass_getclassloader), DEFINE_NATIVE("java/lang/VMClass", "getName", &native_vmclass_getname), DEFINE_NATIVE("java/lang/VMClass", "isPrimitive", &native_vmclass_isprimitive), -- 1.6.0.6 ------------------------------------------------------------------------------ _______________________________________________ Jatovm-devel mailing list Jatovm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jatovm-devel