Mercurial > hg > truffle
diff src/share/vm/classfile/systemDictionary.cpp @ 6847:65d07d9ee446
8000263: JSR 292: signature types may appear to be unloaded
Reviewed-by: kvn, jrose
author | twisti |
---|---|
date | Mon, 08 Oct 2012 17:04:00 -0700 |
parents | f6b0eb4e44cf |
children | 19eb999cb72c |
line wrap: on
line diff
--- a/src/share/vm/classfile/systemDictionary.cpp Mon Oct 08 13:02:13 2012 -0700 +++ b/src/share/vm/classfile/systemDictionary.cpp Mon Oct 08 17:04:00 2012 -0700 @@ -973,9 +973,12 @@ if (sid != vmSymbols::NO_SID) { Klass* k = NULL; switch (sid) { - #define WK_KLASS_CASE(name, symbol, ignore_option) \ + #define WK_KLASS_CASE(name, symbol, option) \ case vmSymbols::VM_SYMBOL_ENUM_NAME(symbol): \ - k = WK_KLASS(name); break; + if (option == Pre_Link) { \ + k = WK_KLASS(name); \ + } \ + break; WK_KLASSES_DO(WK_KLASS_CASE) #undef WK_KLASS_CASE } @@ -1955,6 +1958,16 @@ start_id = limit_id; } +#ifdef ASSERT +void SystemDictionary::check_wk_pre_link_klasses() { + #define WK_KLASS_CHECK(name, symbol, option) \ + if (option == Pre_Link) { \ + assert(name()->is_public(), ""); \ + } + WK_KLASSES_DO(WK_KLASS_CHECK); + #undef WK_KLASS_CHECK +} +#endif void SystemDictionary::initialize_preloaded_classes(TRAPS) { assert(WK_KLASS(Object_klass) == NULL, "preloaded classes should only be initialized once"); @@ -2010,6 +2023,8 @@ initialize_wk_klasses_until(WKID_LIMIT, scan, CHECK); + check_wk_pre_link_klasses(); + _box_klasses[T_BOOLEAN] = WK_KLASS(Boolean_klass); _box_klasses[T_CHAR] = WK_KLASS(Character_klass); _box_klasses[T_FLOAT] = WK_KLASS(Float_klass);