Print this page


Split Close
Expand all
Collapse all
          --- old/src/share/vm/c1/c1_IR.cpp
          +++ new/src/share/vm/c1/c1_IR.cpp
↓ open down ↓ 222 lines elided ↑ open up ↑
 223  223  
 224  224  // Stack must be NON-null
 225  225  CodeEmitInfo::CodeEmitInfo(int bci, ValueStack* stack, XHandlers* exception_handlers)
 226  226    : _scope(stack->scope())
 227  227    , _bci(bci)
 228  228    , _scope_debug_info(NULL)
 229  229    , _oop_map(NULL)
 230  230    , _stack(stack)
 231  231    , _exception_handlers(exception_handlers)
 232  232    , _next(NULL)
 233      -  , _id(-1) {
      233 +  , _id(-1)
      234 +  , _is_method_handle_invoke(false) {
 234  235    assert(_stack != NULL, "must be non null");
 235  236    assert(_bci == SynchronizationEntryBCI || Bytecodes::is_defined(scope()->method()->java_code_at_bci(_bci)), "make sure bci points at a real bytecode");
 236  237  }
 237  238  
 238  239  
 239  240  CodeEmitInfo::CodeEmitInfo(CodeEmitInfo* info, bool lock_stack_only)
 240  241    : _scope(info->_scope)
 241  242    , _exception_handlers(NULL)
 242  243    , _bci(info->_bci)
 243  244    , _scope_debug_info(NULL)
 244      -  , _oop_map(NULL) {
      245 +  , _oop_map(NULL)
      246 +  , _is_method_handle_invoke(info->_is_method_handle_invoke) {
 245  247    if (lock_stack_only) {
 246  248      if (info->_stack != NULL) {
 247  249        _stack = info->_stack->copy_locks();
 248  250      } else {
 249  251        _stack = NULL;
 250  252      }
 251  253    } else {
 252  254      _stack = info->_stack;
 253  255    }
 254  256  
 255  257    // deep copy of exception handlers
 256  258    if (info->_exception_handlers != NULL) {
 257  259      _exception_handlers = new XHandlers(info->_exception_handlers);
 258  260    }
 259  261  }
 260  262  
 261  263  
 262      -void CodeEmitInfo::record_debug_info(DebugInformationRecorder* recorder, int pc_offset, bool is_method_handle_invoke) {
      264 +void CodeEmitInfo::record_debug_info(DebugInformationRecorder* recorder, int pc_offset) {
 263  265    // record the safepoint before recording the debug info for enclosing scopes
 264  266    recorder->add_safepoint(pc_offset, _oop_map->deep_copy());
 265      -  _scope_debug_info->record_debug_info(recorder, pc_offset, true/*topmost*/, is_method_handle_invoke);
      267 +  _scope_debug_info->record_debug_info(recorder, pc_offset, true/*topmost*/, _is_method_handle_invoke);
 266  268    recorder->end_safepoint(pc_offset);
 267  269  }
 268  270  
 269  271  
 270  272  void CodeEmitInfo::add_register_oop(LIR_Opr opr) {
 271  273    assert(_oop_map != NULL, "oop map must already exist");
 272  274    assert(opr->is_single_cpu(), "should not call otherwise");
 273  275  
 274  276    int frame_size = frame_map()->framesize();
 275  277    int arg_count = frame_map()->oop_map_arg_count();
↓ open down ↓ 1068 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX