Author: mturk Date: Mon Jun 22 06:05:03 2009 New Revision: 787147 URL: http://svn.apache.org/viewvc?rev=787147&view=rev Log: By default disable exception handling. Enabling it can lower down the performance, so use only for testing purposes
Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Native.java commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Pointer32.java commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Pointer64.java commons/sandbox/runtime/trunk/src/main/native/shared/native.c commons/sandbox/runtime/trunk/src/test/org/apache/commons/runtime/TestDirectByteBuffer.java commons/sandbox/runtime/trunk/src/test/org/apache/commons/runtime/TestPrivate.java Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Native.java URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Native.java?rev=787147&r1=787146&r2=787147&view=diff ============================================================================== --- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Native.java (original) +++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Native.java Mon Jun 22 06:05:03 2009 @@ -24,7 +24,8 @@ * @since Runtime 1.0 * */ -public final class Native { +public final class Native +{ private Native() { @@ -34,7 +35,7 @@ private static boolean initialized = false; private static native boolean init0() throws Throwable; - private static native void sseh0(boolean on); + private static native boolean sseh0(boolean on); /** * Initialize Apache Commons Runtime native library. @@ -62,14 +63,17 @@ return initialized; } - public static void enableExceptionHandler() + public static boolean enableExceptionHandler() { - sseh0(true); + return sseh0(true); } - public static void disableExceptionHandler() + public static boolean disableExceptionHandler() { sseh0(false); + // Disable is always success. + return true; } } + Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Pointer32.java URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Pointer32.java?rev=787147&r1=787146&r2=787147&view=diff ============================================================================== --- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Pointer32.java (original) +++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Pointer32.java Mon Jun 22 06:05:03 2009 @@ -30,7 +30,11 @@ protected Pointer32() { + POINTER = 0; + CLEANUP = 0; + PLENGTH = 0; } + /* * Only created from JNI code. */ Modified: commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Pointer64.java URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Pointer64.java?rev=787147&r1=787146&r2=787147&view=diff ============================================================================== --- commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Pointer64.java (original) +++ commons/sandbox/runtime/trunk/src/main/java/org/apache/commons/runtime/Pointer64.java Mon Jun 22 06:05:03 2009 @@ -28,6 +28,12 @@ protected long POINTER; protected long PLENGTH; + protected Pointer64() + { + POINTER = 0L; + CLEANUP = 0L; + PLENGTH = 0L; + } /* * Only created from JNI code. */ Modified: commons/sandbox/runtime/trunk/src/main/native/shared/native.c URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/native.c?rev=787147&r1=787146&r2=787147&view=diff ============================================================================== --- commons/sandbox/runtime/trunk/src/main/native/shared/native.c (original) +++ commons/sandbox/runtime/trunk/src/main/native/shared/native.c Mon Jun 22 06:05:03 2009 @@ -35,7 +35,13 @@ return rv; } -ACR_JNI_EXPORT_DECLARE(void, Native, sseh0)(ACR_JNISTDARGS, jboolean on) +ACR_JNI_EXPORT_DECLARE(jboolean, Native, sseh0)(ACR_JNISTDARGS, jboolean on) { +#ifdef ACR_ENABLE_SEH ACR_SetExceptionHandlerMode(on ? ACR_SEH_THROW : ACR_SEH_NONE); + return JNI_TRUE; +#else + return JNI_FALSE; +#endif } + Modified: commons/sandbox/runtime/trunk/src/test/org/apache/commons/runtime/TestDirectByteBuffer.java URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/test/org/apache/commons/runtime/TestDirectByteBuffer.java?rev=787147&r1=787146&r2=787147&view=diff ============================================================================== --- commons/sandbox/runtime/trunk/src/test/org/apache/commons/runtime/TestDirectByteBuffer.java (original) +++ commons/sandbox/runtime/trunk/src/test/org/apache/commons/runtime/TestDirectByteBuffer.java Mon Jun 22 06:05:03 2009 @@ -86,8 +86,7 @@ assertTrue("Direct", bb.isDirect()); assertEquals("Capacity", 1000, bb.capacity()); try { - boolean test_me = false; - Native.enableExceptionHandler(); + boolean test_me = Native.enableExceptionHandler(); ptr.free(); // This is double free. Don't do this! // Exception handler won't help here. Modified: commons/sandbox/runtime/trunk/src/test/org/apache/commons/runtime/TestPrivate.java URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/test/org/apache/commons/runtime/TestPrivate.java?rev=787147&r1=787146&r2=787147&view=diff ============================================================================== --- commons/sandbox/runtime/trunk/src/test/org/apache/commons/runtime/TestPrivate.java (original) +++ commons/sandbox/runtime/trunk/src/test/org/apache/commons/runtime/TestPrivate.java Mon Jun 22 06:05:03 2009 @@ -587,13 +587,14 @@ public void testMempotect() throws Throwable { - Native.enableExceptionHandler(); - try { - test030(0); - fail("Exception not thrown"); - } catch (Throwable t) { - assertSame("Wrong Exception class", - java.lang.RuntimeException.class, t.getClass()); + if (Native.enableExceptionHandler()) { + try { + test030(0); + fail("Exception not thrown"); + } catch (Throwable t) { + assertSame("Wrong Exception class", + java.lang.RuntimeException.class, t.getClass()); + } } }