hotspot/src/share/vm/c1/c1_IR.cpp
changeset 5687 b862d1f189bd
parent 5046 27e801a857cb
child 5702 201c5cde25bb
equal deleted inserted replaced
5686:5435e77aa3df 5687:b862d1f189bd
   228   , _scope_debug_info(NULL)
   228   , _scope_debug_info(NULL)
   229   , _oop_map(NULL)
   229   , _oop_map(NULL)
   230   , _stack(stack)
   230   , _stack(stack)
   231   , _exception_handlers(exception_handlers)
   231   , _exception_handlers(exception_handlers)
   232   , _next(NULL)
   232   , _next(NULL)
   233   , _id(-1) {
   233   , _id(-1)
       
   234   , _is_method_handle_invoke(false) {
   234   assert(_stack != NULL, "must be non null");
   235   assert(_stack != NULL, "must be non null");
   235   assert(_bci == SynchronizationEntryBCI || Bytecodes::is_defined(scope()->method()->java_code_at_bci(_bci)), "make sure bci points at a real bytecode");
   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 CodeEmitInfo::CodeEmitInfo(CodeEmitInfo* info, bool lock_stack_only)
   240 CodeEmitInfo::CodeEmitInfo(CodeEmitInfo* info, bool lock_stack_only)
   240   : _scope(info->_scope)
   241   : _scope(info->_scope)
   241   , _exception_handlers(NULL)
   242   , _exception_handlers(NULL)
   242   , _bci(info->_bci)
   243   , _bci(info->_bci)
   243   , _scope_debug_info(NULL)
   244   , _scope_debug_info(NULL)
   244   , _oop_map(NULL) {
   245   , _oop_map(NULL)
       
   246   , _is_method_handle_invoke(info->_is_method_handle_invoke) {
   245   if (lock_stack_only) {
   247   if (lock_stack_only) {
   246     if (info->_stack != NULL) {
   248     if (info->_stack != NULL) {
   247       _stack = info->_stack->copy_locks();
   249       _stack = info->_stack->copy_locks();
   248     } else {
   250     } else {
   249       _stack = NULL;
   251       _stack = NULL;
   257     _exception_handlers = new XHandlers(info->_exception_handlers);
   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   // record the safepoint before recording the debug info for enclosing scopes
   265   // record the safepoint before recording the debug info for enclosing scopes
   264   recorder->add_safepoint(pc_offset, _oop_map->deep_copy());
   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   recorder->end_safepoint(pc_offset);
   268   recorder->end_safepoint(pc_offset);
   267 }
   269 }
   268 
   270 
   269 
   271 
   270 void CodeEmitInfo::add_register_oop(LIR_Opr opr) {
   272 void CodeEmitInfo::add_register_oop(LIR_Opr opr) {