123 } 124 125 void ciObjectFactory::init_shared_objects() { 126 127 _next_ident = 1; // start numbering CI objects at 1 128 129 { 130 // Create the shared symbols, but not in _shared_ci_metadata. 131 int i; 132 for (i = vmSymbols::FIRST_SID; i < vmSymbols::SID_LIMIT; i++) { 133 Symbol* vmsym = vmSymbols::symbol_at((vmSymbols::SID) i); 134 assert(vmSymbols::find_sid(vmsym) == i, "1-1 mapping"); 135 ciSymbol* sym = new (_arena) ciSymbol(vmsym, (vmSymbols::SID) i); 136 init_ident_of(sym); 137 _shared_ci_symbols[i] = sym; 138 } 139 #ifdef ASSERT 140 for (i = vmSymbols::FIRST_SID; i < vmSymbols::SID_LIMIT; i++) { 141 Symbol* vmsym = vmSymbols::symbol_at((vmSymbols::SID) i); 142 ciSymbol* sym = vm_symbol_at((vmSymbols::SID) i); 143 assert(sym->get_symbol() == vmsym, "oop must match"); 144 } 145 assert(ciSymbol::void_class_signature()->get_symbol() == vmSymbols::void_class_signature(), "spot check"); 146 #endif 147 } 148 149 _ci_metadata = new (_arena) GrowableArray<ciMetadata*>(_arena, 64, 0, NULL); 150 151 for (int i = T_BOOLEAN; i <= T_CONFLICT; i++) { 152 BasicType t = (BasicType)i; 153 if (type2name(t) != NULL && t != T_OBJECT && t != T_ARRAY && t != T_NARROWOOP && t != T_NARROWKLASS) { 154 ciType::_basic_types[t] = new (_arena) ciType(t); 155 init_ident_of(ciType::_basic_types[t]); 156 } 157 } 158 159 ciEnv::_null_object_instance = new (_arena) ciNullObject(); 160 init_ident_of(ciEnv::_null_object_instance); 161 162 #define WK_KLASS_DEFN(name, ignore_s, opt) \ 163 if (SystemDictionary::name() != NULL) \ 164 ciEnv::_##name = get_metadata(SystemDictionary::name())->as_instance_klass(); 165 | 123 } 124 125 void ciObjectFactory::init_shared_objects() { 126 127 _next_ident = 1; // start numbering CI objects at 1 128 129 { 130 // Create the shared symbols, but not in _shared_ci_metadata. 131 int i; 132 for (i = vmSymbols::FIRST_SID; i < vmSymbols::SID_LIMIT; i++) { 133 Symbol* vmsym = vmSymbols::symbol_at((vmSymbols::SID) i); 134 assert(vmSymbols::find_sid(vmsym) == i, "1-1 mapping"); 135 ciSymbol* sym = new (_arena) ciSymbol(vmsym, (vmSymbols::SID) i); 136 init_ident_of(sym); 137 _shared_ci_symbols[i] = sym; 138 } 139 #ifdef ASSERT 140 for (i = vmSymbols::FIRST_SID; i < vmSymbols::SID_LIMIT; i++) { 141 Symbol* vmsym = vmSymbols::symbol_at((vmSymbols::SID) i); 142 ciSymbol* sym = vm_symbol_at((vmSymbols::SID) i); 143 assert(sym->get_symbol()->equals(vmsym), "oop must match"); 144 } 145 assert(ciSymbol::void_class_signature()->get_symbol()->equals(vmSymbols::void_class_signature()), "spot check"); 146 #endif 147 } 148 149 _ci_metadata = new (_arena) GrowableArray<ciMetadata*>(_arena, 64, 0, NULL); 150 151 for (int i = T_BOOLEAN; i <= T_CONFLICT; i++) { 152 BasicType t = (BasicType)i; 153 if (type2name(t) != NULL && t != T_OBJECT && t != T_ARRAY && t != T_NARROWOOP && t != T_NARROWKLASS) { 154 ciType::_basic_types[t] = new (_arena) ciType(t); 155 init_ident_of(ciType::_basic_types[t]); 156 } 157 } 158 159 ciEnv::_null_object_instance = new (_arena) ciNullObject(); 160 init_ident_of(ciEnv::_null_object_instance); 161 162 #define WK_KLASS_DEFN(name, ignore_s, opt) \ 163 if (SystemDictionary::name() != NULL) \ 164 ciEnv::_##name = get_metadata(SystemDictionary::name())->as_instance_klass(); 165 |