natClassLoader.cc (_Jv_NewClassFromInitializer): Clear INTERPRETED access modifier.
authorAndrew Haley <aph@redhat.com>
Thu, 31 May 2007 09:30:39 +0000 (09:30 +0000)
committerAndrew Haley <aph@gcc.gnu.org>
Thu, 31 May 2007 09:30:39 +0000 (09:30 +0000)
2007-05-31  Andrew Haley  <aph@redhat.com>

        * java/lang/natClassLoader.cc (_Jv_NewClassFromInitializer): Clear
        INTERPRETED access modifier.

From-SVN: r125218

libjava/ChangeLog
libjava/java/lang/natClassLoader.cc

index 9794017b2574203a2f4faff84ad10d56ee35d304..b0c7127cbe8996adead23fc43f47efdeba83dd4e 100644 (file)
@@ -1,3 +1,8 @@
+2007-05-31  Andrew Haley  <aph@redhat.com>
+
+       * java/lang/natClassLoader.cc (_Jv_NewClassFromInitializer): Clear
+       INTERPRETED access modifier.
+
 2007-05-31  Paolo Bonzini  <bonzini@gnu.org>
 
        PR libjava/32098
index e62c6d392818b702e5b0a23c59af16b62be6b511..9a687ff9105b893b2d136d5055e106ac9dfa9157 100644 (file)
@@ -281,7 +281,16 @@ _Jv_NewClassFromInitializer (const char *class_initializer)
   memcpy (dst, src, len);
   
   new_class->engine = &_Jv_soleIndirectCompiledEngine;
-  
+
+  /* FIXME:  Way back before the dawn of time, we overloaded the
+     SYNTHETIC class access modifier to mean INTERPRETED.  This was a
+     Bad Thing, but it didn't matter then because classes were never
+     marked synthetic.  However, it is possible to redeem the
+     situation: _Jv_NewClassFromInitializer is only called from
+     compiled classes, so we clear the INTERPRETED flag.  This is a
+     kludge!  */
+  new_class->accflags &= ~java::lang::reflect::Modifier::INTERPRETED;
+
   (*_Jv_RegisterClassHook) (new_class);
   
   return new_class;