< prev index next >

src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp

Print this page
*** 38,10 ***
--- 38,11 ---
  #include "memory/resourceArea.hpp"
  #include "oops/arrayOop.hpp"
  #include "oops/methodData.hpp"
  #include "oops/method.hpp"
  #include "oops/oop.inline.hpp"
+ #include "oops/inlineKlass.hpp"
  #include "prims/jvmtiExport.hpp"
  #include "prims/jvmtiThreadState.hpp"
  #include "runtime/arguments.hpp"
  #include "runtime/deoptimization.hpp"
  #include "runtime/frame.inline.hpp"

*** 436,10 ***
--- 437,15 ---
  
    // Restore stack bottom in case i2c adjusted stack
    __ ldr(esp, Address(rfp, frame::interpreter_frame_last_sp_offset * wordSize));
    // and NULL it as marker that esp is now tos until next java call
    __ str(zr, Address(rfp, frame::interpreter_frame_last_sp_offset * wordSize));
+ 
+   if (state == atos && InlineTypeReturnedAsFields) {
+     __ store_inline_type_fields_to_buf(NULL, true);
+   }
+ 
    __ restore_bcp();
    __ restore_locals();
    __ restore_constant_pool_cache();
    __ get_method(rmethod);
  

*** 554,10 ***
--- 560,11 ---
    case T_INT    : __ uxtw(r0, r0);        break;  // FIXME: We almost certainly don't need this
    case T_LONG   : /* nothing to do */        break;
    case T_VOID   : /* nothing to do */        break;
    case T_FLOAT  : /* nothing to do */        break;
    case T_DOUBLE : /* nothing to do */        break;
+   case T_INLINE_TYPE: // fall through (value types are handled with oops)
    case T_OBJECT :
      // retrieve result from frame
      __ ldr(r0, Address(rfp, frame::interpreter_frame_oop_temp_offset*wordSize));
      // and verify it
      __ verify_oop(r0);
< prev index next >