Index: src/asmjs/asm-wasm-builder.cc |
diff --git a/src/asmjs/asm-wasm-builder.cc b/src/asmjs/asm-wasm-builder.cc |
index 73a3d33765ce6dce44634f2b407e5ee0ef7c12f3..8a2c0bdb81af2d70603e7d00525ae9a567c94157 100644 |
--- a/src/asmjs/asm-wasm-builder.cc |
+++ b/src/asmjs/asm-wasm-builder.cc |
@@ -683,35 +683,26 @@ class AsmWasmBuilderImpl final : public AstVisitor<AsmWasmBuilderImpl> { |
if (type->IsA(AsmType::Signed())) { |
int32_t i = 0; |
- if (!value->ToInt32(&i)) { |
- UNREACHABLE(); |
- } |
- byte code[] = {WASM_I32V(i)}; |
- current_function_builder_->EmitCode(code, sizeof(code)); |
+ CHECK(value->ToInt32(&i)); |
+ current_function_builder_->EmitI32Const(i); |
} else if (type->IsA(AsmType::Unsigned()) || type->IsA(AsmType::FixNum())) { |
uint32_t u = 0; |
- if (!value->ToUint32(&u)) { |
- UNREACHABLE(); |
- } |
- int32_t i = static_cast<int32_t>(u); |
- byte code[] = {WASM_I32V(i)}; |
- current_function_builder_->EmitCode(code, sizeof(code)); |
+ CHECK(value->ToUint32(&u)); |
+ current_function_builder_->EmitI32Const(bit_cast<int32_t>(u)); |
} else if (type->IsA(AsmType::Int())) { |
// The parser can collapse !0, !1 etc to true / false. |
// Allow these as int literals. |
if (expr->raw_value()->IsTrue()) { |
- byte code[] = {WASM_I32V(1)}; |
+ byte code[] = {WASM_ONE}; |
current_function_builder_->EmitCode(code, sizeof(code)); |
} else if (expr->raw_value()->IsFalse()) { |
- byte code[] = {WASM_I32V(0)}; |
+ byte code[] = {WASM_ZERO}; |
current_function_builder_->EmitCode(code, sizeof(code)); |
} else if (expr->raw_value()->IsNumber()) { |
// This can happen when -x becomes x * -1 (due to the parser). |
int32_t i = 0; |
- if (!value->ToInt32(&i) || i != -1) { |
- UNREACHABLE(); |
- } |
- byte code[] = {WASM_I32V(i)}; |
+ CHECK(value->ToInt32(&i) && i == -1); |
+ byte code[] = {WASM_I32V_1(-1)}; |
current_function_builder_->EmitCode(code, sizeof(code)); |
} else { |
UNREACHABLE(); |