예제 #1
0
void stringTable::relocate() {
  stringTableEntry* e;
  FOR_ALL_ENTRIES(e) {
    stringOop* addr;
    FOR_ALL_STRING_ADDR(e, addr, RELOCATE_TEMPLATE(addr));
  }
}
예제 #2
0
void symbolTable::relocate() {
  symbolTableEntry* e;
  FOR_ALL_ENTRIES(e) {
    symbolOop* addr;
    FOR_ALL_SYMBOL_ADDR(e, addr, RELOCATE_TEMPLATE(addr));
  }
}
예제 #3
0
파일: ncode.cpp 프로젝트: AdamSpitz/self
void OopNCode::relocate() {
  ResourceMark m;
  addrDesc* p = locs(), *end = locsEnd();
  LocChange* changes = NEW_RESOURCE_ARRAY( LocChange, end - p);
  int32 locLen = 0;
  for (; p < end; p++) {
    if (!p->isOop()) {
      // no oops here
    } else {
      oop oldOop = (oop)p->referent(this);
      oop newOop = oldOop;
      RELOCATE_TEMPLATE(&newOop);
      if (newOop != oldOop) {
        changes[locLen].p = p;
        changes[locLen].newOop = newOop;
        locLen ++;
      }
    }
  }
  for (LocChange* l = &changes[0]; locLen > 0; locLen--, l++) {
    l->p->set_referent(this, (char*)l->newOop);
  }
}
예제 #4
0
파일: key.cpp 프로젝트: AaronNGray/self
void NMethodLookupKey::relocate() {
    RELOCATE_TEMPLATE(&_receiverMapOop);
    RELOCATE_TEMPLATE(&_methodHolder_or_map);
    RELOCATE_TEMPLATE(&selector);
    RELOCATE_TEMPLATE(&delegatee);
}
예제 #5
0
파일: space.cpp 프로젝트: ardeujho/self
void space::relocate() {
  for (oop* p = objs_bottom; p < objs_top; p ++)
    RELOCATE_TEMPLATE(p);
}