diff src/share/vm/libadt/vectset.cpp @ 4051:f350490a45fd

7105611: Set::print() is broken Summary: Reimplemented class VSetI_ to restore Set::print(). Reviewed-by: never
author kvn
date Thu, 27 Oct 2011 18:20:50 -0700
parents 3763ca6579b7
children d2a62e0f25eb
line wrap: on
line diff
--- 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