From d2dbd2d2ba55912cc6aaa98bf925a7acbe3f2650 Mon Sep 17 00:00:00 2001 From: adam Date: Wed, 25 Jun 2008 11:25:26 +0100 Subject: [PATCH] added BitVector.setImmutable(), use it in Instruction.Shift() --- src/edu/berkeley/fleet/api/BitVector.java | 10 +++++++++- src/edu/berkeley/fleet/api/Instruction.java | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/edu/berkeley/fleet/api/BitVector.java b/src/edu/berkeley/fleet/api/BitVector.java index e217e6c..e7b3061 100644 --- a/src/edu/berkeley/fleet/api/BitVector.java +++ b/src/edu/berkeley/fleet/api/BitVector.java @@ -9,12 +9,15 @@ public class BitVector { private final boolean[] bits; + private boolean immutable = false; + public BitVector(int length) { this.bits = new boolean[length]; } - /** copy the low-order bits of the argument into this BitVector; returns this */ + /** copy the low-order bits of the argument into this BitVector; returns this */ public BitVector set(long value) { + if (immutable) throw new RuntimeException("attempt to modify an immutable BitVector"); for(int i=0; i>> i) & 1L) != 0); return this; @@ -25,6 +28,7 @@ public class BitVector { } public void set(int bit, boolean value) { + if (immutable) throw new RuntimeException("attempt to modify an immutable BitVector"); bits[bit] = value; } @@ -40,6 +44,10 @@ public class BitVector { ret.append(get(i) ? '1' : '0'); return ret.toString(); } + + public void setImmutable() { + immutable = true; + } } diff --git a/src/edu/berkeley/fleet/api/Instruction.java b/src/edu/berkeley/fleet/api/Instruction.java index f889393..963e57b 100644 --- a/src/edu/berkeley/fleet/api/Instruction.java +++ b/src/edu/berkeley/fleet/api/Instruction.java @@ -229,6 +229,7 @@ public abstract class Instruction { public Shift(Dock dock, boolean looping, Predicate predicate, BitVector immediate) { super(dock, looping, predicate); this.immediate = immediate; + this.immediate.setImmutable(); } public String toString() { return super.toString()+"shift "+immediate; } } -- 1.7.10.4