comparison src/share/vm/code/dependencies.cpp @ 4737:75c0a73eee98

7102776: Pack instanceKlass boolean fields into single u1 field Summary: Reduce class runtime memory usage by packing 4 instanceKlass boolean fields into single u1 field. Save 4-byte for each loaded class. Reviewed-by: dholmes, bobv, phh, twisti, never, coleenp Contributed-by: Jiangli Zhou <jiangli.zhou@oracle.com>
author coleenp
date Thu, 17 Nov 2011 12:53:59 -0500
parents b27c72d69fd1
children da4dd142ea01
comparison
equal deleted inserted replaced
4038:869804b759e7 4737:75c0a73eee98
1622 // Mark all dependee and all its superclasses 1622 // Mark all dependee and all its superclasses
1623 // Mark transitive interfaces 1623 // Mark transitive interfaces
1624 for (ContextStream str(*this); str.next(); ) { 1624 for (ContextStream str(*this); str.next(); ) {
1625 klassOop d = str.klass(); 1625 klassOop d = str.klass();
1626 assert(!instanceKlass::cast(d)->is_marked_dependent(), "checking"); 1626 assert(!instanceKlass::cast(d)->is_marked_dependent(), "checking");
1627 instanceKlass::cast(d)->set_is_marked_dependent(true); 1627 instanceKlass::cast(d)->set_is_marked_dependent();
1628 } 1628 }
1629 } 1629 }
1630 1630
1631 KlassDepChange::~KlassDepChange() { 1631 KlassDepChange::~KlassDepChange() {
1632 // Unmark all dependee and all its superclasses 1632 // Unmark all dependee and all its superclasses
1633 // Unmark transitive interfaces 1633 // Unmark transitive interfaces
1634 for (ContextStream str(*this); str.next(); ) { 1634 for (ContextStream str(*this); str.next(); ) {
1635 klassOop d = str.klass(); 1635 klassOop d = str.klass();
1636 instanceKlass::cast(d)->set_is_marked_dependent(false); 1636 instanceKlass::cast(d)->clear_is_marked_dependent();
1637 } 1637 }
1638 } 1638 }
1639 1639
1640 bool KlassDepChange::involves_context(klassOop k) { 1640 bool KlassDepChange::involves_context(klassOop k) {
1641 if (k == NULL || !Klass::cast(k)->oop_is_instance()) { 1641 if (k == NULL || !Klass::cast(k)->oop_is_instance()) {