From 2b4361c0604b64fdc6536245c258822115e4bba8 Mon Sep 17 00:00:00 2001 From: Joel Dice Date: Sat, 5 Dec 2009 19:40:46 -0700 Subject: [PATCH] fix GNU Classpath build --- makefile | 7 ++++--- src/gnu.cpp | 4 ++-- src/machine.cpp | 30 ++++++++++++++++++++++++++---- 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/makefile b/makefile index 93e2bd9f9f..694450c6c7 100644 --- a/makefile +++ b/makefile @@ -54,7 +54,7 @@ ifdef gnu gnu-object-dep = $(build)/gnu-object.dep gnu-cflags = -DBOOT_BUILTINS=\"javaio,javalang,javalangreflect,javamath,javanet,javanio,javautil\" -DAVIAN_GNU gnu-lflags = -lgmp - gnu-objects := $(shell find $(build)/gnu-objects -name "*.o") + gnu-objects = $(shell find $(build)/gnu-objects -name "*.o") endif root := $(shell (cd .. && pwd)) @@ -446,7 +446,6 @@ gnu-overrides = \ avian/*.class \ avian/resource/*.class \ java/lang/Class.class \ - java/lang/Class\$$*.class \ java/lang/Enum.class \ java/lang/InheritableThreadLocal.class \ java/lang/Object.class \ @@ -469,7 +468,9 @@ gnu-overrides = \ java/lang/reflect/AccessibleObject.class \ java/lang/reflect/Constructor.class \ java/lang/reflect/Field.class \ - java/lang/reflect/Method.class + java/lang/reflect/Method.class \ + java/lang/reflect/Proxy.class \ + java/lang/reflect/Proxy\$$*.class test-sources = $(wildcard $(test)/*.java) test-classes = $(call java-classes,$(test-sources),$(test),$(test-build)) diff --git a/src/gnu.cpp b/src/gnu.cpp index fcc5bc3b97..ac3c4ddf25 100644 --- a/src/gnu.cpp +++ b/src/gnu.cpp @@ -351,7 +351,7 @@ Avian_java_lang_VMClassLoader_getPrimitiveClass } extern "C" JNIEXPORT int64_t JNICALL -Avian_java_lang_ClassLoader_defineClass +Avian_avian_SystemClassLoader_defineClass (Thread*, object, uintptr_t*); extern "C" JNIEXPORT int64_t JNICALL @@ -367,7 +367,7 @@ Avian_java_lang_VMClassLoader_defineClass // fprintf(stderr, "define class %s in %p\n", n, // reinterpret_cast(arguments[0])); - return Avian_java_lang_ClassLoader_defineClass(t, 0, args); + return Avian_avian_SystemClassLoader_defineClass(t, 0, args); } extern "C" JNIEXPORT int64_t JNICALL diff --git a/src/machine.cpp b/src/machine.cpp index 4fa9aaf9b5..e6bb889cbf 100644 --- a/src/machine.cpp +++ b/src/machine.cpp @@ -173,7 +173,9 @@ turnOffTheLights(Thread* t) void (*function)(Thread*, object); memcpy(&function, &finalizerFinalize(t, f), BytesPerWord); - function(t, finalizerTarget(t, f)); + if (function) { + function(t, finalizerTarget(t, f)); + } } for (object* p = &(t->m->tenuredFinalizers); *p;) { @@ -182,7 +184,9 @@ turnOffTheLights(Thread* t) void (*function)(Thread*, object); memcpy(&function, &finalizerFinalize(t, f), BytesPerWord); - function(t, finalizerTarget(t, f)); + if (function) { + function(t, finalizerTarget(t, f)); + } } Machine* m = t->m; @@ -1848,8 +1852,9 @@ bootClass(Thread* t, Machine::Type type, int superType, uint32_t objectMask, super = (superType >= 0 ? arrayBody(t, t->m->types, superType) : 0); object class_ = t->m->processor->makeClass - (t, 0, BootstrapFlag, fixedSize, arrayElementSize, 0, mask, 0, 0, super, 0, - 0, 0, 0, 0, 0, t->m->loader, vtableLength); + (t, 0, BootstrapFlag, fixedSize, arrayElementSize, + arrayElementSize ? 1 : 0, mask, 0, 0, super, 0, 0, 0, 0, 0, 0, + t->m->loader, vtableLength); set(t, t->m->types, ArrayBody + (type * BytesPerWord), class_); } @@ -1951,6 +1956,23 @@ boot(Thread* t) classVmFlags(t, arrayBody(t, m->types, Machine::JvoidType)) |= PrimitiveFlag; + set(t, arrayBody(t, m->types, Machine::BooleanArrayType), ClassStaticTable, + arrayBody(t, m->types, Machine::JbooleanType)); + set(t, arrayBody(t, m->types, Machine::ByteArrayType), ClassStaticTable, + arrayBody(t, m->types, Machine::JbyteType)); + set(t, arrayBody(t, m->types, Machine::CharArrayType), ClassStaticTable, + arrayBody(t, m->types, Machine::JcharType)); + set(t, arrayBody(t, m->types, Machine::ShortArrayType), ClassStaticTable, + arrayBody(t, m->types, Machine::JshortType)); + set(t, arrayBody(t, m->types, Machine::IntArrayType), ClassStaticTable, + arrayBody(t, m->types, Machine::JintType)); + set(t, arrayBody(t, m->types, Machine::LongArrayType), ClassStaticTable, + arrayBody(t, m->types, Machine::JlongType)); + set(t, arrayBody(t, m->types, Machine::FloatArrayType), ClassStaticTable, + arrayBody(t, m->types, Machine::JfloatType)); + set(t, arrayBody(t, m->types, Machine::DoubleArrayType), ClassStaticTable, + arrayBody(t, m->types, Machine::JdoubleType)); + m->classMap = makeHashMap(t, 0, 0); m->bootstrapClassMap = makeHashMap(t, 0, 0);