[PATCH] PR2652: CACAO fails as a build VM for icedtea

Andrew Hughes gnu.andrew at redhat.com
Thu Oct 15 16:27:07 UTC 2015


----- Original Message -----
> I've also pushed this here:
> https://bitbucket.org/Ringdingcoder/icedtea7-2.6/commits/fe0d3806c5ada75823de4ef116ca5cb80b4e88df
> 
> This fixes the problem and works very well, but is not backwards compatible
> with older jdk versions (as in icedtea 2.5). I plan to commit a more flexible
> patch to the CACAO repository at some point in the future.
> 

Thanks. The 2.5.x series is dead anyway, so that's not a problem.

I'll look at integrating this in time for 2.6.2.

>  ChangeLog                              |   9 ++++
>  Makefile.am                            |   3 +-
>  NEWS                                   |   2 +
>  README                                 |   2 +-
>  patches/cacao/pr2652-classloader.patch |  74
>  ++++++++++++++++++++++++++++++++++
>  5 files changed, 88 insertions(+), 2 deletions(-)
> 
> 
> # HG changeset patch
> # User Stefan Ring <stefan at complang.tuwien.ac.at>
> # Date 1444840368 -7200
> #      Wed Oct 14 18:32:48 2015 +0200
> # Node ID fe0d3806c5ada75823de4ef116ca5cb80b4e88df
> # Parent  b64e1444311ca34819f9a1fb613af38f67e3bba2
> PR2652: CACAO fails as a build VM for icedtea
> 
> diff -r b64e1444311c -r fe0d3806c5ad ChangeLog
> --- a/ChangeLog	Fri Aug 21 21:22:06 2015 +0100
> +++ b/ChangeLog	Wed Oct 14 18:32:48 2015 +0200
> @@ -1,3 +1,12 @@
> +2015-10-15  Stefan Ring <stefan at complang.tuwien.ac.at>
> +	PR2652: CACAO fails as a build VM for icedtea
> +	* Makefile.am:
> +	(ICEDTEA_PATCHES): Add CACAO patch for PR2652.
> +	* NEWS: Updated.
> +	* README: Fix CACAO URL.
> +	* patches/cacao/pr2652-classloader.patch:
> +	Set classLoader field in java.lang.Class as expected by JDK.
> +
>  2015-08-21  Andrew John Hughes  <gnu.andrew at member.fsf.org>
>  
>  	* NEWS: Replace temporary OpenJDK 7
> diff -r b64e1444311c -r fe0d3806c5ad Makefile.am
> --- a/Makefile.am	Fri Aug 21 21:22:06 2015 +0100
> +++ b/Makefile.am	Wed Oct 14 18:32:48 2015 +0200
> @@ -383,7 +383,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 += \
> diff -r b64e1444311c -r fe0d3806c5ad NEWS
> --- a/NEWS	Fri Aug 21 21:22:06 2015 +0100
> +++ b/NEWS	Wed Oct 14 18:32:48 2015 +0200
> @@ -13,6 +13,8 @@
>  CVE-XXXX-YYYY: http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY
>  
>  New in release 2.6.2 (2015-10-XX):
> +* CACAO
> +  - PR2652: Set classLoader field in java.lang.Class as expected by JDK
>  
>  New in release 2.6.1 (2015-07-21):
>  
> diff -r b64e1444311c -r fe0d3806c5ad README
> --- a/README	Fri Aug 21 21:22:06 2015 +0100
> +++ b/README	Wed Oct 14 18:32:48 2015 +0200
> @@ -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
> diff -r b64e1444311c -r fe0d3806c5ad patches/cacao/pr2652-classloader.patch
> --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
> +++ b/patches/cacao/pr2652-classloader.patch	Wed Oct 14 18:32:48 2015 +0200
> @@ -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:
> 
> 

-- 
Andrew :)

Senior Free Java Software Engineer
Red Hat, Inc. (http://www.redhat.com)

PGP Key: ed25519/35964222 (hkp://keys.gnupg.net)
Fingerprint = 5132 579D D154 0ED2 3E04  C5A0 CFDA 0F9B 3596 4222

PGP Key: rsa4096/248BDC07 (hkp://keys.gnupg.net)
Fingerprint = EC5A 1F5E C0AD 1D15 8F1F  8F91 3B96 A578 248B DC07



More information about the distro-pkg-dev mailing list