summaryrefslogtreecommitdiff
path: root/src/wasm-binary.h
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-02-03 11:17:30 -0800
committerAlon Zakai <alonzakai@gmail.com>2016-02-03 11:17:30 -0800
commit1ceff1c7ede8014782cae7170e75ce6cd3a52a16 (patch)
tree6478c33dc3adec74b462b7bbac15cf5e069376b9 /src/wasm-binary.h
parentff497f7a261331b3aa6a1e7a1f8a5e476f856d3c (diff)
parentb1ba1b81ae7a382018f5b5769e25d9431fd462b9 (diff)
downloadbinaryen-1ceff1c7ede8014782cae7170e75ce6cd3a52a16.tar.gz
binaryen-1ceff1c7ede8014782cae7170e75ce6cd3a52a16.tar.bz2
binaryen-1ceff1c7ede8014782cae7170e75ce6cd3a52a16.zip
Merge pull request #152 from WebAssembly/float-refactor
Float refactoring and nan comparison change
Diffstat (limited to 'src/wasm-binary.h')
-rw-r--r--src/wasm-binary.h30
1 files changed, 19 insertions, 11 deletions
diff --git a/src/wasm-binary.h b/src/wasm-binary.h
index 1cc6f0673..de4747d84 100644
--- a/src/wasm-binary.h
+++ b/src/wasm-binary.h
@@ -647,7 +647,14 @@ public:
return breakStack.size() - 1 - i;
}
}
+printf("bad!\n");
std::cerr << "bad break: " << name << std::endl;
+
+
+
+assert(0);
+
+
abort();
}
@@ -782,10 +789,10 @@ public:
recurse(curr->value);
}
void visitConst(Const *curr) {
- if (debug) std::cerr << "zz node: Const" << std::endl;
+ if (debug) std::cerr << "zz node: Const" << curr << " : " << curr->type << std::endl;
switch (curr->type) {
case i32: {
- uint32_t value = curr->value.i32;
+ uint32_t value = curr->value.geti32();
if (value <= 255) {
o << int8_t(BinaryConsts::I8Const) << uint8_t(value);
break;
@@ -794,19 +801,20 @@ public:
break;
}
case i64: {
- o << int8_t(BinaryConsts::I64Const) << curr->value.i64;
+ o << int8_t(BinaryConsts::I64Const) << curr->value.geti64();
break;
}
case f32: {
- o << int8_t(BinaryConsts::F32Const) << curr->value.f32;
+ o << int8_t(BinaryConsts::F32Const) << curr->value.getf32();
break;
}
case f64: {
- o << int8_t(BinaryConsts::F64Const) << curr->value.f64;
+ o << int8_t(BinaryConsts::F64Const) << curr->value.getf64();
break;
}
default: abort();
}
+ if (debug) std::cerr << "zz const node done.\n";
}
void visitUnary(Unary *curr) {
if (debug) std::cerr << "zz node: Unary" << std::endl;
@@ -1480,14 +1488,14 @@ public:
}
bool maybeVisitImpl(Const *curr, uint8_t code) {
switch (code) {
- case BinaryConsts::I8Const: curr->value.i32 = getInt8(); curr->type = i32; break;
- case BinaryConsts::I32Const: curr->value.i32 = getInt32(); curr->type = i32; break;
- case BinaryConsts::I64Const: curr->value.i64 = getInt64(); curr->type = i64; break;
- case BinaryConsts::F32Const: curr->value.f32 = getFloat32(); curr->type = f32; break;
- case BinaryConsts::F64Const: curr->value.f64 = getFloat64(); curr->type = f64; break;
+ case BinaryConsts::I8Const: curr->value = Literal(int32_t(getInt8())); break;
+ case BinaryConsts::I32Const: curr->value = Literal(getInt32()); break;
+ case BinaryConsts::I64Const: curr->value = Literal(getInt64()); break;
+ case BinaryConsts::F32Const: curr->value = Literal(getFloat32()); break;
+ case BinaryConsts::F64Const: curr->value = Literal(getFloat64()); break;
default: return false;
}
- curr->value.type = curr->type;
+ curr->type = curr->value.type;
if (debug) std::cerr << "zz node: Const" << std::endl;
return true;
}