snapshot; known bug: finalizers and weak references don't work correctly wrt tenured objects

This commit is contained in:
Joel Dice
2007-07-07 19:06:32 -06:00
parent f71c77298c
commit a77693fb29
8 changed files with 106 additions and 42 deletions

View File

@ -331,6 +331,7 @@ collect(Thread* t, Heap::CollectionType type)
void
removeMonitor(Thread* t, object o)
{
abort(t);
hashMapRemove(t, t->vm->monitorMap, o, objectHash, referenceEqual);
}
@ -670,6 +671,24 @@ makeString(Thread* t, const char* format, ...)
return makeString(t, s, 0, byteArrayLength(t, s), 0);
}
void
stringChars(Thread* t, object string, char* chars)
{
object data = stringData(t, string);
if (objectClass(t, data)
== arrayBody(t, t->vm->types, Machine::ByteArrayType))
{
memcpy(chars,
&byteArrayBody(t, data, stringOffset(t, string)),
stringLength(t, string));
} else {
for (int i = 0; i < stringLength(t, string); ++i) {
chars[i] = charArrayBody(t, data, stringOffset(t, string) + i);
}
}
chars[stringLength(t, string)] = 0;
}
object
hashMapFindNode(Thread* t, object map, object key,
uint32_t (*hash)(Thread*, object),