diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/asm2wasm.h | 9 | ||||
-rw-r--r-- | src/shared-constants.h | 1 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/asm2wasm.h b/src/asm2wasm.h index 16ed0cf68..353f80413 100644 --- a/src/asm2wasm.h +++ b/src/asm2wasm.h @@ -197,6 +197,7 @@ private: IString Math_fround; IString Math_abs; IString Math_floor; + IString Math_ceil; IString Math_sqrt; // function types. we fill in this information as we see @@ -458,6 +459,10 @@ void Asm2WasmBuilder::processAsm(Ref ast) { assert(Math_floor.isNull()); Math_floor = name; return; + } else if (imported[2] == CEIL) { + assert(Math_ceil.isNull()); + Math_ceil = name; + return; } else if (imported[2] == SQRT) { assert(Math_sqrt.isNull()); Math_sqrt = name; @@ -1126,12 +1131,12 @@ Function* Asm2WasmBuilder::processFunction(Ref ast) { abort(); } } - if (name == Math_floor || name == Math_sqrt) { + if (name == Math_floor || name == Math_sqrt || name == Math_ceil) { // overloaded on type: f32 or f64 Expression* value = process(ast[2][0]); if (value->type == f32 || value->type == f64) { auto ret = allocator.alloc<Unary>(); - ret->op = name == Math_floor ? Floor : Sqrt; + ret->op = name == Math_floor ? Floor : name == Math_ceil ? Ceil : Sqrt; ret->value = value; ret->type = value->type; return ret; diff --git a/src/shared-constants.h b/src/shared-constants.h index 6662c50b2..053aecc83 100644 --- a/src/shared-constants.h +++ b/src/shared-constants.h @@ -46,6 +46,7 @@ cashew::IString GLOBAL("global"), GLOBAL_MATH("global.Math"), ABS("abs"), FLOOR("floor"), + CEIL("ceil"), SQRT("sqrt"), I32_TEMP("asm2wasm_i32_temp"), DEBUGGER("debugger"), |