You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by gs...@apache.org on 2007/05/24 17:26:46 UTC

svn commit: r541322 - in /harmony/enhanced/drlvm/trunk: build/make/excludes/ vm/include/ vm/interpreter/src/ vm/vmcore/src/stack/

Author: gshimansky
Date: Thu May 24 08:26:45 2007
New Revision: 541322

URL: http://svn.apache.org/viewvc?view=rev&rev=541322
Log:
Fixed bug in HARMONY-3585 [drlvm][jni] shutdown.TestFatalError fails on interpreter

The patch changes interface with interpreter to pass file descriptor instead of FILE* to stack_dump
functions. This workarounds the problem on windows that recognizes stdout in different DLLs
differently.


Modified:
    harmony/enhanced/drlvm/trunk/build/make/excludes/exclude.drlvm_smoke.windows.x86.int
    harmony/enhanced/drlvm/trunk/build/make/excludes/exclude.drlvm_smoke.windows.x86_64.int
    harmony/enhanced/drlvm/trunk/vm/include/interpreter_exports.h
    harmony/enhanced/drlvm/trunk/vm/interpreter/src/interp_exports.cpp
    harmony/enhanced/drlvm/trunk/vm/interpreter/src/interpreter.cpp
    harmony/enhanced/drlvm/trunk/vm/vmcore/src/stack/stack_trace.cpp

Modified: harmony/enhanced/drlvm/trunk/build/make/excludes/exclude.drlvm_smoke.windows.x86.int
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/build/make/excludes/exclude.drlvm_smoke.windows.x86.int?view=diff&rev=541322&r1=541321&r2=541322
==============================================================================
--- harmony/enhanced/drlvm/trunk/build/make/excludes/exclude.drlvm_smoke.windows.x86.int (original)
+++ harmony/enhanced/drlvm/trunk/build/make/excludes/exclude.drlvm_smoke.windows.x86.int Thu May 24 08:26:45 2007
@@ -7,9 +7,6 @@
 # HARMONY-2977
 io/Integers.java
 
-# HARMONY-3585
-shutdown/TestFatalError.java
-
 # HARMONY-3917
 gc/PhantomReferenceTest.java
 gc/WeakReferenceTest.java

Modified: harmony/enhanced/drlvm/trunk/build/make/excludes/exclude.drlvm_smoke.windows.x86_64.int
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/build/make/excludes/exclude.drlvm_smoke.windows.x86_64.int?view=diff&rev=541322&r1=541321&r2=541322
==============================================================================
--- harmony/enhanced/drlvm/trunk/build/make/excludes/exclude.drlvm_smoke.windows.x86_64.int (original)
+++ harmony/enhanced/drlvm/trunk/build/make/excludes/exclude.drlvm_smoke.windows.x86_64.int Thu May 24 08:26:45 2007
@@ -7,9 +7,6 @@
 # unknown failure
 gc/Mark.java
 
-# HARMONY-3585
-shutdown/TestFatalError.java
-
 # HARMONY-3917
 gc/PhantomReferenceTest.java
 gc/WeakReferenceTest.java

Modified: harmony/enhanced/drlvm/trunk/vm/include/interpreter_exports.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/include/interpreter_exports.h?view=diff&rev=541322&r1=541321&r2=541322
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/include/interpreter_exports.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/include/interpreter_exports.h Thu May 24 08:26:45 2007
@@ -306,7 +306,7 @@
  *
  * @param file - File to dump stack to
  * @param thread - the pointer to the thread*/
-   void (*stack_dump) (FILE *, VM_thread*);
+   void (*stack_dump) (int, VM_thread*);
 
 } Interpreter;
 

Modified: harmony/enhanced/drlvm/trunk/vm/interpreter/src/interp_exports.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/interpreter/src/interp_exports.cpp?view=diff&rev=541322&r1=541321&r2=541322
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/interpreter/src/interp_exports.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/interpreter/src/interp_exports.cpp Thu May 24 08:26:45 2007
@@ -91,7 +91,7 @@
 extern jbyte interpreter_ti_set_breakpoint(jmethodID method, jlocation location);
 extern void interpreter_ti_clear_breakpoint(jmethodID method, jlocation location, jbyte saved);
 extern jvmtiError interpreter_ti_pop_frame(jvmtiEnv*, VM_thread *thread);
-extern void stack_dump(FILE *f, VM_thread *thread);
+extern void stack_dump(int fd, VM_thread *thread);
 
 extern FrameHandle* interpreter_get_last_frame(class VM_thread *thread);
 extern FrameHandle* interpreter_get_prev_frame(FrameHandle* frame);

Modified: harmony/enhanced/drlvm/trunk/vm/interpreter/src/interpreter.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/interpreter/src/interpreter.cpp?view=diff&rev=541322&r1=541321&r2=541322
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/interpreter/src/interpreter.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/interpreter/src/interpreter.cpp Thu May 24 08:26:45 2007
@@ -2466,6 +2466,23 @@
     stackDump(f, *frame);
 }
 
+void stack_dump(int fd, VM_thread *thread) {
+    FILE *f;
+#ifdef PLATFORM_NT
+    fd = _dup(fd);
+    assert(fd != -1);
+    f = _fdopen(fd, "w");
+#else
+    fd = dup(fd);
+    assert(fd != -1);
+    f = fdopen(fd, "w");
+#endif
+    assert(f);
+    StackFrame *frame = getLastStackFrame(thread);
+    stackDump(f, *frame);
+    fclose(f);
+}
+
 void stack_dump(VM_thread *thread) {
     StackFrame *frame = getLastStackFrame(thread);
     stackDump(stderr, *frame);

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/stack/stack_trace.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/stack/stack_trace.cpp?view=diff&rev=541322&r1=541321&r2=541322
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/stack/stack_trace.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/stack/stack_trace.cpp Thu May 24 08:26:45 2007
@@ -265,7 +265,13 @@
     fprintf(f, "The stack trace of the %p java thread:\n", vm_thread);
 
     if (interpreter_enabled()) {
-        interpreter.stack_dump(f, vm_thread);
+        int fd;
+#ifdef PLATFORM_NT
+        fd = _fileno(f);
+#else
+        fd = fileno(f);
+#endif
+        interpreter.stack_dump(fd, vm_thread);
         fflush(f);
         return;
     }