Request for reviews (XXL): 6943304: remove tagged stack interpreter

Gary Benson gbenson at redhat.com
Wed Apr 28 09:02:08 PDT 2010


Works for me with the attached changes.

Cheers,
Gary

Christian Thalinger wrote:
> http://cr.openjdk.java.net/~twisti/6943304/webrev.01/
> 
> 6943304: remove tagged stack interpreter
> Reviewed-by:
> 
> 4734748 introduced the tagged stack interpreter (TaggedStackInterpreter)
> to find the source of some bugs back then.  Since it failed some JCK
> tests it was never used as default or even tested and so it started
> bit-rotting.  Recent JSR 292 changes didn't implement the tagged stack
> interpreter anymore and other ongoing porting for different platforms
> and features would need to implemented it too.  We decided to drop it.
> 
> Testing: JPRT
> 
> src/cpu/sparc/vm/assembler_sparc.cpp
> src/cpu/sparc/vm/cppInterpreter_sparc.hpp
> src/cpu/sparc/vm/frame_sparc.cpp
> src/cpu/sparc/vm/interp_masm_sparc.cpp
> src/cpu/sparc/vm/interp_masm_sparc.hpp
> src/cpu/sparc/vm/interpreterRT_sparc.cpp
> src/cpu/sparc/vm/interpreter_sparc.hpp
> src/cpu/sparc/vm/sharedRuntime_sparc.cpp
> src/cpu/sparc/vm/stubGenerator_sparc.cpp
> src/cpu/sparc/vm/templateInterpreter_sparc.cpp
> src/cpu/sparc/vm/templateInterpreter_sparc.hpp
> src/cpu/sparc/vm/templateTable_sparc.cpp
> src/cpu/x86/vm/assembler_x86.cpp
> src/cpu/x86/vm/cppInterpreter_x86.hpp
> src/cpu/x86/vm/frame_x86.cpp
> src/cpu/x86/vm/interp_masm_x86_32.cpp
> src/cpu/x86/vm/interp_masm_x86_32.hpp
> src/cpu/x86/vm/interp_masm_x86_64.cpp
> src/cpu/x86/vm/interp_masm_x86_64.hpp
> src/cpu/x86/vm/interpreterRT_x86_32.cpp
> src/cpu/x86/vm/interpreterRT_x86_64.cpp
> src/cpu/x86/vm/interpreter_x86.hpp
> src/cpu/x86/vm/interpreter_x86_32.cpp
> src/cpu/x86/vm/methodHandles_x86.cpp
> src/cpu/x86/vm/sharedRuntime_x86_32.cpp
> src/cpu/x86/vm/sharedRuntime_x86_64.cpp
> src/cpu/x86/vm/stubGenerator_x86_32.cpp
> src/cpu/x86/vm/stubGenerator_x86_64.cpp
> src/cpu/x86/vm/templateInterpreter_x86.hpp
> src/cpu/x86/vm/templateInterpreter_x86_32.cpp
> src/cpu/x86/vm/templateInterpreter_x86_64.cpp
> src/cpu/x86/vm/templateTable_x86_32.cpp
> src/cpu/x86/vm/templateTable_x86_64.cpp
> src/cpu/zero/vm/interpreter_zero.hpp
> src/os_cpu/linux_x86/vm/globals_linux_x86.hpp
> src/os_cpu/solaris_x86/vm/globals_solaris_x86.hpp
> src/share/vm/interpreter/abstractInterpreter.hpp
> src/share/vm/interpreter/bytecodeInterpreter.cpp
> src/share/vm/interpreter/interpreterRuntime.cpp
> src/share/vm/oops/methodOop.cpp
> src/share/vm/prims/methodHandles.hpp
> src/share/vm/runtime/arguments.cpp
> src/share/vm/runtime/frame.cpp
> src/share/vm/runtime/frame.hpp
> src/share/vm/runtime/globals.hpp
> src/share/vm/runtime/javaCalls.cpp
> src/share/vm/runtime/javaCalls.hpp
> src/share/vm/runtime/sharedRuntime.cpp
> src/share/vm/runtime/vframe.cpp
> src/share/vm/runtime/vframeArray.cpp

