From f109f3cae1cd81db22ba490a4da17a7a4c495047 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 30 Aug 2018 16:10:26 -0700 Subject: Rename `wasm2asm` to `wasm2js`, emit ESM by default (#1642) * Rename the `wasm2asm` tool to `wasm2js` This commit performs a relatively simple rename of the `wasm2asm` tool to `wasm2js`. The functionality of the tool doesn't change just yet but it's intended that we'll start generating an ES module instead of just an `asm.js` function soon. * wasm2js: Support `*.wasm` input files Previously `wasm2js` only supported `*.wast` files but to make it a bit easier to use in tooling pipelines this commit adds support for reading in a `*.wasm` file directly. Determining which parser to use depends on the input filename, where the binary parser is used with `*.wasm` files and the wast parser is used for all other files. * wasm2js: Emit ESM imports/exports by default This commit alters the default behavior of `wasm2js` to emit an ESM by default, either importing items from the environment or exporting. Items like initialization of memory are also handled here. --- src/tools/wasm2asm.cpp | 101 ------------------------------------------------- 1 file changed, 101 deletions(-) delete mode 100644 src/tools/wasm2asm.cpp (limited to 'src/tools/wasm2asm.cpp') diff --git a/src/tools/wasm2asm.cpp b/src/tools/wasm2asm.cpp deleted file mode 100644 index fd65ca5e6..000000000 --- a/src/tools/wasm2asm.cpp +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2015 WebAssembly Community Group participants - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// -// wasm2asm console tool -// - -#include "support/colors.h" -#include "support/command-line.h" -#include "support/file.h" -#include "wasm-s-parser.h" -#include "wasm2asm.h" - -using namespace cashew; -using namespace wasm; - -int main(int argc, const char *argv[]) { - Wasm2AsmBuilder::Flags builderFlags; - Options options("wasm2asm", "Transform .wast files to asm.js"); - options - .add("--output", "-o", "Output file (stdout if not specified)", - Options::Arguments::One, - [](Options* o, const std::string& argument) { - o->extra["output"] = argument; - Colors::disable(); - }) - .add("--allow-asserts", "", "Allow compilation of .wast testing asserts", - Options::Arguments::Zero, - [&](Options* o, const std::string& argument) { - builderFlags.allowAsserts = true; - o->extra["asserts"] = "1"; - }) - .add("--pedantic", "", "Emulate WebAssembly trapping behavior", - Options::Arguments::Zero, - [&](Options* o, const std::string& argument) { - builderFlags.pedantic = true; - }) - .add_positional("INFILE", Options::Arguments::One, - [](Options *o, const std::string& argument) { - o->extra["infile"] = argument; - }); - options.parse(argc, argv); - if (options.debug) builderFlags.debug = true; - - auto input( - read_file>(options.extra["infile"], Flags::Text, options.debug ? Flags::Debug : Flags::Release)); - - Element* root; - Module wasm; - Ref asmjs; - - try { - if (options.debug) std::cerr << "s-parsing..." << std::endl; - SExpressionParser parser(input.data()); - root = parser.root; - - if (options.debug) std::cerr << "w-parsing..." << std::endl; - SExpressionWasmBuilder builder(wasm, *(*root)[0]); - - if (options.debug) std::cerr << "asming..." << std::endl; - Wasm2AsmBuilder wasm2asm(builderFlags); - asmjs = wasm2asm.processWasm(&wasm); - - if (options.extra["asserts"] == "1") { - if (options.debug) std::cerr << "asserting..." << std::endl; - flattenAppend(asmjs, wasm2asm.processAsserts(&wasm, *root, builder)); - } - } catch (ParseException& p) { - p.dump(std::cerr); - Fatal() << "error in parsing input"; - } catch (std::bad_alloc&) { - Fatal() << "error in building module, std::bad_alloc (possibly invalid request for silly amounts of memory)"; - } - - if (options.debug) { - std::cerr << "a-printing..." << std::endl; - asmjs->stringify(std::cout, true); - std::cout << '\n'; - } - - if (options.debug) std::cerr << "j-printing..." << std::endl; - JSPrinter jser(true, true, asmjs); - jser.printAst(); - Output output(options.extra["output"], Flags::Text, options.debug ? Flags::Debug : Flags::Release); - output << jser.buffer << std::endl; - - if (options.debug) std::cerr << "done." << std::endl; -} -- cgit v1.2.3