@@ -206,30 +206,30 @@ class X86Visitor : public WASMDecoder<X86Visitor>,
206
206
}
207
207
208
208
void handle_I32Compare (const std::string &compare_op) {
209
- unique_id. push_back ( std::to_string (offset) );
209
+ std::string label = std:: to_string (offset);
210
210
m_a.asm_pop_r32 (X86Reg::ebx);
211
211
m_a.asm_pop_r32 (X86Reg::eax);
212
212
m_a.asm_cmp_r32_r32 (X86Reg::eax, X86Reg::ebx);
213
213
if (compare_op == " Eq" ) {
214
- m_a.asm_je_label (" .compare_1" + unique_id. back () );
214
+ m_a.asm_je_label (" .compare_1" + label );
215
215
} else if (compare_op == " Gt" ) {
216
- m_a.asm_jg_label (" .compare_1" + unique_id. back () );
216
+ m_a.asm_jg_label (" .compare_1" + label );
217
217
} else if (compare_op == " GtE" ) {
218
- m_a.asm_jge_label (" .compare_1" + unique_id. back () );
218
+ m_a.asm_jge_label (" .compare_1" + label );
219
219
} else if (compare_op == " Lt" ) {
220
- m_a.asm_jl_label (" .compare_1" + unique_id. back () );
220
+ m_a.asm_jl_label (" .compare_1" + label );
221
221
} else if (compare_op == " LtE" ) {
222
- m_a.asm_jle_label (" .compare_1" + unique_id. back () );
222
+ m_a.asm_jle_label (" .compare_1" + label );
223
223
} else if (compare_op == " NotEq" ) {
224
- m_a.asm_jne_label (" .compare_1" + unique_id. back () );
224
+ m_a.asm_jne_label (" .compare_1" + label );
225
225
} else {
226
226
throw CodeGenError (" Comparison operator not implemented" );
227
227
}
228
228
m_a.asm_mov_r32_imm32 (X86Reg::eax, 0 );
229
- m_a.asm_jmp_label (" .compare.end_" + unique_id. back () );
230
- m_a.add_label (" .compare_1" + unique_id. back () );
229
+ m_a.asm_jmp_label (" .compare.end_" + label );
230
+ m_a.add_label (" .compare_1" + label );
231
231
m_a.asm_mov_r32_imm32 (X86Reg::eax, 1 );
232
- m_a.add_label (" .compare.end_" + unique_id. back () );
232
+ m_a.add_label (" .compare.end_" + label );
233
233
m_a.asm_push_r32 (X86Reg::eax);
234
234
}
235
235
0 commit comments