// Never throws. Does not call Java code. Can not yield a GC. May join a GC.
extern "C" word_t j3StartJNI(uint32* localReferencesNumber,
                               uint32** oldLocalReferencesNumber,
                               vmkit::KnownFrame* Frame) {
  
  JavaThread* th = JavaThread::get();
 
  *oldLocalReferencesNumber = th->currentAddedReferences;
  th->currentAddedReferences = localReferencesNumber;
  th->startJNI();
  th->startUnknownFrame(*Frame);
  th->enterUncooperativeCode();
  assert(th->getLastSP() == th->lastKnownFrame->currentFP);

  return Frame->currentFP;
}