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 class_ = hashMapFind
(t, t->m->bootstrapClassMap, spec, byteArrayHash, byteArrayEqual); (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); class_ = makeArrayClass(t, spec);
} }
} else { } else {

View File

@ -1411,8 +1411,12 @@ writeConstructors(Output* out, Object* declarations)
out->write(" if (classVmFlags(t, class__) & BootstrapFlag) {\n"); out->write(" if (classVmFlags(t, class__) & BootstrapFlag) {\n");
out->write(" 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(" 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"); out->write(" }\n");
} }

View File

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