X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fvm%2Fclass.cpp;h=698356d11566973010920c69af5720f75694445d;hb=8c6bb03b79a31fcdb02e2331a91a928d558c2845;hp=0aa5f21233972cf757f8f2f0f4b8c7285d38a7a7;hpb=cce34f898a508bde05c54be7f19c0fbfeb2dc0a2;p=cacao.git diff --git a/src/vm/class.cpp b/src/vm/class.cpp index 0aa5f2123..698356d11 100644 --- a/src/vm/class.cpp +++ b/src/vm/class.cpp @@ -34,14 +34,14 @@ #include "arch.h" -#include "mm/memory.h" +#include "mm/memory.hpp" #include "native/llni.h" #include "threads/lock.hpp" #include "threads/mutex.hpp" -#include "toolbox/logging.h" +#include "toolbox/logging.hpp" #include "vm/array.hpp" #include "vm/jit/builtin.hpp" @@ -2117,6 +2117,13 @@ int32_t class_get_modifiers(classinfo *c, bool ignoreInnerClassesAttrib) classref_or_classinfo outer; utf *innername; int i; + int32_t flags; + + /* default to flags of passed class */ + + flags = c->flags; + + /* if requested we check if passed class is inner class */ if (!ignoreInnerClassesAttrib && (c->innerclasscount != 0)) { /* search for passed class as inner class */ @@ -2137,16 +2144,16 @@ int32_t class_get_modifiers(classinfo *c, bool ignoreInnerClassesAttrib) if (outer.any) /* return flags got from the outer class file */ - return c->innerclass[i].flags & ACC_CLASS_REFLECT_MASK; - else - return c->flags & ACC_CLASS_REFLECT_MASK; + flags = c->innerclass[i].flags; + + break; } } } - /* passed class is no inner class or it was not requested */ + /* remove ACC_SUPER bit from flags */ - return c->flags & ACC_CLASS_REFLECT_MASK; + return flags & ~ACC_SUPER & ACC_CLASS_REFLECT_MASK; }