mirror of
https://github.com/i-net-software/JWebAssembly.git
synced 2025-03-15 02:44:47 +01:00
Fix the signum of compare operations in the text format.
This commit is contained in:
parent
a07e7fe4b1
commit
658b859b62
@ -605,7 +605,7 @@ public class BinaryModuleWriter extends ModuleWriter implements InstructionOpcod
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case lt_s:
|
||||
case lt:
|
||||
switch( valueType ) {
|
||||
case i32:
|
||||
op = I32_LT_S;
|
||||
@ -621,7 +621,7 @@ public class BinaryModuleWriter extends ModuleWriter implements InstructionOpcod
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case le_s:
|
||||
case le:
|
||||
switch( valueType ) {
|
||||
case i32:
|
||||
op = I32_LE_S;
|
||||
@ -637,7 +637,7 @@ public class BinaryModuleWriter extends ModuleWriter implements InstructionOpcod
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case ge_s:
|
||||
case ge:
|
||||
switch( valueType ) {
|
||||
case i32:
|
||||
op = I32_GE_S;
|
||||
|
@ -646,16 +646,16 @@ class BranchManger {
|
||||
newOp = NumericOperator.eq;
|
||||
break;
|
||||
case gt:
|
||||
newOp = NumericOperator.le_s;
|
||||
newOp = NumericOperator.le;
|
||||
break;
|
||||
case lt_s:
|
||||
newOp = NumericOperator.ge_s;
|
||||
case lt:
|
||||
newOp = NumericOperator.ge;
|
||||
break;
|
||||
case le_s:
|
||||
case le:
|
||||
newOp = NumericOperator.gt;
|
||||
break;
|
||||
case ge_s:
|
||||
newOp = NumericOperator.lt_s;
|
||||
case ge:
|
||||
newOp = NumericOperator.lt;
|
||||
break;
|
||||
default:
|
||||
throw new WasmException( "Not a compare operation: " + instr.numOp, null, lineNumber );
|
||||
|
@ -581,16 +581,16 @@ public class ModuleGenerator {
|
||||
opIfCondition( NumericOperator.ne, byteCode, codePos );
|
||||
break;
|
||||
case 155: // iflt
|
||||
opIfCondition( NumericOperator.lt_s, byteCode, codePos );
|
||||
opIfCondition( NumericOperator.lt, byteCode, codePos );
|
||||
break;
|
||||
case 156: // ifge
|
||||
opIfCondition( NumericOperator.ge_s, byteCode, codePos );
|
||||
opIfCondition( NumericOperator.ge, byteCode, codePos );
|
||||
break;
|
||||
case 157: // ifgt
|
||||
opIfCondition( NumericOperator.gt, byteCode, codePos );
|
||||
break;
|
||||
case 158: // ifle
|
||||
opIfCondition( NumericOperator.le_s, byteCode, codePos );
|
||||
opIfCondition( NumericOperator.le, byteCode, codePos );
|
||||
break;
|
||||
case 159: // if_icmpeq
|
||||
opIfCompareCondition( NumericOperator.eq, byteCode, codePos );
|
||||
@ -599,16 +599,16 @@ public class ModuleGenerator {
|
||||
opIfCompareCondition( NumericOperator.ne, byteCode, codePos );
|
||||
break;
|
||||
case 161: // if_icmplt
|
||||
opIfCompareCondition( NumericOperator.lt_s, byteCode, codePos );
|
||||
opIfCompareCondition( NumericOperator.lt, byteCode, codePos );
|
||||
break;
|
||||
case 162: // if_icmpge
|
||||
opIfCompareCondition( NumericOperator.ge_s, byteCode, codePos );
|
||||
opIfCompareCondition( NumericOperator.ge, byteCode, codePos );
|
||||
break;
|
||||
case 163: // if_icmpgt
|
||||
opIfCompareCondition( NumericOperator.gt, byteCode, codePos );
|
||||
break;
|
||||
case 164: // if_icmple
|
||||
opIfCompareCondition( NumericOperator.le_s, byteCode, codePos );
|
||||
opIfCompareCondition( NumericOperator.le, byteCode, codePos );
|
||||
break;
|
||||
//TODO case 165: // if_acmpeq
|
||||
//TODO case 166: // if_acmpne
|
||||
@ -903,16 +903,16 @@ public class ModuleGenerator {
|
||||
numOp = NumericOperator.ne;
|
||||
break;
|
||||
case 155: // iflt
|
||||
numOp = NumericOperator.lt_s;
|
||||
numOp = NumericOperator.lt;
|
||||
break;
|
||||
case 156: // ifge
|
||||
numOp = NumericOperator.ge_s;
|
||||
numOp = NumericOperator.ge;
|
||||
break;
|
||||
case 157: // ifgt
|
||||
numOp = NumericOperator.gt;
|
||||
break;
|
||||
case 158: // ifle
|
||||
numOp = NumericOperator.le_s;
|
||||
numOp = NumericOperator.le;
|
||||
break;
|
||||
default:
|
||||
throw new WasmException( "Unexpected compare sub operation: " + nextOp, null, -1 );
|
||||
|
@ -34,7 +34,7 @@ public enum NumericOperator {
|
||||
eq,
|
||||
ne,
|
||||
gt,
|
||||
lt_s,
|
||||
le_s,
|
||||
ge_s,
|
||||
lt,
|
||||
le,
|
||||
ge,
|
||||
}
|
||||
|
@ -64,9 +64,9 @@ class WasmNumericInstruction extends WasmInstruction {
|
||||
case eq:
|
||||
case ne:
|
||||
case gt:
|
||||
case lt_s:
|
||||
case le_s:
|
||||
case ge_s:
|
||||
case lt:
|
||||
case le:
|
||||
case ge:
|
||||
return null;
|
||||
default:
|
||||
return valueType;
|
||||
|
@ -194,6 +194,10 @@ public class TextModuleWriter extends ModuleWriter {
|
||||
switch( numOp ) {
|
||||
case div:
|
||||
case rem:
|
||||
case gt:
|
||||
case lt:
|
||||
case le:
|
||||
case ge:
|
||||
op += "_s";
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user