コード例 #1
0
void Execution_Tracer::do_all_roots(Oop_Closure* oc) {
  oc->value(&ctx, (Object_p)NULL);
  for (int i = 0;  i < end_of_live_data();  ++i) {
    bc* bcp = (bc*)entry_ptr(i);  proc* procp = (proc*)bcp;
    switch (bcp->kind) {
        default: fatal(); break;
        case k_bc:
          oc->value(&bcp->method, (Object_p)NULL);
          oc->value(&bcp->rcvr, (Object_p)NULL);
          break;
        case k_gc:
        case k_rcved_interp:
        case k_aux:
          break;
        case k_proc:
          oc->value(&procp->process, (Object_p)NULL);
          break;
    }
  }
}
コード例 #2
0
ファイル: oop_tracer.cpp プロジェクト: mohamedfarag/RoarVM
void Oop_Tracer::do_all_roots(Oop_Closure* oc) {
  for (int i = 0;  i < end_of_live_data();  ++i)
    oc->value(&((Oop*)buffer)[i], (Object_p)NULL);
}