Example #1
0
void VMProcess::activate_system() {
  // Find the Delta level 'Processor'
  processOop proc = processOop(Universe::find_global("Processor"));
  if (!proc->is_process()) {
    klassOop scheduler_klass = klassOop(Universe::find_global("ProcessorScheduler"));
    proc = processOop(scheduler_klass->klass_part()->allocateObject());
    associationOop assoc = Universe::find_global_association("Processor");
    assoc->set_value(proc);
  }

  DeltaProcess::initialize_async_dll_event();

  // Create the initial process
  DeltaProcess::set_scheduler(new DeltaProcess(proc, oopFactory::new_symbol("start")));

  // Bind the scheduler to Processor
  proc->set_process(DeltaProcess::scheduler());
  DeltaProcess::scheduler()->set_processObj(proc);

  // Transfer control to the scheduler
  transfer_to(DeltaProcess::scheduler());

  // Call the ever running loop handling vm operations
  loop();
}
Example #2
0
inline Process* checkProcess(oop p) {
  assert(p->is_process(), "not a process");
  Process* proc = processOop(p)->process();
  if (!proc || proc->processObj() != p) {
    return NULL;                // dead process or a clone of a process obj
  } else {
    return proc;
  }
}