comparison src/share/vm/memory/universe.cpp @ 481:7d7a7c599c17

6578152: fill_region_with_object has usability and safety issues Reviewed-by: apetrusenko, ysr
author jcoomes
date Thu, 11 Dec 2008 12:05:08 -0800
parents c96030fff130
children d593294016c3
comparison
equal deleted inserted replaced
480:d249b360e026 481:7d7a7c599c17
47 klassOop Universe::_instanceKlassKlassObj = NULL; 47 klassOop Universe::_instanceKlassKlassObj = NULL;
48 klassOop Universe::_constantPoolKlassObj = NULL; 48 klassOop Universe::_constantPoolKlassObj = NULL;
49 klassOop Universe::_constantPoolCacheKlassObj = NULL; 49 klassOop Universe::_constantPoolCacheKlassObj = NULL;
50 klassOop Universe::_compiledICHolderKlassObj = NULL; 50 klassOop Universe::_compiledICHolderKlassObj = NULL;
51 klassOop Universe::_systemObjArrayKlassObj = NULL; 51 klassOop Universe::_systemObjArrayKlassObj = NULL;
52 oop Universe::_int_mirror = NULL; 52 klassOop Universe::_fillerArrayKlassObj = NULL;
53 oop Universe::_float_mirror = NULL; 53 oop Universe::_int_mirror = NULL;
54 oop Universe::_double_mirror = NULL; 54 oop Universe::_float_mirror = NULL;
55 oop Universe::_byte_mirror = NULL; 55 oop Universe::_double_mirror = NULL;
56 oop Universe::_bool_mirror = NULL; 56 oop Universe::_byte_mirror = NULL;
57 oop Universe::_char_mirror = NULL; 57 oop Universe::_bool_mirror = NULL;
58 oop Universe::_long_mirror = NULL; 58 oop Universe::_char_mirror = NULL;
59 oop Universe::_short_mirror = NULL; 59 oop Universe::_long_mirror = NULL;
60 oop Universe::_void_mirror = NULL; 60 oop Universe::_short_mirror = NULL;
61 oop Universe::_mirrors[T_VOID+1] = { NULL /*, NULL...*/ }; 61 oop Universe::_void_mirror = NULL;
62 oop Universe::_mirrors[T_VOID+1] = { NULL /*, NULL...*/ };
62 oop Universe::_main_thread_group = NULL; 63 oop Universe::_main_thread_group = NULL;
63 oop Universe::_system_thread_group = NULL; 64 oop Universe::_system_thread_group = NULL;
64 typeArrayOop Universe::_the_empty_byte_array = NULL; 65 typeArrayOop Universe::_the_empty_byte_array = NULL;
65 typeArrayOop Universe::_the_empty_short_array = NULL; 66 typeArrayOop Universe::_the_empty_short_array = NULL;
66 typeArrayOop Universe::_the_empty_int_array = NULL; 67 typeArrayOop Universe::_the_empty_int_array = NULL;
124 f(objArrayKlassKlassObj()); 125 f(objArrayKlassKlassObj());
125 f(typeArrayKlassKlassObj()); 126 f(typeArrayKlassKlassObj());
126 f(instanceKlassKlassObj()); 127 f(instanceKlassKlassObj());
127 f(constantPoolKlassObj()); 128 f(constantPoolKlassObj());
128 f(systemObjArrayKlassObj()); 129 f(systemObjArrayKlassObj());
130 f(fillerArrayKlassObj());
129 } 131 }
130 132
131 void Universe::oops_do(OopClosure* f, bool do_all) { 133 void Universe::oops_do(OopClosure* f, bool do_all) {
132 134
133 f->do_oop((oop*) &_int_mirror); 135 f->do_oop((oop*) &_int_mirror);
178 f->do_oop((oop*)&_instanceKlassKlassObj); 180 f->do_oop((oop*)&_instanceKlassKlassObj);
179 f->do_oop((oop*)&_constantPoolKlassObj); 181 f->do_oop((oop*)&_constantPoolKlassObj);
180 f->do_oop((oop*)&_constantPoolCacheKlassObj); 182 f->do_oop((oop*)&_constantPoolCacheKlassObj);
181 f->do_oop((oop*)&_compiledICHolderKlassObj); 183 f->do_oop((oop*)&_compiledICHolderKlassObj);
182 f->do_oop((oop*)&_systemObjArrayKlassObj); 184 f->do_oop((oop*)&_systemObjArrayKlassObj);
185 f->do_oop((oop*)&_fillerArrayKlassObj);
183 f->do_oop((oop*)&_the_empty_byte_array); 186 f->do_oop((oop*)&_the_empty_byte_array);
184 f->do_oop((oop*)&_the_empty_short_array); 187 f->do_oop((oop*)&_the_empty_short_array);
185 f->do_oop((oop*)&_the_empty_int_array); 188 f->do_oop((oop*)&_the_empty_int_array);
186 f->do_oop((oop*)&_the_empty_system_obj_array); 189 f->do_oop((oop*)&_the_empty_system_obj_array);
187 f->do_oop((oop*)&_the_empty_class_klass_array); 190 f->do_oop((oop*)&_the_empty_class_klass_array);
255 _typeArrayKlassObjs[T_BYTE] = _byteArrayKlassObj; 258 _typeArrayKlassObjs[T_BYTE] = _byteArrayKlassObj;
256 _typeArrayKlassObjs[T_SHORT] = _shortArrayKlassObj; 259 _typeArrayKlassObjs[T_SHORT] = _shortArrayKlassObj;
257 _typeArrayKlassObjs[T_INT] = _intArrayKlassObj; 260 _typeArrayKlassObjs[T_INT] = _intArrayKlassObj;
258 _typeArrayKlassObjs[T_LONG] = _longArrayKlassObj; 261 _typeArrayKlassObjs[T_LONG] = _longArrayKlassObj;
259 262
260 _methodKlassObj = methodKlass::create_klass(CHECK); 263 _methodKlassObj = methodKlass::create_klass(CHECK);
261 _constMethodKlassObj = constMethodKlass::create_klass(CHECK); 264 _constMethodKlassObj = constMethodKlass::create_klass(CHECK);
262 _methodDataKlassObj = methodDataKlass::create_klass(CHECK); 265 _methodDataKlassObj = methodDataKlass::create_klass(CHECK);
263 _constantPoolKlassObj = constantPoolKlass::create_klass(CHECK); 266 _constantPoolKlassObj = constantPoolKlass::create_klass(CHECK);
264 _constantPoolCacheKlassObj = constantPoolCacheKlass::create_klass(CHECK); 267 _constantPoolCacheKlassObj = constantPoolCacheKlass::create_klass(CHECK);
265 268
266 _compiledICHolderKlassObj = compiledICHolderKlass::create_klass(CHECK); 269 _compiledICHolderKlassObj = compiledICHolderKlass::create_klass(CHECK);
267 _systemObjArrayKlassObj = objArrayKlassKlass::cast(objArrayKlassKlassObj())->allocate_system_objArray_klass(CHECK); 270 _systemObjArrayKlassObj = objArrayKlassKlass::cast(objArrayKlassKlassObj())->allocate_system_objArray_klass(CHECK);
268 271 _fillerArrayKlassObj = typeArrayKlass::create_klass(T_INT, sizeof(jint), "<filler>", CHECK);
269 _the_empty_byte_array = oopFactory::new_permanent_byteArray(0, CHECK); 272
273 _the_empty_byte_array = oopFactory::new_permanent_byteArray(0, CHECK);
270 _the_empty_short_array = oopFactory::new_permanent_shortArray(0, CHECK); 274 _the_empty_short_array = oopFactory::new_permanent_shortArray(0, CHECK);
271 _the_empty_int_array = oopFactory::new_permanent_intArray(0, CHECK); 275 _the_empty_int_array = oopFactory::new_permanent_intArray(0, CHECK);
272 _the_empty_system_obj_array = oopFactory::new_system_objArray(0, CHECK); 276 _the_empty_system_obj_array = oopFactory::new_system_objArray(0, CHECK);
273 277
274 _the_array_interfaces_array = oopFactory::new_system_objArray(2, CHECK); 278 _the_array_interfaces_array = oopFactory::new_system_objArray(2, CHECK);
275 _vm_exception = oopFactory::new_symbol("vm exception holder", CHECK); 279 _vm_exception = oopFactory::new_symbol("vm exception holder", CHECK);
276 } else { 280 } else {
277
278 FileMapInfo *mapinfo = FileMapInfo::current_info(); 281 FileMapInfo *mapinfo = FileMapInfo::current_info();
279 char* buffer = mapinfo->region_base(CompactingPermGenGen::md); 282 char* buffer = mapinfo->region_base(CompactingPermGenGen::md);
280 void** vtbl_list = (void**)buffer; 283 void** vtbl_list = (void**)buffer;
281 init_self_patching_vtbl_list(vtbl_list, 284 init_self_patching_vtbl_list(vtbl_list,
282 CompactingPermGenGen::vtbl_list_size); 285 CompactingPermGenGen::vtbl_list_size);