Exemple #1
0
oop processOopClass::ActivationAt_prim(smi index, void *FH) {
  ResourceMark rm;
  Process* p;
  frame* last;
 abstract_vframe* vf = vframe_at(index, FH, p, last);
  if (!vf) return NULL; 
  oop vfo = new_vframeOop(p, vf)->as_mirror();
  if (p == currentProcess) p->killVFrameOopsAndSetWatermark(last);
  return vfo;
}
bool vframeArray::structural_compare(JavaThread* thread, GrowableArray<compiledVFrame*>* chunk) {
  if (owner_thread() != thread) return false;
  int index = 0;
#if 0 // FIXME can't do this comparison

  // Compare only within vframe array.
  for (deoptimizedVFrame* vf = deoptimizedVFrame::cast(vframe_at(first_index())); vf; vf = vf->deoptimized_sender_or_null()) {
    if (index >= chunk->length() || !vf->structural_compare(chunk->at(index))) return false;
    index++;
  }
  if (index != chunk->length()) return false;
#endif

  return true;
}
Exemple #3
0
oop processOopClass::GotoByteCode_prim(smi bci, objVectorOop exprStack,
                                       void *FH) {
  ResourceMark rm;
  preserved pres1(this);
  Process* p;
  frame* last;
  abstract_vframe* vf = vframe_at(0, FH, p, last);
  if (!vf) return NULL; 
  if (!p->isRunnable()) {
    failure(FH, "processes is not runnable");
    return 0;
  }
  if (p == currentProcess) {
    failure(FH, "cannot operate on current process");
    return 0;
  }
  if (p == twainsProcess) {
    failure(FH, "cannot operate on scheduler process");
    return 0;
  }
  p->gotoByteCode(vf, bci, exprStack, FH);
  return pres1.value;
}
Exemple #4
0
oop processOopClass::KillUpTo_prim(smi index, void *FH) {
  ResourceMark rm;
  preserved pres1(this);
  Process* p;
  frame* last;
  abstract_vframe* vf = vframe_at(index, FH, p, last);
  if (!vf) return NULL; 
  if (!p->isRunnable()) {
    failure(FH, "process is not runnable");
    return 0;
  }
  if (p == currentProcess) {
    failure(FH, "cannot operate on current process");
    return 0;
  }
  if (p == twainsProcess) {
    failure(FH, "cannot operate on scheduler process");
    return 0;
  }
  p->killFrames(vf);
  assert(!p->isKilling(), "shouldn't be in killing mode anymore");
  return pres1.value;
}