Mercurial > hg > icedtea7
changeset 2850:d44ea9fb2df8
PR2652: CACAO fails as a build VM for icedtea
2015-10-15 Stefan Ring <stefan@complang.tuwien.ac.at>
PR2652: CACAO fails as a build VM for icedtea
* Makefile.am:
(ICEDTEA_PATCHES): Add CACAO patch for PR2652.
* README: Fix CACAO URL.
* patches/cacao/pr2652-classloader.patch:
Set classLoader field in java.lang.Class as expected by JDK.
author | Andrew John Hughes <gnu_andrew@member.fsf.org> |
---|---|
date | Tue, 05 Jan 2016 21:16:49 +0000 |
parents | bffa3455fa17 |
children | ac0e7ec6e958 |
files | ChangeLog Makefile.am README patches/cacao/pr2652-classloader.patch |
diffstat | 4 files changed, 86 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Mon Nov 23 02:54:31 2015 +0000 +++ b/ChangeLog Tue Jan 05 21:16:49 2016 +0000 @@ -1,3 +1,12 @@ +2015-10-15 Stefan Ring <stefan@complang.tuwien.ac.at> + + PR2652: CACAO fails as a build VM for icedtea + * Makefile.am: + (ICEDTEA_PATCHES): Add CACAO patch for PR2652. + * README: Fix CACAO URL. + * patches/cacao/pr2652-classloader.patch: + Set classLoader field in java.lang.Class as expected by JDK. + 2015-11-20 Andrew John Hughes <gnu.andrew@member.fsf.org> * Makefile.am,
--- a/Makefile.am Mon Nov 23 02:54:31 2015 +0000 +++ b/Makefile.am Tue Jan 05 21:16:49 2016 +0000 @@ -382,7 +382,8 @@ patches/cacao/launcher.patch \ patches/cacao/memory.patch \ patches/cacao/pr2032.patch \ - patches/cacao/pr2520-tempdir.patch + patches/cacao/pr2520-tempdir.patch \ + patches/cacao/pr2652-classloader.patch else if USING_CACAO ICEDTEA_PATCHES += \
--- a/README Mon Nov 23 02:54:31 2015 +0000 +++ b/README Tue Jan 05 21:16:49 2016 +0000 @@ -69,7 +69,7 @@ CACAO as VM =========== -The CACAO virtual machine (http://cacaovm.org) can be used as an +The CACAO virtual machine (http://cacaojvm.org) can be used as an alternative to the HotSpot virtual machine. One advantage of this is that it already provides a JIT for many platforms to which HotSpot has not yet been ported, including ppc, arm and mips. To use CACAO as the
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/cacao/pr2652-classloader.patch Tue Jan 05 21:16:49 2016 +0000 @@ -0,0 +1,74 @@ +Set classLoader field in java.lang.Class as expected by JDK + +--- cacao/cacao/src/vm/class.cpp ++++ cacao/cacao/src/vm/class.cpp +@@ -314,6 +314,9 @@ + + c = classcache_store(cl, c, true); + ++ java_lang_Class jlc(LLNI_classinfo_wrap(c)); ++ jlc.set_classLoader(cl); ++ + return c; + } + +--- cacao/cacao/src/vm/javaobjects.cpp ++++ cacao/cacao/src/vm/javaobjects.cpp +@@ -270,11 +270,19 @@ + { 0, 0 } + }; + ++off_t java_lang_Class::offset_classLoader; ++ ++static DynOffsetEntry dyn_entries_java_lang_Class[] = { ++ { &java_lang_Class::set_classLoader_offset, "classLoader" }, ++ { 0, 0 } ++}; ++ + #endif + + void jobjects_register_dyn_offsets() + { + register_dyn_entry_table(class_java_lang_Thread, dyn_entries_java_lang_Thread); ++ register_dyn_entry_table(class_java_lang_Class, dyn_entries_java_lang_Class); + } + + #endif // ENABLE_JAVASE +--- cacao/cacao/src/vm/javaobjects.hpp ++++ cacao/cacao/src/vm/javaobjects.hpp +@@ -1847,6 +1847,35 @@ + + + /** ++ * OpenJDK java/lang/Class ++ * ++ * Object layout: ++ * ++ * 0. object header ++ * ? java.lang.ClassLoader classLoader ++ */ ++class java_lang_Class : public java_lang_Object, private FieldAccess { ++private: ++ // Static offsets of the object's instance fields. ++ static off_t offset_classLoader; ++ ++public: ++ java_lang_Class(java_handle_t* h) : java_lang_Object(h) {} ++ ++ // Setters. ++ void set_classLoader(java_handle_t* value); ++ ++ // Offset initializers ++ static void set_classLoader_offset(int32_t off) { offset_classLoader = off; } ++}; ++ ++inline void java_lang_Class::set_classLoader(java_handle_t* value) ++{ ++ assert(offset_classLoader); ++ set(_handle, offset_classLoader, value); ++} ++ ++/** + * OpenJDK java/lang/ClassLoader + * + * Object layout: