Project

General

Profile

Actions

Bug #10004

closed

java.lang.IllegalStateException: Boolean data is not convertible to BitVector (Не ясно где тут BitVector)

Added by Alexander Protsenko over 4 years ago. Updated over 4 years ago.

Status:
Closed
Priority:
Normal
Category:
nML Translator
Target version:
Start date:
12/23/2019
Due date:
% Done:

0%

Estimated time:
Detected in build:
svn
Platform:
Published in build:
2.5.0-beta-191226

Description

Код с ошибкой:

--> if coerce(card(3), ArchitectureRevision) >= coerce(card(3), 0x2) && C0_SRSCTL_HSS > coerce(card(4), 0x0) && C0_STATUS_BEV == coerce(BIT, 0x0) then

  C0_SRSCTL_CSS = C0_SRSCTL_PSS;
endif;

...
TRANSLATE: nML -> MIR: ei.decode
TRANSLATE: nML -> MIR: ei2.action
TRANSLATE: nML -> MIR: ei2.init
TRANSLATE: nML -> MIR: ei2.decode
TRANSLATE: nML -> MIR: eret.action
********************************************************************************
ATTENTION! An unexpected error has occurred:
java.lang.IllegalStateException: Boolean data is not convertible to BitVector.

The program will be terminated. Please contact us at: 
microtesk-support@ispras.ru
We are sorry for the inconvenience.

Exception stack:

java.lang.IllegalStateException: Boolean data is not convertible to BitVector.
    at ru.ispras.fortress.data.Data.checkConvertibleTo(Data.java:528)
    at ru.ispras.fortress.data.Data.getBitVector(Data.java:417)
    at ru.ispras.fortress.expression.NodeValue.getBitVector(NodeValue.java:324)
    at ru.ispras.microtesk.translator.mir.NmlIrTrans.newConstant(NmlIrTrans.java:324)
    at ru.ispras.microtesk.translator.mir.NmlIrTrans.access$300(NmlIrTrans.java:43)
    at ru.ispras.microtesk.translator.mir.NmlIrTrans$TransRvalue.lookUp(NmlIrTrans.java:499)
    at ru.ispras.microtesk.translator.mir.NmlIrTrans$TransRvalue.translateMapping(NmlIrTrans.java:420)
    at ru.ispras.microtesk.translator.mir.NmlIrTrans$TransRvalue.onOperationEnd(NmlIrTrans.java:357)
    at ru.ispras.fortress.expression.ExprTreeWalker.visitOperation(ExprTreeWalker.java:173)
    at ru.ispras.fortress.expression.ExprTreeWalker.visitNode(ExprTreeWalker.java:123)
    at ru.ispras.fortress.expression.ExprTreeWalker.visitOperation(ExprTreeWalker.java:160)
    at ru.ispras.fortress.expression.ExprTreeWalker.visitNode(ExprTreeWalker.java:123)
    at ru.ispras.fortress.expression.ExprTreeWalker.visit(ExprTreeWalker.java:93)
    at ru.ispras.microtesk.translator.mir.NmlIrTrans.translate(NmlIrTrans.java:307)
    at ru.ispras.microtesk.translator.mir.NmlIrTrans.translate(NmlIrTrans.java:793)
    at ru.ispras.microtesk.translator.mir.NmlIrTrans.translate(NmlIrTrans.java:178)
    at ru.ispras.microtesk.translator.mir.NmlIrTrans.translate(NmlIrTrans.java:800)
    at ru.ispras.microtesk.translator.mir.NmlIrTrans.translate(NmlIrTrans.java:178)
    at ru.ispras.microtesk.translator.mir.NmlIrTrans.translate(NmlIrTrans.java:95)
    at ru.ispras.microtesk.translator.mir.NmlIrTrans.translate(NmlIrTrans.java:52)
    at ru.ispras.microtesk.translator.mir.MirTransHandler.processIr(MirTransHandler.java:49)
    at ru.ispras.microtesk.translator.mir.MirTransHandler.processIr(MirTransHandler.java:30)
    at ru.ispras.microtesk.translator.Translator.processIr(Translator.java:84)
    at ru.ispras.microtesk.translator.nml.NmlTranslator.start(NmlTranslator.java:133)
    at ru.ispras.microtesk.translator.Translator.translate(Translator.java:201)
    at ru.ispras.microtesk.MicroTESK.translate(MicroTESK.java:168)
    at ru.ispras.microtesk.MicroTESK.runTask(MicroTESK.java:141)
    at ru.ispras.microtesk.MicroTESK.main(MicroTESK.java:79)

********************************************************************************
:translateMips64 FAILED

Заменен на вариант:

      if coerce(card(3), ArchitectureRevision) >= coerce(card(3), 0x2) then
        if C0_SRSCTL_HSS > coerce(card(4), 0x0) then
          if C0_STATUS_BEV == coerce(BIT, 0x0) then
            C0_SRSCTL_CSS = C0_SRSCTL_PSS;
          endif;
        endif;
      endif;

Так же исправлено в операции MIPS: rotr, rotrv

Actions

Also available in: Atom PDF