summaryrefslogtreecommitdiff
path: root/docs/demo/wasm2wat
diff options
context:
space:
mode:
Diffstat (limited to 'docs/demo/wasm2wat')
-rw-r--r--docs/demo/wasm2wat/demo.js59
-rw-r--r--docs/demo/wasm2wat/index.html15
2 files changed, 59 insertions, 15 deletions
diff --git a/docs/demo/wasm2wat/demo.js b/docs/demo/wasm2wat/demo.js
index fe14406b..afe2aa62 100644
--- a/docs/demo/wasm2wat/demo.js
+++ b/docs/demo/wasm2wat/demo.js
@@ -14,6 +14,24 @@
* limitations under the License.
*/
+var features = {};
+
+WabtModule().then(function(wabt) {
+
+// TODO: Share feature selection and other code with wat2wasm/demo.js
+var FEATURES = [
+ 'exceptions',
+ 'mutable_globals',
+ 'sat_float_to_int',
+ 'sign_extension',
+ 'simd',
+ 'threads',
+ 'multi_value',
+ 'tail_call',
+ 'bulk_memory',
+ 'reference_types',
+];
+
var editorEl = document.querySelector('.editor');
var uploadEl = document.getElementById('upload');
var selectEl = document.getElementById('select');
@@ -28,6 +46,16 @@ var editor = CodeMirror.fromTextArea(editorEl, options);
var fileBuffer = null;
+for (var feature of FEATURES) {
+ var featureEl = document.getElementById(feature);
+ features[feature] = featureEl.checked;
+ featureEl.addEventListener('change', event => {
+ var feature = event.target.id;
+ features[feature] = event.target.checked;
+ compile(fileBuffer);
+ });
+}
+
function compile(contents) {
if (!contents) {
return;
@@ -38,22 +66,21 @@ function compile(contents) {
var foldExprs = foldExprsEl.checked;
var inlineExport = inlineExportEl.checked;
- WabtModule().then(function(wabt) {
- try {
- var module = wabt.readWasm(contents, {readDebugNames: readDebugNames});
- if (generateNames) {
- module.generateNames();
- module.applyNames();
- }
- var result =
- module.toText({foldExprs: foldExprs, inlineExport: inlineExport});
- editor.setValue(result);
- } catch (e) {
- editor.setValue(e.toString());
- } finally {
- if (module) module.destroy();
+ try {
+ var module =
+ wabt.readWasm(contents, {readDebugNames: readDebugNames, ...features});
+ if (generateNames) {
+ module.generateNames();
+ module.applyNames();
}
- });
+ var result =
+ module.toText({foldExprs: foldExprs, inlineExport: inlineExport});
+ editor.setValue(result);
+ } catch (e) {
+ editor.setValue(e.toString());
+ } finally {
+ if (module) module.destroy();
+ }
}
function onUploadClicked(e) {
@@ -107,3 +134,5 @@ for (var i = 0; i < examples.length; ++i) {
}
selectEl.selectedIndex = 0;
setExample(selectEl.selectedIndex);
+
+});
diff --git a/docs/demo/wasm2wat/index.html b/docs/demo/wasm2wat/index.html
index 11b06372..88d56648 100644
--- a/docs/demo/wasm2wat/index.html
+++ b/docs/demo/wasm2wat/index.html
@@ -39,6 +39,21 @@
<p>
</p>
</div>
+ <div>Enabled features:</div>
+ <div>
+ <input type="checkbox" id="exceptions"><label for="exceptions">exceptions</label>
+ <input type="checkbox" id="mutable_globals" checked><label for="mutable_globals">mutable globals</label>
+ <input type="checkbox" id="sat_float_to_int"><label for="sat_float_to_int">saturating float to int</label>
+ <input type="checkbox" id="sign_extension"><label for="sign_extension">sign extension</label>
+ </div>
+ <div>
+ <input type="checkbox" id="simd"><label for="simd">simd</label>
+ <input type="checkbox" id="threads"><label for="threads">threads</label>
+ <input type="checkbox" id="multi_value"><label for="multi_value">multi value</label>
+ <input type="checkbox" id="tail_call"><label for="tail_call">tail call</label>
+ <input type="checkbox" id="bulk_memory"><label for="bulk_memory">bulk memory</label>
+ <input type="checkbox" id="reference_types"><label for="reference_types">reference types</label>
+ </div>
</header>
<main>
<div class="toolbar">