/* Sun-$Revision: 23.3 $ */ /* Copyright 1992-9 Sun Microsystems, Inc. and Stanford University. See the LICENSE file for license information. */ # pragma interface // I implement a set for recording the branches. // Right now this is a very slow set. class LabelSet; struct BranchInfo: public ResourceObj { bool isIndexed; int32 literalIndex; oop labelOrLabels; BranchInfo(bool isI, int32 litI, oop lls) : ResourceObj() { isIndexed= isI; literalIndex = litI; labelOrLabels= lls; } bool ResolveBranch( AbstractByteCode* b, LabelSet* labelSet, objVectorOop literals); }; class BranchSet: public ResourceObj { public: // instance variables BranchInfo** branches; int32 index; int32 maxIndex; // constructor BranchSet() { maxIndex = 32; index = 0; allocateArrays(); } void RecordBranch( bool isIndexed, int32 literalIndex, oop labelOrLabels); bool ResolveBranches( AbstractByteCode* b, LabelSet* labelSet, objVectorOop literals); void grow(); void allocateArrays() { branches= NEW_RESOURCE_ARRAY(BranchInfo*, maxIndex); } // preserve operation void oops_do(oopsDoFn f); protected: };