sinterface IManagedObjectCollector_v { // notify collector that there is an object in a location public void noteObject(VAddr start, int size); // same plus callback after compaction public void noteObject(VAddr start, int size, IVF1 updateAddress); // notify collector that there is a pointer in a location public void notePointer(VAddr addr, IVF1 updateAddress); default public void notePointer(VAddr addr) { notePointer(addr, null); } public void noteRootPointer(VAddr addr); // notify collector that there is a pointer array in a location public void notePointerArray(VAddr start); // notify collector that there is an int array in a location public void noteIntArray(VAddr start); void noteString(VAddr addr, IVF1 updateAddress); //default void noteString(VAddr addr) { noteString(addr, null); } // call after collectAndCompact to get new location of objects // XX - I think we don't need this. Object moves are done through // callbacks (updateAddress) and are incremental and concurrent now VAddr getNewLocation(VAddr addr); }