001/* 002 * This file is part of the Jikes RVM project (http://jikesrvm.org). 003 * 004 * This file is licensed to You under the Eclipse Public License (EPL); 005 * You may not use this file except in compliance with the License. You 006 * may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/eclipse-1.0.php 009 * 010 * See the COPYRIGHT.txt file distributed with this work for information 011 * regarding copyright ownership. 012 */ 013package org.jikesrvm.compilers.opt.liveness; 014 015import java.util.Enumeration; 016 017import org.jikesrvm.compilers.opt.regalloc.LiveIntervalElement; 018 019/** 020 * Enumerator for a list of live intervals stored on a basic block. 021 * <p> 022 * Note: This is fragile. Use with care iff you know what you're doing. 023 * TODO: redesign the way live info is stored on the IR to be a bit more 024 * robust. 025 */ 026public class LiveIntervalEnumeration implements Enumeration<LiveIntervalElement> { 027 private LiveIntervalElement currentElement; 028 029 /** 030 * @param first The first live interval in a list to be enumerated 031 */ 032 public LiveIntervalEnumeration(LiveIntervalElement first) { 033 this.currentElement = first; 034 } 035 036 @Override 037 public boolean hasMoreElements() { 038 return currentElement != null; 039 } 040 041 @Override 042 public LiveIntervalElement nextElement() { 043 LiveIntervalElement result = currentElement; 044 currentElement = currentElement.getNext(); 045 return result; 046 } 047}