< prev index next >

src/hotspot/share/c1/c1_FrameMap.cpp

Print this page
@@ -39,11 +39,11 @@
    if (!method->is_static()) sta->append(T_OBJECT);
    // add remaining arguments
    for (int i = 0; i < sig->count(); i++) {
      ciType* type = sig->type_at(i);
      BasicType t = type->basic_type();
-     if (t == T_ARRAY) {
+     if (t == T_ARRAY || t == T_INLINE_TYPE) {
        t = T_OBJECT;
      }
      sta->append(t);
    }
    // done

@@ -181,18 +181,19 @@
    }
  
  }
  
  
- bool FrameMap::finalize_frame(int nof_slots) {
+ bool FrameMap::finalize_frame(int nof_slots, bool needs_stack_repair) {
    assert(nof_slots >= 0, "must be positive");
    assert(_num_spills == -1, "can only be set once");
    _num_spills = nof_slots;
    assert(_framesize == -1, "should only be calculated once");
    _framesize =  align_up(in_bytes(sp_offset_for_monitor_base(0)) +
                           _num_monitors * (int)sizeof(BasicObjectLock) +
-                          (int)sizeof(intptr_t) +                        // offset of deopt orig pc
+                          (int)sizeof(intptr_t) +                             // offset of deopt orig pc
+                          (needs_stack_repair ? (int)sizeof(intptr_t) : 0) +  // stack increment value
                           frame_pad_in_bytes,
                           StackAlignmentInBytes) / 4;
    int java_index = 0;
    for (int i = 0; i < _incoming_arguments->length(); i++) {
      LIR_Opr opr = _incoming_arguments->at(i);
< prev index next >