summaryrefslogtreecommitdiffstats
path: root/node_modules/@webassemblyjs/ast/lib/node-helpers.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/@webassemblyjs/ast/lib/node-helpers.js')
-rw-r--r--node_modules/@webassemblyjs/ast/lib/node-helpers.js107
1 files changed, 107 insertions, 0 deletions
diff --git a/node_modules/@webassemblyjs/ast/lib/node-helpers.js b/node_modules/@webassemblyjs/ast/lib/node-helpers.js
new file mode 100644
index 0000000..50dab1f
--- /dev/null
+++ b/node_modules/@webassemblyjs/ast/lib/node-helpers.js
@@ -0,0 +1,107 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.numberLiteralFromRaw = numberLiteralFromRaw;
+exports.instruction = instruction;
+exports.objectInstruction = objectInstruction;
+exports.withLoc = withLoc;
+exports.withRaw = withRaw;
+exports.funcParam = funcParam;
+exports.indexLiteral = indexLiteral;
+exports.memIndexLiteral = memIndexLiteral;
+
+var _wastParser = require("@webassemblyjs/wast-parser");
+
+var _nodes = require("./nodes");
+
+function numberLiteralFromRaw(rawValue) {
+ var instructionType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "i32";
+ var original = rawValue; // Remove numeric separators _
+
+ if (typeof rawValue === "string") {
+ rawValue = rawValue.replace(/_/g, "");
+ }
+
+ if (typeof rawValue === "number") {
+ return (0, _nodes.numberLiteral)(rawValue, String(original));
+ } else {
+ switch (instructionType) {
+ case "i32":
+ {
+ return (0, _nodes.numberLiteral)((0, _wastParser.parse32I)(rawValue), String(original));
+ }
+
+ case "u32":
+ {
+ return (0, _nodes.numberLiteral)((0, _wastParser.parseU32)(rawValue), String(original));
+ }
+
+ case "i64":
+ {
+ return (0, _nodes.longNumberLiteral)((0, _wastParser.parse64I)(rawValue), String(original));
+ }
+
+ case "f32":
+ {
+ return (0, _nodes.floatLiteral)((0, _wastParser.parse32F)(rawValue), (0, _wastParser.isNanLiteral)(rawValue), (0, _wastParser.isInfLiteral)(rawValue), String(original));
+ }
+ // f64
+
+ default:
+ {
+ return (0, _nodes.floatLiteral)((0, _wastParser.parse64F)(rawValue), (0, _wastParser.isNanLiteral)(rawValue), (0, _wastParser.isInfLiteral)(rawValue), String(original));
+ }
+ }
+ }
+}
+
+function instruction(id) {
+ var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
+ var namedArgs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+ return (0, _nodes.instr)(id, undefined, args, namedArgs);
+}
+
+function objectInstruction(id, object) {
+ var args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
+ var namedArgs = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
+ return (0, _nodes.instr)(id, object, args, namedArgs);
+}
+/**
+ * Decorators
+ */
+
+
+function withLoc(n, end, start) {
+ var loc = {
+ start: start,
+ end: end
+ };
+ n.loc = loc;
+ return n;
+}
+
+function withRaw(n, raw) {
+ n.raw = raw;
+ return n;
+}
+
+function funcParam(valtype, id) {
+ return {
+ id: id,
+ valtype: valtype
+ };
+}
+
+function indexLiteral(value) {
+ // $FlowIgnore
+ var x = numberLiteralFromRaw(value, "u32");
+ return x;
+}
+
+function memIndexLiteral(value) {
+ // $FlowIgnore
+ var x = numberLiteralFromRaw(value, "u32");
+ return x;
+} \ No newline at end of file