-- 
http://gbenson.net/
-------------- next part --------------
diff -ru hotspot.orig/src/cpu/zero/vm/interpreter_zero.hpp hotspot/src/cpu/zero/vm/interpreter_zero.hpp
--- hotspot.orig/src/cpu/zero/vm/interpreter_zero.hpp	2010-04-28 15:58:09.000000000 +0100
+++ hotspot/src/cpu/zero/vm/interpreter_zero.hpp	2010-04-28 16:06:08.000000000 +0100
@@ -36,14 +36,14 @@
 
  public:
   static int expr_index_at(int i) {
-    return stackElementWords() * i;
+    return stackElementWords * i;
   }
 
   static int expr_offset_in_bytes(int i) {
-    return stackElementSize() * i;
+    return stackElementSize * i;
   }
 
   static int local_index_at(int i) {
     assert(i <= 0, "local direction already negated");
-    return stackElementWords() * i;
+    return stackElementWords * i;
   }
diff -ru hotspot.orig/src/share/vm/interpreter/bytecodeInterpreter.cpp hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp
--- hotspot.orig/src/share/vm/interpreter/bytecodeInterpreter.cpp	2010-04-28 15:58:09.000000000 +0100
+++ hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp	2010-04-28 16:11:42.000000000 +0100
@@ -189,7 +189,7 @@
 
 // JavaStack Implementation
 #define MORE_STACK(count)  \
-    (topOfStack -= ((count) * Interpreter::stackElementWords()))
+    (topOfStack -= ((count) * Interpreter::stackElementWords))
 
 
 #define UPDATE_PC(opsize) {pc += opsize; }
@@ -1950,8 +1950,8 @@
         jint size = STACK_INT(-1);
         // stack grows down, dimensions are up!
         jint *dimarray =
-                   (jint*)&topOfStack[dims * Interpreter::stackElementWords()+
-                                      Interpreter::stackElementWords()-1];
+                   (jint*)&topOfStack[dims * Interpreter::stackElementWords+
+                                      Interpreter::stackElementWords-1];
         //adjust pointer to start of stack element
         CALL_VM(InterpreterRuntime::multianewarray(THREAD, dimarray),
                 handle_exception);
@@ -2375,7 +2375,7 @@
     assert(except_oop(), "No exception to process");
     intptr_t continuation_bci;
     // expression stack is emptied
-    topOfStack = istate->stack_base() - Interpreter::stackElementWords();
+    topOfStack = istate->stack_base() - Interpreter::stackElementWords;
     CALL_VM(continuation_bci = (intptr_t)InterpreterRuntime::exception_handler_for_exception(THREAD, except_oop()),
             handle_exception);
 
diff -ru hotspot.orig/src/share/vm/interpreter/bytecodeInterpreter.hpp hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp
--- hotspot.orig/src/share/vm/interpreter/bytecodeInterpreter.hpp	2010-02-19 11:34:46.000000000 +0000
+++ hotspot/src/share/vm/interpreter/bytecodeInterpreter.hpp	2010-04-28 16:09:30.000000000 +0100
@@ -510,8 +510,6 @@
 static jdouble stack_double(intptr_t *tos, int offset);
 static jlong stack_long(intptr_t *tos, int offset);
 
-static void tag_stack(intptr_t *tos, frame::Tag tag, int offset);
-
 // only used for value types
 static void set_stack_slot(intptr_t *tos, address value, int offset);
 static void set_stack_int(intptr_t *tos, int value, int offset);
@@ -537,8 +535,6 @@
 static address locals_long_at(intptr_t* locals, int offset);
 static address locals_double_at(intptr_t* locals, int offset);
 
-static void tag_locals(intptr_t *locals, frame::Tag tag, int offset);
-
 static void set_locals_slot(intptr_t *locals, address value, int offset);
 static void set_locals_int(intptr_t *locals, jint value, int offset);
 static void set_locals_float(intptr_t *locals, jfloat value, int offset);
@@ -557,8 +553,6 @@
 static void copy_stack_slot(intptr_t *tos, int from_offset, int to_offset);
 
 #ifndef PRODUCT
-static void verify_locals_tag(intptr_t *locals, frame::Tag tag, int offset);
-static void verify_stack_tag(intptr_t *tos, frame::Tag tag, int offset);
 static const char* C_msg(BytecodeInterpreter::messages msg);
 void print();
 #endif // PRODUCT


More information about the hotspot-dev mailing list