Debugger: Do not report division by zero also for rem

This commit is contained in:
Yan Zhulanow
2018-07-18 15:16:13 +03:00
parent 1464a4ac58
commit af2f5549c5
+28 -4
View File
@@ -232,7 +232,13 @@ class SingleInstructionInterpreter(private val eval: Eval) : Interpreter<Value>(
} }
int(value1.int / divider) int(value1.int / divider)
} }
IREM -> int(value1.int % value2.int) IREM -> {
val divider = value2.int
if (divider == 0) {
divisionByZero()
}
int(value1.int % divider)
}
ISHL -> int(value1.int shl value2.int) ISHL -> int(value1.int shl value2.int)
ISHR -> int(value1.int shr value2.int) ISHR -> int(value1.int shr value2.int)
IUSHR -> int(value1.int ushr value2.int) IUSHR -> int(value1.int ushr value2.int)
@@ -250,7 +256,13 @@ class SingleInstructionInterpreter(private val eval: Eval) : Interpreter<Value>(
} }
long(value1.long / divider) long(value1.long / divider)
} }
LREM -> long(value1.long % value2.long) LREM -> {
val divider = value2.long
if (divider == 0L) {
divisionByZero()
}
long(value1.long % divider)
}
LSHL -> long(value1.long shl value2.int) LSHL -> long(value1.long shl value2.int)
LSHR -> long(value1.long shr value2.int) LSHR -> long(value1.long shr value2.int)
LUSHR -> long(value1.long ushr value2.int) LUSHR -> long(value1.long ushr value2.int)
@@ -268,7 +280,13 @@ class SingleInstructionInterpreter(private val eval: Eval) : Interpreter<Value>(
} }
float(value1.float / divider) float(value1.float / divider)
} }
FREM -> float(value1.float % value2.float) FREM -> {
val divider = value2.float
if (divider == 0f) {
divisionByZero()
}
float(value1.float % divider)
}
DADD -> double(value1.double + value2.double) DADD -> double(value1.double + value2.double)
DSUB -> double(value1.double - value2.double) DSUB -> double(value1.double - value2.double)
@@ -280,7 +298,13 @@ class SingleInstructionInterpreter(private val eval: Eval) : Interpreter<Value>(
} }
double(value1.double / divider) double(value1.double / divider)
} }
DREM -> double(value1.double % value2.double) DREM -> {
val divider = value2.double
if (divider == 0.0) {
divisionByZero()
}
double(value1.double % divider)
}
LCMP -> { LCMP -> {
val l1 = value1.long val l1 = value1.long