Mercurial > hg > graal-compiler
comparison src/share/vm/oops/instanceKlass.cpp @ 974:26b774d693aa
Merge
author | acorn |
---|---|
date | Wed, 16 Sep 2009 09:10:57 -0400 |
parents | ad6585fd4087 682194ca1d8d |
children | 74a5db69c1fe 54b3b351d6f9 |
comparison
equal
deleted
inserted
replaced
973:ad6585fd4087 | 974:26b774d693aa |
---|---|
1395 #define InstanceKlass_OOP_MAP_ITERATE(obj, do_oop, assert_fn) \ | 1395 #define InstanceKlass_OOP_MAP_ITERATE(obj, do_oop, assert_fn) \ |
1396 { \ | 1396 { \ |
1397 /* Compute oopmap block range. The common case \ | 1397 /* Compute oopmap block range. The common case \ |
1398 is nonstatic_oop_map_size == 1. */ \ | 1398 is nonstatic_oop_map_size == 1. */ \ |
1399 OopMapBlock* map = start_of_nonstatic_oop_maps(); \ | 1399 OopMapBlock* map = start_of_nonstatic_oop_maps(); \ |
1400 OopMapBlock* const end_map = map + nonstatic_oop_map_size(); \ | 1400 OopMapBlock* const end_map = map + nonstatic_oop_map_count(); \ |
1401 if (UseCompressedOops) { \ | 1401 if (UseCompressedOops) { \ |
1402 while (map < end_map) { \ | 1402 while (map < end_map) { \ |
1403 InstanceKlass_SPECIALIZED_OOP_ITERATE(narrowOop, \ | 1403 InstanceKlass_SPECIALIZED_OOP_ITERATE(narrowOop, \ |
1404 obj->obj_field_addr<narrowOop>(map->offset()), map->length(), \ | 1404 obj->obj_field_addr<narrowOop>(map->offset()), map->count(), \ |
1405 do_oop, assert_fn) \ | 1405 do_oop, assert_fn) \ |
1406 ++map; \ | 1406 ++map; \ |
1407 } \ | 1407 } \ |
1408 } else { \ | 1408 } else { \ |
1409 while (map < end_map) { \ | 1409 while (map < end_map) { \ |
1410 InstanceKlass_SPECIALIZED_OOP_ITERATE(oop, \ | 1410 InstanceKlass_SPECIALIZED_OOP_ITERATE(oop, \ |
1411 obj->obj_field_addr<oop>(map->offset()), map->length(), \ | 1411 obj->obj_field_addr<oop>(map->offset()), map->count(), \ |
1412 do_oop, assert_fn) \ | 1412 do_oop, assert_fn) \ |
1413 ++map; \ | 1413 ++map; \ |
1414 } \ | 1414 } \ |
1415 } \ | 1415 } \ |
1416 } | 1416 } |
1417 | 1417 |
1418 #define InstanceKlass_OOP_MAP_REVERSE_ITERATE(obj, do_oop, assert_fn) \ | 1418 #define InstanceKlass_OOP_MAP_REVERSE_ITERATE(obj, do_oop, assert_fn) \ |
1419 { \ | 1419 { \ |
1420 OopMapBlock* const start_map = start_of_nonstatic_oop_maps(); \ | 1420 OopMapBlock* const start_map = start_of_nonstatic_oop_maps(); \ |
1421 OopMapBlock* map = start_map + nonstatic_oop_map_size(); \ | 1421 OopMapBlock* map = start_map + nonstatic_oop_map_count(); \ |
1422 if (UseCompressedOops) { \ | 1422 if (UseCompressedOops) { \ |
1423 while (start_map < map) { \ | 1423 while (start_map < map) { \ |
1424 --map; \ | 1424 --map; \ |
1425 InstanceKlass_SPECIALIZED_OOP_REVERSE_ITERATE(narrowOop, \ | 1425 InstanceKlass_SPECIALIZED_OOP_REVERSE_ITERATE(narrowOop, \ |
1426 obj->obj_field_addr<narrowOop>(map->offset()), map->length(), \ | 1426 obj->obj_field_addr<narrowOop>(map->offset()), map->count(), \ |
1427 do_oop, assert_fn) \ | 1427 do_oop, assert_fn) \ |
1428 } \ | 1428 } \ |
1429 } else { \ | 1429 } else { \ |
1430 while (start_map < map) { \ | 1430 while (start_map < map) { \ |
1431 --map; \ | 1431 --map; \ |
1432 InstanceKlass_SPECIALIZED_OOP_REVERSE_ITERATE(oop, \ | 1432 InstanceKlass_SPECIALIZED_OOP_REVERSE_ITERATE(oop, \ |
1433 obj->obj_field_addr<oop>(map->offset()), map->length(), \ | 1433 obj->obj_field_addr<oop>(map->offset()), map->count(), \ |
1434 do_oop, assert_fn) \ | 1434 do_oop, assert_fn) \ |
1435 } \ | 1435 } \ |
1436 } \ | 1436 } \ |
1437 } | 1437 } |
1438 | 1438 |
1442 /* Compute oopmap block range. The common case is \ | 1442 /* Compute oopmap block range. The common case is \ |
1443 nonstatic_oop_map_size == 1, so we accept the \ | 1443 nonstatic_oop_map_size == 1, so we accept the \ |
1444 usually non-existent extra overhead of examining \ | 1444 usually non-existent extra overhead of examining \ |
1445 all the maps. */ \ | 1445 all the maps. */ \ |
1446 OopMapBlock* map = start_of_nonstatic_oop_maps(); \ | 1446 OopMapBlock* map = start_of_nonstatic_oop_maps(); \ |
1447 OopMapBlock* const end_map = map + nonstatic_oop_map_size(); \ | 1447 OopMapBlock* const end_map = map + nonstatic_oop_map_count(); \ |
1448 if (UseCompressedOops) { \ | 1448 if (UseCompressedOops) { \ |
1449 while (map < end_map) { \ | 1449 while (map < end_map) { \ |
1450 InstanceKlass_SPECIALIZED_BOUNDED_OOP_ITERATE(narrowOop, \ | 1450 InstanceKlass_SPECIALIZED_BOUNDED_OOP_ITERATE(narrowOop, \ |
1451 obj->obj_field_addr<narrowOop>(map->offset()), map->length(), \ | 1451 obj->obj_field_addr<narrowOop>(map->offset()), map->count(), \ |
1452 low, high, \ | 1452 low, high, \ |
1453 do_oop, assert_fn) \ | 1453 do_oop, assert_fn) \ |
1454 ++map; \ | 1454 ++map; \ |
1455 } \ | 1455 } \ |
1456 } else { \ | 1456 } else { \ |
1457 while (map < end_map) { \ | 1457 while (map < end_map) { \ |
1458 InstanceKlass_SPECIALIZED_BOUNDED_OOP_ITERATE(oop, \ | 1458 InstanceKlass_SPECIALIZED_BOUNDED_OOP_ITERATE(oop, \ |
1459 obj->obj_field_addr<oop>(map->offset()), map->length(), \ | 1459 obj->obj_field_addr<oop>(map->offset()), map->count(), \ |
1460 low, high, \ | 1460 low, high, \ |
1461 do_oop, assert_fn) \ | 1461 do_oop, assert_fn) \ |
1462 ++map; \ | 1462 ++map; \ |
1463 } \ | 1463 } \ |
1464 } \ | 1464 } \ |
2215 static bool first_time = true; | 2215 static bool first_time = true; |
2216 guarantee(k == SystemDictionary::class_klass() && first_time, "Invalid verify of maps"); | 2216 guarantee(k == SystemDictionary::class_klass() && first_time, "Invalid verify of maps"); |
2217 first_time = false; | 2217 first_time = false; |
2218 const int extra = java_lang_Class::number_of_fake_oop_fields; | 2218 const int extra = java_lang_Class::number_of_fake_oop_fields; |
2219 guarantee(ik->nonstatic_field_size() == extra, "just checking"); | 2219 guarantee(ik->nonstatic_field_size() == extra, "just checking"); |
2220 guarantee(ik->nonstatic_oop_map_size() == 1, "just checking"); | 2220 guarantee(ik->nonstatic_oop_map_count() == 1, "just checking"); |
2221 guarantee(ik->size_helper() == align_object_size(instanceOopDesc::header_size() + extra), "just checking"); | 2221 guarantee(ik->size_helper() == align_object_size(instanceOopDesc::header_size() + extra), "just checking"); |
2222 | 2222 |
2223 // Check that the map is (2,extra) | 2223 // Check that the map is (2,extra) |
2224 int offset = java_lang_Class::klass_offset; | 2224 int offset = java_lang_Class::klass_offset; |
2225 | 2225 |
2226 OopMapBlock* map = ik->start_of_nonstatic_oop_maps(); | 2226 OopMapBlock* map = ik->start_of_nonstatic_oop_maps(); |
2227 guarantee(map->offset() == offset && map->length() == extra, "just checking"); | 2227 guarantee(map->offset() == offset && map->count() == (unsigned int) extra, |
2228 "sanity"); | |
2228 } | 2229 } |
2229 } | 2230 } |
2230 | 2231 |
2231 #endif // ndef PRODUCT | 2232 #endif // ndef PRODUCT |
2232 | 2233 |