# HG changeset patch # User kvn # Date 1319764850 25200 # Node ID f350490a45fd1e386782132305f45841fe0b7bef # Parent 34535d2cb362b2b2e57f281d00c84918b2b4a40a 7105611: Set::print() is broken Summary: Reimplemented class VSetI_ to restore Set::print(). Reviewed-by: never diff -r 34535d2cb362 -r f350490a45fd src/share/vm/libadt/vectset.cpp --- a/src/share/vm/libadt/vectset.cpp Thu Oct 27 14:40:25 2011 -0700 +++ b/src/share/vm/libadt/vectset.cpp Thu Oct 27 18:20:50 2011 -0700 @@ -350,6 +350,21 @@ return (int)_xor; } +//------------------------------iterate---------------------------------------- +// Used by Set::print(). +class VSetI_ : public SetI_ { + VectorSetI vsi; +public: + VSetI_( const VectorSet *vset, uint &elem ) : vsi(vset) { elem = vsi.elem; } + + uint next(void) { ++vsi; return vsi.elem; } + int test(void) { return vsi.test(); } +}; + +SetI_ *VectorSet::iterate(uint &elem) const { + return new(ResourceObj::C_HEAP) VSetI_(this, elem); +} + //============================================================================= //------------------------------next------------------------------------------- // Find and return the next element of a vector set, or return garbage and diff -r 34535d2cb362 -r f350490a45fd src/share/vm/libadt/vectset.hpp --- a/src/share/vm/libadt/vectset.hpp Thu Oct 27 14:40:25 2011 -0700 +++ b/src/share/vm/libadt/vectset.hpp Thu Oct 27 18:20:50 2011 -0700 @@ -151,7 +151,7 @@ private: - SetI_ *iterate(uint&) const { ShouldNotCallThis(); return NULL; } // Removed + SetI_ *iterate(uint&) const; }; //------------------------------Iteration--------------------------------------