src/share/vm/ci/ciObjectFactory.cpp

Print this page
rev 3688 : 7054512: Compress class pointers after perm gen removal
Summary: support of compress class pointers in the compilers.
Reviewed-by:


 129       Symbol* vmsym = vmSymbols::symbol_at((vmSymbols::SID) i);
 130       assert(vmSymbols::find_sid(vmsym) == i, "1-1 mapping");
 131       ciSymbol* sym = new (_arena) ciSymbol(vmsym, (vmSymbols::SID) i);
 132       init_ident_of(sym);
 133       _shared_ci_symbols[i] = sym;
 134     }
 135 #ifdef ASSERT
 136     for (i = vmSymbols::FIRST_SID; i < vmSymbols::SID_LIMIT; i++) {
 137       Symbol* vmsym = vmSymbols::symbol_at((vmSymbols::SID) i);
 138       ciSymbol* sym = vm_symbol_at((vmSymbols::SID) i);
 139       assert(sym->get_symbol() == vmsym, "oop must match");
 140     }
 141     assert(ciSymbol::void_class_signature()->get_symbol() == vmSymbols::void_class_signature(), "spot check");
 142 #endif
 143   }
 144 
 145   _ci_metadata = new (_arena) GrowableArray<ciMetadata*>(_arena, 64, 0, NULL);
 146 
 147   for (int i = T_BOOLEAN; i <= T_CONFLICT; i++) {
 148     BasicType t = (BasicType)i;
 149     if (type2name(t) != NULL && t != T_OBJECT && t != T_ARRAY && t != T_NARROWOOP) {
 150       ciType::_basic_types[t] = new (_arena) ciType(t);
 151       init_ident_of(ciType::_basic_types[t]);
 152     }
 153   }
 154 
 155   ciEnv::_null_object_instance = new (_arena) ciNullObject();
 156   init_ident_of(ciEnv::_null_object_instance);
 157 
 158 #define WK_KLASS_DEFN(name, ignore_s, opt)                              \
 159   if (SystemDictionary::name() != NULL) \
 160     ciEnv::_##name = get_metadata(SystemDictionary::name())->as_instance_klass();
 161 
 162   WK_KLASSES_DO(WK_KLASS_DEFN)
 163 #undef WK_KLASS_DEFN
 164 
 165   for (int len = -1; len != _ci_metadata->length(); ) {
 166     len = _ci_metadata->length();
 167     for (int i2 = 0; i2 < len; i2++) {
 168       ciMetadata* obj = _ci_metadata->at(i2);
 169       assert (obj->is_metadata(), "what else would it be?");




 129       Symbol* vmsym = vmSymbols::symbol_at((vmSymbols::SID) i);
 130       assert(vmSymbols::find_sid(vmsym) == i, "1-1 mapping");
 131       ciSymbol* sym = new (_arena) ciSymbol(vmsym, (vmSymbols::SID) i);
 132       init_ident_of(sym);
 133       _shared_ci_symbols[i] = sym;
 134     }
 135 #ifdef ASSERT
 136     for (i = vmSymbols::FIRST_SID; i < vmSymbols::SID_LIMIT; i++) {
 137       Symbol* vmsym = vmSymbols::symbol_at((vmSymbols::SID) i);
 138       ciSymbol* sym = vm_symbol_at((vmSymbols::SID) i);
 139       assert(sym->get_symbol() == vmsym, "oop must match");
 140     }
 141     assert(ciSymbol::void_class_signature()->get_symbol() == vmSymbols::void_class_signature(), "spot check");
 142 #endif
 143   }
 144 
 145   _ci_metadata = new (_arena) GrowableArray<ciMetadata*>(_arena, 64, 0, NULL);
 146 
 147   for (int i = T_BOOLEAN; i <= T_CONFLICT; i++) {
 148     BasicType t = (BasicType)i;
 149     if (type2name(t) != NULL && t != T_OBJECT && t != T_ARRAY && t != T_NARROWOOP && t != T_NARROWKLASS) {
 150       ciType::_basic_types[t] = new (_arena) ciType(t);
 151       init_ident_of(ciType::_basic_types[t]);
 152     }
 153   }
 154 
 155   ciEnv::_null_object_instance = new (_arena) ciNullObject();
 156   init_ident_of(ciEnv::_null_object_instance);
 157 
 158 #define WK_KLASS_DEFN(name, ignore_s, opt)                              \
 159   if (SystemDictionary::name() != NULL) \
 160     ciEnv::_##name = get_metadata(SystemDictionary::name())->as_instance_klass();
 161 
 162   WK_KLASSES_DO(WK_KLASS_DEFN)
 163 #undef WK_KLASS_DEFN
 164 
 165   for (int len = -1; len != _ci_metadata->length(); ) {
 166     len = _ci_metadata->length();
 167     for (int i2 = 0; i2 < len; i2++) {
 168       ciMetadata* obj = _ci_metadata->at(i2);
 169       assert (obj->is_metadata(), "what else would it be?");