L1 $I cache is already read-only / Harvard architecture. There's only two states here: size == unknown, and size == known. This is a simple size = 0 (default), and size=X (where X is the known size of the instruction) situation.
x86 architecture states that if you write to those instructions, you need to flush L1 cache (ex: JIT Java) before the state is updated. L1 instructions are non-cohesive, so it isn't very hard. Upon the flush, set sizes back to 0 and you're done.
L1 $I cache is already read-only / Harvard architecture. There's only two states here: size == unknown, and size == known. This is a simple size = 0 (default), and size=X (where X is the known size of the instruction) situation.
x86 architecture states that if you write to those instructions, you need to flush L1 cache (ex: JIT Java) before the state is updated. L1 instructions are non-cohesive, so it isn't very hard. Upon the flush, set sizes back to 0 and you're done.