From 658b859b62d293c9f57a7f363e01cddefac46303 Mon Sep 17 00:00:00 2001 From: Volker Date: Tue, 14 Aug 2018 21:28:17 +0200 Subject: [PATCH] Fix the signum of compare operations in the text format. --- .../binary/BinaryModuleWriter.java | 6 +++--- .../jwebassembly/module/BranchManger.java | 12 ++++++------ .../jwebassembly/module/ModuleGenerator.java | 18 +++++++++--------- .../jwebassembly/module/NumericOperator.java | 6 +++--- .../module/WasmNumericInstruction.java | 6 +++--- .../jwebassembly/text/TextModuleWriter.java | 4 ++++ 6 files changed, 28 insertions(+), 24 deletions(-) diff --git a/src/de/inetsoftware/jwebassembly/binary/BinaryModuleWriter.java b/src/de/inetsoftware/jwebassembly/binary/BinaryModuleWriter.java index 169387e..57d7930 100644 --- a/src/de/inetsoftware/jwebassembly/binary/BinaryModuleWriter.java +++ b/src/de/inetsoftware/jwebassembly/binary/BinaryModuleWriter.java @@ -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; diff --git a/src/de/inetsoftware/jwebassembly/module/BranchManger.java b/src/de/inetsoftware/jwebassembly/module/BranchManger.java index 5709f6b..368f7c5 100644 --- a/src/de/inetsoftware/jwebassembly/module/BranchManger.java +++ b/src/de/inetsoftware/jwebassembly/module/BranchManger.java @@ -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 ); diff --git a/src/de/inetsoftware/jwebassembly/module/ModuleGenerator.java b/src/de/inetsoftware/jwebassembly/module/ModuleGenerator.java index 375ceda..8af819f 100644 --- a/src/de/inetsoftware/jwebassembly/module/ModuleGenerator.java +++ b/src/de/inetsoftware/jwebassembly/module/ModuleGenerator.java @@ -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 ); diff --git a/src/de/inetsoftware/jwebassembly/module/NumericOperator.java b/src/de/inetsoftware/jwebassembly/module/NumericOperator.java index ff6f7c9..51c7981 100644 --- a/src/de/inetsoftware/jwebassembly/module/NumericOperator.java +++ b/src/de/inetsoftware/jwebassembly/module/NumericOperator.java @@ -34,7 +34,7 @@ public enum NumericOperator { eq, ne, gt, - lt_s, - le_s, - ge_s, + lt, + le, + ge, } diff --git a/src/de/inetsoftware/jwebassembly/module/WasmNumericInstruction.java b/src/de/inetsoftware/jwebassembly/module/WasmNumericInstruction.java index f60ddf8..a945943 100644 --- a/src/de/inetsoftware/jwebassembly/module/WasmNumericInstruction.java +++ b/src/de/inetsoftware/jwebassembly/module/WasmNumericInstruction.java @@ -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; diff --git a/src/de/inetsoftware/jwebassembly/text/TextModuleWriter.java b/src/de/inetsoftware/jwebassembly/text/TextModuleWriter.java index a5e9974..b570cd7 100644 --- a/src/de/inetsoftware/jwebassembly/text/TextModuleWriter.java +++ b/src/de/inetsoftware/jwebassembly/text/TextModuleWriter.java @@ -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"; } }