Actions
Bug #6478
closedjava.lang.IllegalStateException: Multiple hits in a cache set
Start date:
12/08/2015
Due date:
% Done:
100%
Estimated time:
Detected in build:
svn
Platform:
Published in build:
2.3.14
Description
java.lang.IllegalStateException: Multiple hits in a cache set at ru.ispras.microtesk.mmu.model.api.Set.getLine(ru/ispras/microtesk/mmu/model/api/Set.java:106) at ru.ispras.microtesk.mmu.model.api.Set.isHit(ru/ispras/microtesk/mmu/model/api/Set.java:70) at ru.ispras.microtesk.mmu.model.api.Set.isHit(ru/ispras/microtesk/mmu/model/api/Set.java:32) at ru.ispras.microtesk.mmu.model.api.RegisterMapping.isHit(ru/ispras/microtesk/mmu/model/api/RegisterMapping.java:158) at ru.ispras.microtesk.mmu.model.api.Mmu.load(ru/ispras/microtesk/mmu/model/api/Mmu.java:45) at ru.ispras.microtesk.model.api.memory.PhysicalMemory$PhysicalMemoryAtom.load(ru/ispras/microtesk/model/api/memory/PhysicalMemory.java:195) at ru.ispras.microtesk.model.api.memory.Location.readData(ru/ispras/microtesk/model/api/memory/Location.java:381) at ru.ispras.microtesk.model.api.memory.Location.load(ru/ispras/microtesk/model/api/memory/Location.java:223) at ru.ispras.microtesk.model.api.instruction.InstructionCall.execute(ru/ispras/microtesk/model/api/instruction/InstructionCall.java:63) at ru.ispras.microtesk.test.template.ConcreteCall.execute(ru/ispras/microtesk/test/template/ConcreteCall.java:167) at ru.ispras.microtesk.test.Executor.executeSequence(ru/ispras/microtesk/test/Executor.java:168) at ru.ispras.microtesk.test.TestEngine$TemplateProcessor.sandboxExecution(ru/ispras/microtesk/test/TestEngine.java:548) at ru.ispras.microtesk.test.TestEngine$TemplateProcessor.processBlock(ru/ispras/microtesk/test/TestEngine.java:455) at ru.ispras.microtesk.test.TestEngine$TemplateProcessor.process(ru/ispras/microtesk/test/TestEngine.java:339) at ru.ispras.microtesk.test.template.Template.processBlock(ru/ispras/microtesk/test/template/Template.java:143) at ru.ispras.microtesk.test.template.Template.access$400(ru/ispras/microtesk/test/template/Template.java:44) at ru.ispras.microtesk.test.template.Template$BlockHolder.run(ru/ispras/microtesk/test/template/Template.java:356) at java.lang.reflect.Method.invoke(java/lang/reflect/Method.java:606) at RUBY.run(F:/TOOLS/microtesk/arch/k64/templates/load_store.rb:54) at RUBY.generate(F:/TOOLS/microtesk/lib/ruby/template.rb:805) at RUBY.main(F:/TOOLS/microtesk/lib/ruby/microtesk.rb:35) at org.jruby.RubyHash.each(org/jruby/RubyHash.java:1342) at RUBY.main(F:/TOOLS/microtesk/lib/ruby/microtesk.rb:31) at RUBY.(root)(F:/TOOLS/microtesk/lib/ruby/microtesk.rb:54) at ru.ispras.microtesk.test.TestEngine.generate(ru/ispras/microtesk/test/TestEngine.java:153) at ru.ispras.microtesk.MicroTESK.generate(ru/ispras/microtesk/MicroTESK.java:287) at ru.ispras.microtesk.MicroTESK.main(ru/ispras/microtesk/MicroTESK.java:73)
Updated by Andrei Tatarnikov almost 9 years ago
- Status changed from New to Resolved
Multiple hits. You need to make sure that buffer state is valid. Use the isHit method of a buffer (implemented by BufferObserver which is provided by MmuModel). MmuModel can be accessed using the MmuPlugin.getModel method.
public final class MmuPlugin implements Plugin {
...
public static MmuModel getModel() {
...
}
...
}
public interface MmuModel {
BufferObserver getBufferObserver(String bufferId);
MemoryDevice getMmuDevice();
String getStorageDeviceId();
void setStorageDevice(MemoryDevice device);
}
public interface BufferObserver {
/**
* Checks whether the given address causes a hit.
*
* @param address Address to be checked.
* @return {@code true} if the address causes a hit; {@code false} otherwise.
*/
boolean isHit(BitVector address);
}
Feature is made available in r5718.
Updated by Andrei Tatarnikov almost 9 years ago
- Status changed from Resolved to Closed
- % Done changed from 0 to 100
- Published in build set to 2.3.14
Actions