src/share/vm/opto/macro.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6809798 Sdiff src/share/vm/opto

src/share/vm/opto/macro.cpp

Print this page




  47   }
  48   return nreplacements;
  49 }
  50 
  51 void PhaseMacroExpand::copy_call_debug_info(CallNode *oldcall, CallNode * newcall) {
  52   // Copy debug information and adjust JVMState information
  53   uint old_dbg_start = oldcall->tf()->domain()->cnt();
  54   uint new_dbg_start = newcall->tf()->domain()->cnt();
  55   int jvms_adj  = new_dbg_start - old_dbg_start;
  56   assert (new_dbg_start == newcall->req(), "argument count mismatch");
  57 
  58   Dict* sosn_map = new Dict(cmpkey,hashkey);
  59   for (uint i = old_dbg_start; i < oldcall->req(); i++) {
  60     Node* old_in = oldcall->in(i);
  61     // Clone old SafePointScalarObjectNodes, adjusting their field contents.
  62     if (old_in != NULL && old_in->is_SafePointScalarObject()) {
  63       SafePointScalarObjectNode* old_sosn = old_in->as_SafePointScalarObject();
  64       uint old_unique = C->unique();
  65       Node* new_in = old_sosn->clone(jvms_adj, sosn_map);
  66       if (old_unique != C->unique()) {

  67         new_in = transform_later(new_in); // Register new node.
  68       }
  69       old_in = new_in;
  70     }
  71     newcall->add_req(old_in);
  72   }
  73 
  74   newcall->set_jvms(oldcall->jvms());
  75   for (JVMState *jvms = newcall->jvms(); jvms != NULL; jvms = jvms->caller()) {
  76     jvms->set_map(newcall);
  77     jvms->set_locoff(jvms->locoff()+jvms_adj);
  78     jvms->set_stkoff(jvms->stkoff()+jvms_adj);
  79     jvms->set_monoff(jvms->monoff()+jvms_adj);
  80     jvms->set_scloff(jvms->scloff()+jvms_adj);
  81     jvms->set_endoff(jvms->endoff()+jvms_adj);
  82   }
  83 }
  84 
  85 Node* PhaseMacroExpand::opt_bits_test(Node* ctrl, Node* region, int edge, Node* word, int mask, int bits, bool return_fast_path) {
  86   Node* cmp;




  47   }
  48   return nreplacements;
  49 }
  50 
  51 void PhaseMacroExpand::copy_call_debug_info(CallNode *oldcall, CallNode * newcall) {
  52   // Copy debug information and adjust JVMState information
  53   uint old_dbg_start = oldcall->tf()->domain()->cnt();
  54   uint new_dbg_start = newcall->tf()->domain()->cnt();
  55   int jvms_adj  = new_dbg_start - old_dbg_start;
  56   assert (new_dbg_start == newcall->req(), "argument count mismatch");
  57 
  58   Dict* sosn_map = new Dict(cmpkey,hashkey);
  59   for (uint i = old_dbg_start; i < oldcall->req(); i++) {
  60     Node* old_in = oldcall->in(i);
  61     // Clone old SafePointScalarObjectNodes, adjusting their field contents.
  62     if (old_in != NULL && old_in->is_SafePointScalarObject()) {
  63       SafePointScalarObjectNode* old_sosn = old_in->as_SafePointScalarObject();
  64       uint old_unique = C->unique();
  65       Node* new_in = old_sosn->clone(jvms_adj, sosn_map);
  66       if (old_unique != C->unique()) {
  67         new_in->set_req(0, newcall->in(0)); // reset control edge
  68         new_in = transform_later(new_in); // Register new node.
  69       }
  70       old_in = new_in;
  71     }
  72     newcall->add_req(old_in);
  73   }
  74 
  75   newcall->set_jvms(oldcall->jvms());
  76   for (JVMState *jvms = newcall->jvms(); jvms != NULL; jvms = jvms->caller()) {
  77     jvms->set_map(newcall);
  78     jvms->set_locoff(jvms->locoff()+jvms_adj);
  79     jvms->set_stkoff(jvms->stkoff()+jvms_adj);
  80     jvms->set_monoff(jvms->monoff()+jvms_adj);
  81     jvms->set_scloff(jvms->scloff()+jvms_adj);
  82     jvms->set_endoff(jvms->endoff()+jvms_adj);
  83   }
  84 }
  85 
  86 Node* PhaseMacroExpand::opt_bits_test(Node* ctrl, Node* region, int edge, Node* word, int mask, int bits, bool return_fast_path) {
  87   Node* cmp;


src/share/vm/opto/macro.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File