Merge branch 'master' of dice.ecovate.com:/home/dicej/git/vm

This commit is contained in:
Eric Scharff 2007-10-11 16:42:41 -06:00
commit b95a573b7f
4 changed files with 618 additions and 192 deletions

File diff suppressed because it is too large Load Diff

View File

@ -2203,7 +2203,11 @@ resolveClass(Thread* t, object spec)
class_ = hashMapFind
(t, t->m->bootstrapClassMap, spec, byteArrayHash, byteArrayEqual);
if (class_ == 0) {
if (class_) {
set(t, classVirtualTable(t, class_),
classVirtualTable
(t, arrayBody(t, t->m->types, Machine::JobjectType)));
} else {
class_ = makeArrayClass(t, spec);
}
} else {

View File

@ -1411,8 +1411,12 @@ writeConstructors(Output* out, Object* declarations)
out->write(" if (classVmFlags(t, class__) & BootstrapFlag) {\n");
out->write(" classVmFlags(t, class__) &= ~BootstrapFlag;\n");
out->write("#ifndef NDEBUG\n");
out->write(" object e = t->exception;\n");
out->write(" PROTECT(t, e);\n");
out->write("#endif\n");
out->write(" resolveClass(t, className(t, class__));\n");
out->write(" assert(t, t->exception == 0);\n");
out->write(" assert(t, t->exception == e);\n");
out->write(" }\n");
}

View File

@ -41,9 +41,11 @@
(pod compiled
(uint16_t maxLocals)
(uint16_t maxStack)
(uint32_t parameterFootprint)
(uint32_t codeLength)
(uint32_t lineNumberTableLength)
(uint32_t exceptionHandlerTableLength)
(uint32_t stackMapTableLength)
(uint8_t[0] body))
(type method java/lang/reflect/Method