Exemple #1
0
void DeltaProcess::transfer(ProcessState reason, DeltaProcess* target) {
  // change time_stamp for target
  target->inc_time_stamp();

  {
    ThreadCritical tc;

    assert(this == active(), "receiver must be the active process");

    // save state
    _last_Delta_fp = ::last_Delta_fp;	// *don't* use accessors! (check their implementation to see why)
    _last_Delta_sp = ::last_Delta_sp;
    set_state(reason);

    // restore state
    ::last_Delta_fp = target->_last_Delta_fp;	// *don't* use accessors!
    ::last_Delta_sp = target->_last_Delta_sp;
    set_current(target);
    set_active(target);
    resetStepping();
  }

  // transfer
  basic_transfer(target);
}
Exemple #2
0
void VMProcess::transfer_to(DeltaProcess* target) {
  {
    ThreadCritical tc;

    // restore state
    ::last_Delta_fp = target->_last_Delta_fp;	// *don't* use accessors! 
    ::last_Delta_sp = target->_last_Delta_sp;
    DeltaProcess::set_active(target);
    DeltaProcess::set_current(target);
  }
  basic_transfer(target);
}
Exemple #3
0
void DeltaProcess::transfer_to_vm() {
  {
    ThreadCritical tc;

    assert(this == active(), "receiver must be the active process");

    // save state
    _last_Delta_fp = ::last_Delta_fp;	// *don't* use accessors! (check their implementation to see why)
    _last_Delta_sp = ::last_Delta_sp;
    set_current(VMProcess::vm_process());
  }
  basic_transfer(VMProcess::vm_process());
}