< prev index next >

src/hotspot/cpu/x86/interpreterRT_x86_32.cpp

Print this page
@@ -69,10 +69,14 @@
  
  void InterpreterRuntime::SignatureHandlerGenerator::pass_object() {
    box (offset(), jni_offset() + 1);
  }
  
+ void InterpreterRuntime::SignatureHandlerGenerator::pass_valuetype() {
+   box (offset(), jni_offset() + 1);
+ }
+ 
  void InterpreterRuntime::SignatureHandlerGenerator::move(int from_offset, int to_offset) {
    __ movl(temp(), Address(from(), Interpreter::local_offset_in_bytes(from_offset)));
    __ movl(Address(to(), to_offset * wordSize), temp());
  }
  

@@ -136,10 +140,17 @@
      intptr_t from_addr = (intptr_t)(_from + Interpreter::local_offset_in_bytes(0));
      *_to++ = (*(intptr_t*)from_addr == 0) ? NULL_WORD : from_addr;
      _from -= Interpreter::stackElementSize;
     }
  
+   virtual void pass_valuetype() {
+     // pass address of from
+     intptr_t from_addr = (intptr_t)(_from + Interpreter::local_offset_in_bytes(0));
+     *_to++ = (*(intptr_t*)from_addr == 0) ? NULL_WORD : from_addr;
+     _from -= Interpreter::stackElementSize;
+    }
+ 
   public:
    SlowSignatureHandler(const methodHandle& method, address from, intptr_t* to) :
      NativeSignatureIterator(method) {
      _from = from;
      _to   = to + (is_static() ? 2 : 1);
< prev index next >