From 293f05e539e1eeef8d971a5804fa907f30b511e1 Mon Sep 17 00:00:00 2001 From: Ajani Bilby <11359344+AjaniBilby@users.noreply.github.com> Date: Tue, 9 Jan 2024 15:38:22 +1100 Subject: [PATCH 1/2] ~patched compiler going out of memory bounds --- dist/bnf.js | 2 +- docs/source/static/dist/bnf-parser.js | 14 +++++++++++++- source/wasm/rule.ts | 28 +++++++++++++++++++++++++++ test/bnf/long-syntax.bnf | 11 +++++++++++ test/sample/long-syntax/correct.txt | 1 + 5 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 test/bnf/long-syntax.bnf create mode 100644 test/sample/long-syntax/correct.txt diff --git a/dist/bnf.js b/dist/bnf.js index 60ac933..21fdc4b 100644 --- a/dist/bnf.js +++ b/dist/bnf.js @@ -1,5 +1,5 @@ import * as _Shared from "./shared.js"; -let _rawWasm = _Shared.DecodeBase64("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"); +let _rawWasm = _Shared.DecodeBase64("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"); let _ctx = null; if (typeof window === 'undefined') { _ctx = new WebAssembly.Instance( diff --git a/docs/source/static/dist/bnf-parser.js b/docs/source/static/dist/bnf-parser.js index 8c31a08..03354de 100644 --- a/docs/source/static/dist/bnf-parser.js +++ b/docs/source/static/dist/bnf-parser.js @@ -1294,6 +1294,18 @@ function CompileRule$1(m, literals, rule) { const innerWasm = CompileExpression$1(ctx, inner, rule.name); ctx.m.addFunction(rule.name, binaryen.createType([]), binaryen.i32, ctx.vars, ctx.m.block(null, [ ctx.m.local.set(error, ctx.m.i32.const(0)), + // Auto grow if 1kb from end of memory + ctx.m.if(ctx.m.i32.lt_s(ctx.m.i32.mul(ctx.m.memory.size(), ctx.m.i32.const(65536) // bytes per page + ), ctx.m.i32.add(ctx.m.global.get("heap", binaryen.i32), ctx.m.i32.const(1024) // 1kb + )), ctx.m.block(null, [ + rule.name === "expr_arg" + ? ctx.m.call("print_i32", [ + ctx.m.i32.sub(ctx.m.i32.mul(ctx.m.memory.size(), ctx.m.i32.const(65536) // bytes per page + ), ctx.m.global.get("heap", binaryen.i32)) + ], binaryen.none) + : ctx.m.nop(), + ctx.m.drop(ctx.m.memory.grow(ctx.m.i32.const(1))) + ])), innerWasm, ctx.m.return(ctx.m.local.get(error, binaryen.i32)) ])); @@ -2200,7 +2212,7 @@ var shared = /*#__PURE__*/Object.freeze({ SyntaxNode: SyntaxNode }); -let _rawWasm = DecodeBase64("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"); +let _rawWasm = DecodeBase64("AGFzbQEAAAABIQZgAAF/YAF/AGABfwF/YAN/f38AYAN/f38Bf2ACf38BfwIQAQJqcwlwcmludF9pMzIAAQMZGAACAwQBBQAAAAAAAAAAAAAAAAAAAAAAAAUEAQEBCgYgBn8AQbABC38BQQALfwFBAAt/AUEAC38BQQALfwFBAAsH2QEXBm1lbW9yeQIABWlucHV0AwAFcmVhY2gDBQtpbnB1dExlbmd0aAMCBV9pbml0AAEHcHJvZ3JhbQAHAXcACAdjb21tZW50AAkEbmFtZQAKBmxldHRlcgALBWRpZ2l0AAwDaGV4AA0IY29uc3RhbnQADgRmcmFnAA8GZXNjYXBlABAEYnl0ZQARA2RlZgASBGV4cHIAEwhleHByX2FyZwAUC2V4cHJfcHJlZml4ABUKZXhwcl9pbmZpeAAWC2V4cHJfc3VmZml4ABcNZXhwcl9icmFja2V0cwAYCulFGBoAQQAkBEEAJAUjAkGwAWokASMBEAIkAyMDCwoAIABBA2pBfHELIwEBfwNAIAAgA2ogASADai0AADoAACADQQFqIgMgAkgNAAsLQQEBfyAAQbABaiEDQQAhAANAAkAgACADai0AACAAIAFqLQAARw0AIABBAWoiACACTg0AIwEgACADakoNAQsLIAALDgAgACMFTgRAIAAkBQsLWAEDfyABIQRBASECA0AgACgCAAR/IAIgACgCEGohAiAAQRRqBSABIABBFGogACgCECIDEAMgASADaiEBIAAgA0EUamoQAgshACACQQFrIgINAAsgASAEawuOAgEEfyMDQYAIaj8AQRB0SgRAQQFAABoLIwMiAiMENgIIIAJBFGokAyMDIwMiACMENgIIIABBFGokAwNAEAhBAUZFBEAgAUEBaiEBDAELCyAAQRI2AgAgAEEGNgIEIAAjBDYCDCAAIAE2AhAkAwJAQQAiAQ0AAn9BACEDIwMiACMENgIIIABBFGokAwNAEBJBAUZFBEAgA0EBaiEDDAELCyADQQBMBEAgACgCCCQEIAAkA0EBDAELIABBGDYCACAAQQY2AgQgACMENgIMIAAgAzYCEEEACyIBDQALIAEEQEEBIQEgAigCCCQEIAIkAwUgAkEeNgIAIAJBBzYCBCACIwQ2AgwgAkEBNgIQCyABC74EAQR/IwNBgAhqPwBBEHRKBEBBAUAAGgsjAyIDIwQ2AgggA0EUaiQDAkAQCSIBRQ0AQQAhASMDIgAjBDYCCCMEQSVBARAEIQIgAiMEaiQEIwQQBQJAIAJBAUcEQEEBIQEgACgCCCQEIAAkAwwBCyMDQQA2AgAjA0EHNgIEIwMjBDYCDCMDQQE2AhAgAEEUakElQQEQAyAAQRVqEAIkAwsgAUUNAEEAIQEjAyIAIwQ2AggjBEEmQQEQBCECIAIjBGokBCMEEAUCQCACQQFHBEBBASEBIAAoAggkBCAAJAMMAQsjA0EANgIAIwNBBzYCBCMDIwQ2AgwjA0EBNgIQIABBFGpBJkEBEAMgAEEVahACJAMLIAFFDQBBACEBIwMiACMENgIIIwRBJ0EBEAQhAiACIwRqJAQjBBAFAkAgAkEBRwRAQQEhASAAKAIIJAQgACQDDAELIwNBADYCACMDQQc2AgQjAyMENgIMIwNBATYCECAAQRRqQSdBARADIABBFWoQAiQDCyABRQ0AQQAhASMDIgAjBDYCCCMEQShBAhAEIQIgAiMEaiQEIwQQBQJAIAJBAkcEQEEBIQEgACgCCCQEIAAkAwwBCyMDQQA2AgAjA0EHNgIEIwMjBDYCDCMDQQI2AhAgAEEUakEoQQIQAyAAQRZqEAIkAwsgAUUNAAsCQCABQQFGDQALIAFBAUYEQEEBIQEgAygCCCQEIAMkAwUgA0EqNgIAIANBATYCBCADIwQ2AgwgA0EBNgIQCyABC8AEAQZ/IwNBgAhqPwBBEHRKBEBBAUAAGgsjAyIDIwQ2AgggA0EUaiQDIwMiACMENgIIIwRBK0EBEAQhASABIwRqJAQjBBAFAkAgAUEBRwRAQQEhAiAAKAIIJAQgACQDDAELIwNBADYCACMDQQc2AgQjAyMENgIMIwNBATYCECAAQRRqQStBARADIABBFWoQAiQDCwJAIAINAEEAIQEjAyIAIwQ2AgggACMFNgIMIABBFGokAwNAAkAjBCMCTg0AQQAhAiMDIgQjBDYCCCMEQSdBARAEIQUgBSMEaiQEIwQQBQJAIAVBAUcEQEEBIQIgBCgCCCQEIAQkAwwBCyMDQQA2AgAjA0EHNgIEIwMjBDYCDCMDQQE2AhAgBEEUakEnQQEQAyAEQRVqEAIkAwsgAkUNACABQQFqIQEjBEEBaiQEDAELCyAAKAIMJAUgACgCCCABahAFIAAoAgggAWokBCAAQQA2AgAgAEEHNgIEIAAjBDYCDCAAIAE2AhAgAEEUaiAAKAIIQbABaiABEAMgACABQRRqahACJANBACICDQAjAyIAIwQ2AggjBEEnQQEQBCEBIAEjBGokBCMEEAUCQCABQQFHBEBBASECIAAoAggkBCAAJAMMAQsjA0EANgIAIwNBBzYCBCMDIwQ2AgwjA0EBNgIQIABBFGpBJ0EBEAMgAEEVahACJAMLIAINAAsgAgRAQQEhAiADKAIIJAQgAyQDBSADQSw2AgAgA0EHNgIEIAMjBDYCDCADQQM2AhALIAILtwIBBn8jA0GACGo/AEEQdEoEQEEBQAAaCyMDIgEjBDYCCCABQRRqJAMCQBALIgBBAUYNACMDIgIjBDYCCCACQRRqJAMDQAJAEAsiAEUNABAMIgBFDQBBACEAIwMiAyMENgIIIwRBM0EBEAQhBSAFIwRqJAQjBBAFAkAgBUEBRwRAQQEhACADKAIIJAQgAyQDDAELIwNBADYCACMDQQc2AgQjAyMENgIMIwNBATYCECADQRRqQTNBARADIANBFWoQAiQDCyAARQ0ACyAAQQFGRQRAIARBAWohBAwBCwsgAkESNgIAIAJBBjYCBCACIwQ2AgwgAiAENgIQQQAhAEEADQALIABBAUYEQEEBIQAgASgCCCQEIAEkAwUgAUE0NgIAIAFBBDYCBCABIwQ2AgwgAUECNgIQCyAAC50DAQV/IwNBgAhqPwBBEHRKBEBBAUAAGgsjAyIDIwQ2AgggA0EUaiQDIwMiACMENgIIAkAjBCMCTg0AIwRBsAFqLQAAIgRB4QBJIARB+gBLcg0AIAFBAWohASMEQQFqJAQLIwQQBQJAIAFBAEwEQEEBIQIgACgCCCQEIAAkAwwBCyAAQQA2AgAgAEEHNgIEIAAjBDYCDCAAIAE2AhAgAEEUaiAAKAIIQbABaiABEAMgACABQRRqahACJAMLAkAgAkUNAEEAIQJBACEBIwMiACMENgIIAkAjBCMCTg0AIwRBsAFqLQAAIgRBwQBJIARB2gBLcg0AIAFBAWohASMEQQFqJAQLIwQQBQJAIAFBAEwEQEEBIQIgACgCCCQEIAAkAwwBCyAAQQA2AgAgAEEHNgIEIAAjBDYCDCAAIAE2AhAgAEEUaiAAKAIIQbABaiABEAMgACABQRRqahACJAMLIAJFDQALAkAgAg0ACyACBEBBASECIAMoAggkBCADJAMFIANBOjYCACADQQY2AgQgAyMENgIMIANBATYCEAsgAgv0AQEFfyMDQYAIaj8AQRB0SgRAQQFAABoLIwMiASMENgIIIAFBFGokAyMDIgAjBDYCCAJAIwQjAk4NACMEQbABai0AACIEQTBJIARBOUtyDQAgAkEBaiECIwRBAWokBAsjBBAFAkAgAkEATARAQQEhAyAAKAIIJAQgACQDDAELIABBADYCACAAQQc2AgQgACMENgIMIAAgAjYCECAAQRRqIAAoAghBsAFqIAIQAyAAIAJBFGpqEAIkAwsCQCADDQALIAMEQEEBIQMgASgCCCQEIAEkAwUgAUHBADYCACABQQU2AgQgASMENgIMIAFBATYCEAsgAwu8BAEFfyMDQYAIaj8AQRB0SgRAQQFAABoLIwMiAyMENgIIIANBFGokAyMDIgAjBDYCCAJAIwQjAk4NACMEQbABai0AACIEQTBJIARBOUtyDQAgAUEBaiEBIwRBAWokBAsjBBAFAkAgAUEATARAQQEhAiAAKAIIJAQgACQDDAELIABBADYCACAAQQc2AgQgACMENgIMIAAgATYCECAAQRRqIAAoAghBsAFqIAEQAyAAIAFBFGpqEAIkAwsCQCACRQ0AQQAhAkEAIQEjAyIAIwQ2AggCQCMEIwJODQAjBEGwAWotAAAiBEHhAEkgBEHmAEtyDQAgAUEBaiEBIwRBAWokBAsjBBAFAkAgAUEATARAQQEhAiAAKAIIJAQgACQDDAELIABBADYCACAAQQc2AgQgACMENgIMIAAgATYCECAAQRRqIAAoAghBsAFqIAEQAyAAIAFBFGpqEAIkAwsgAkUNAEEAIQJBACEBIwMiACMENgIIAkAjBCMCTg0AIwRBsAFqLQAAIgRBwQBJIARBxgBLcg0AIAFBAWohASMEQQFqJAQLIwQQBQJAIAFBAEwEQEEBIQIgACgCCCQEIAAkAwwBCyAAQQA2AgAgAEEHNgIEIAAjBDYCDCAAIAE2AhAgAEEUaiAAKAIIQbABaiABEAMgACABQRRqahACJAMLIAJFDQALAkAgAg0ACyACBEBBASECIAMoAggkBCADJAMFIANBxgA2AgAgA0EDNgIEIAMjBDYCDCADQQE2AhALIAILkgMBBX8jA0GACGo/AEEQdEoEQEEBQAAaCyMDIgIjBDYCCCACQRRqJAMjAyMDIgEjBDYCCCMEQckAQQEQBCEDIAMjBGokBCMEEAUCQCADQQFHBEBBASEAIAEoAggkBCABJAMMAQsjA0EANgIAIwNBBzYCBCMDIwQ2AgwjA0EBNgIQIAFBFGpByQBBARADIAFBFWoQAiQDCyQDAkAgAA0AQQAhASMDIgAjBDYCCCAAQRRqJAMDQBAPQQFGRQRAIAFBAWohAQwBCwsgAEESNgIAIABBBjYCBCAAIwQ2AgwgACABNgIQQQAiAA0AIwMjAyIBIwQ2AggjBEHJAEEBEAQhAyADIwRqJAQjBBAFAkAgA0EBRwRAQQEhACABKAIIJAQgASQDDAELIwNBADYCACMDQQc2AgQjAyMENgIMIwNBATYCECABQRRqQckAQQEQAyABQRVqEAIkAwskAyAADQALIAAEQEEBIQAgAigCCCQEIAIkAwUgAkHKADYCACACQQg2AgQgAiMENgIMIAJBATYCEAsgAAuZAwEGfyMDQYAIaj8AQRB0SgRAQQFAABoLIwMiAyMENgIIIANBFGokAwJAEBEiAUUNABAQIgFFDQACfyMDIgAjBDYCCCAAIwU2AgwgAEEUaiQDA0ACQCMEIwJODQBBACEBIwMiBCMENgIIIwRByQBBARAEIQUgBSMEaiQEIwQQBQJAIAVBAUcEQEEBIQEgBCgCCCQEIAQkAwwBCyMDQQA2AgAjA0EHNgIEIwMjBDYCDCMDQQE2AhAgBEEUakHJAEEBEAMgBEEVahACJAMLIAFFDQAgAkEBaiECIwRBAWokBAwBCwsgACgCDCQFIAAoAgggAmoQBSACQQBMBEAgACgCCCQEIAAkA0EBDAELIAAoAgggAmokBCAAQQA2AgAgAEEHNgIEIAAjBDYCDCAAIAI2AhAgAEEUaiAAKAIIQbABaiACEAMgACACQRRqahACJANBAAsiAUUNAAsCQCABQQFGDQALIAFBAUYEQEEBIQEgAygCCCQEIAMkAwUgA0HSADYCACADQQQ2AgQgAyMENgIMIANBATYCEAsgAQv8AgEFfyMDQYAIaj8AQRB0SgRAQQFAABoLIwMiAiMENgIIIAJBFGokAyMDIwMiACMENgIIIwRB1gBBARAEIQEgASMEaiQEIwQQBQJAIAFBAUcEQEEBIQMgACgCCCQEIAAkAwwBCyMDQQA2AgAjA0EHNgIEIwMjBDYCDCMDQQE2AhAgAEEUakHWAEEBEAMgAEEVahACJAMLJAMCQCADDQACfyMDIgAjBDYCCCAAIwU2AgwgAEEUaiQDAn9BACIBIwQjAk4NABojBEEBaiQEIAFBAWoLIQEgACgCDCQFIAAoAgggAWoQBSABQQBMBEAgACgCCCQEIAAkA0EBDAELIAAoAgggAWokBCAAQQA2AgAgAEEHNgIEIAAjBDYCDCAAIAE2AhAgAEEUaiAAKAIIQbABaiABEAMgACABQRRqahACJANBAAsiAw0ACyADBEBBASEDIAIoAggkBCACJAMFIAJB1wA2AgAgAkEGNgIEIAIjBDYCDCACQQE2AhALIAML9QIBBX8jA0GACGo/AEEQdEoEQEEBQAAaCyMDIgMjBDYCCCADQRRqJAMjAyMDIgAjBDYCCCMEQd0AQQIQBCECIAIjBGokBCMEEAUCQCACQQJHBEBBASEBIAAoAggkBCAAJAMMAQsjA0EANgIAIwNBBzYCBCMDIwQ2AgwjA0ECNgIQIABBFGpB3QBBAhADIABBFmoQAiQDCyQDAkAgAUEBRg0AIwMhACMDIgIjBDYCCCACQRRqJAMCQBANIgFBAUYNABANIgFBAUYNAAsgAUEBRgRAQQEhASACKAIIJAQgAiQDBSACQQc2AgAgAkEFNgIEIAIjBDYCDCACQQI2AhALIAFBAUYEQCAAJAMFIAAgACAAQRRqEAY2AhAgAEEANgIAIABBBzYCBCAAIAAoAhBBFGpqEAIkAwsgAUEBRg0ACyABQQFGBEBBASEBIAMoAggkBCADJAMFIANB3wA2AgAgA0EENgIEIAMjBDYCDCADQQE2AhALIAELhQcBBn8jA0GACGo/AEEQdEoEQEEBQAAaCyMDIgQjBDYCCCAEQRRqJAMjAyECEAoiAEEBRgRAIAIkAwUgAiACIAJBFGoQBjYCECACQQA2AgAgAkEHNgIEIAIgAigCEEEUamoQAiQDCwJAIABBAUYNACMDIwMiAiMENgIIIAJBFGokAwJAAn8jAyIBIwQ2AgggAUEUaiQDA0AQCEEBRkUEQCADQQFqIQMMAQsLIANBAEwEQCABKAIIJAQgASQDQQEMAQsgAUEYNgIAIAFBBjYCBCABIwQ2AgwgASADNgIQQQALIgBBAUYNACMDIgEjBDYCCCMEQeMAQQMQBCEDIAMjBGokBCMEEAUCQCADQQNHBEBBASEAIAEoAggkBCABJAMMAQsjA0EANgIAIwNBBzYCBCMDIwQ2AgwjA0EDNgIQIAFBFGpB4wBBAxADIAFBF2oQAiQDCyAAQQFGDQBBACEBIwMiACMENgIIIABBFGokAwNAEAhBAUZFBEAgAUEBaiEBDAELCyAAQRI2AgAgAEEGNgIEIAAjBDYCDCAAIAE2AhBBACEAQQANAAsgAEEBRgRAQQEhACACKAIIJAQgAiQDBSACQQc2AgAgAkEFNgIEIAIjBDYCDCACQQM2AhALJAMgAEEBRg0AEBMiAEEBRg0AIwMjAyICIwQ2AgggAkEUaiQDQQAhASMDIgAjBDYCCCAAQRRqJAMDQBAIQQFGRQRAIAFBAWohAQwBCwsgAEESNgIAIABBBjYCBCAAIwQ2AgwgACABNgIQAkBBACEAQQANACMDIgEjBDYCCCMEQeYAQQEQBCEDIAMjBGokBCMEEAUCQCADQQFHBEBBASEAIAEoAggkBCABJAMMAQsjA0EANgIAIwNBBzYCBCMDIwQ2AgwjA0EBNgIQIAFBFGpB5gBBARADIAFBFWoQAiQDCyAAQQFGDQBBACEBIwMiACMENgIIIABBFGokAwNAEAhBAUZFBEAgAUEBaiEBDAELCyAAQRI2AgAgAEEGNgIEIAAjBDYCDCAAIAE2AhBBACEAQQANAAsgAEEBRgRAQQEhACACKAIIJAQgAiQDBSACQQc2AgAgAkEFNgIEIAIjBDYCDCACQQM2AhALJAMgAEEBRg0ACyAAQQFGBEBBASEAIAQoAggkBCAEJAMFIARB5wA2AgAgBEEDNgIEIAQjBDYCDCAEQQI2AhALIAAL/gQBB38jA0GACGo/AEEQdEoEQEEBQAAaCyMDIgMjBDYCCCADQRRqJAMCQBAUIgBBAUYNACMDIwMiACMENgIIIABBFGokAwNAEAhBAUZFBEAgAUEBaiEBDAELCyAAQRI2AgAgAEEGNgIEIAAjBDYCDCAAIAE2AhAkA0EAIQBBAA0AIwMiBSMENgIIIAVBFGokAwNAIwMiAiMENgIIIAJBFGokAyMDIQFBACEEIwMiACMENgIIIABBFGokAwNAEBZBAUcEQCAEQQFqIgRBAUcNAQsLIABBDDYCACAAQQY2AgQgACMENgIMIAAgBDYCEEEAIQBBAARAIAEkAwUgASABIAFBFGoQBjYCECABQQA2AgAgAUEHNgIEIAEgASgCEEEUamoQAiQDCwJAIABBAUYNACMDQQAhASMDIgAjBDYCCCAAQRRqJAMDQBAIQQFGRQRAIAFBAWohAQwBCwsgAEESNgIAIABBBjYCBCAAIwQ2AgwgACABNgIQJANBACEAQQANABAUIgBBAUYNACMDQQAhASMDIgAjBDYCCCAAQRRqJAMDQBAIQQFGRQRAIAFBAWohAQwBCwsgAEESNgIAIABBBjYCBCAAIwQ2AgwgACABNgIQJANBACEAQQANAAsgAEEBRgRAQQEhACACKAIIJAQgAiQDBSACQQc2AgAgAkEFNgIEIAIjBDYCDCACQQI2AhALIABBAUZFBEAgBkEBaiEGDAELCyAFQRI2AgAgBUEGNgIEIAUjBDYCDCAFIAY2AhBBACEAQQANAAsgAEEBRgRAQQEhACADKAIIJAQgAyQDBSADQeoANgIAIANBBDYCBCADIwQ2AgwgA0ECNgIQCyAAC9cCAQR/IwNBgAhqPwBBEHRKBEA/AEEQdCMDaxAAQQFAABoLIwMiAiMENgIIIAJBFGokAwJAEBUiAUEBRg0AAkAQDiIBRQ0AEBgiAUUNACMDIQAQCiIBQQFGBEAgACQDBSAAIAAgAEEUahAGNgIQIABBADYCACAAQQc2AgQgACAAKAIQQRRqahACJAMLIAFFDQALIAFBAUYNACMDIQAjAyIBIwQ2AgggAUEUaiQDA0AQF0EBRwRAIANBAWoiA0EBRw0BCwsgAUEMNgIAIAFBBjYCBCABIwQ2AgwgASADNgIQQQAhAUEABEAgACQDBSAAIAAgAEEUahAGNgIQIABBADYCACAAQQc2AgQgACAAKAIQQRRqahACJAMLIAFBAUYNAAsgAUEBRgRAQQEhASACKAIIJAQgAiQDBSACQe4ANgIAIAJBCDYCBCACIwQ2AgwgAkEDNgIQCyABC64GAQd/IwNBgAhqPwBBEHRKBEBBAUAAGgsjAyIGIwQ2AgggBkEUaiQDIwMhACMDIgEjBDYCCCABQRRqJAMDQAJAIwMiAyMENgIIIwRB9gBBARAEIQUgBSMEaiQEIwQQBQJAIAVBAUcEQEEBIQIgAygCCCQEIAMkAwwBCyMDQQA2AgAjA0EHNgIEIwMjBDYCDCMDQQE2AhAgA0EUakH2AEEBEAMgA0EVahACJAMLIAINACAEQQFqIgRBAUcNAQsLIAFBDDYCACABQQY2AgQgASMENgIMIAEgBDYCEEEAIgIEQCAAJAMFIAAgACAAQRRqEAY2AhAgAEEANgIAIABBBzYCBCAAIAAoAhBBFGpqEAIkAwsCQCACDQAjAyEAQQAhBCMDIgEjBDYCCCABQRRqJAMDQAJAIwMiAyMENgIIIwRB9wBBAxAEIQUgBSMEaiQEIwQQBQJAIAVBA0cEQEEBIQIgAygCCCQEIAMkAwwBCyMDQQA2AgAjA0EHNgIEIwMjBDYCDCMDQQM2AhAgA0EUakH3AEEDEAMgA0EXahACJAMLIAINACAEQQFqIgRBAUcNAQsLIAFBDDYCACABQQY2AgQgASMENgIMIAEgBDYCEEEAIgIEQCAAJAMFIAAgACAAQRRqEAY2AhAgAEEANgIAIABBBzYCBCAAIAAoAhBBFGpqEAIkAwsgAg0AIwMhAEEAIQQjAyIBIwQ2AgggAUEUaiQDA0ACQCMDIgMjBDYCCCMEQfoAQQEQBCEFIAUjBGokBCMEEAUCQCAFQQFHBEBBASECIAMoAggkBCADJAMMAQsjA0EANgIAIwNBBzYCBCMDIwQ2AgwjA0EBNgIQIANBFGpB+gBBARADIANBFWoQAiQDCyACDQAgBEEBaiIEQQFHDQELCyABQQw2AgAgAUEGNgIEIAEjBDYCDCABIAQ2AhBBACICBEAgACQDBSAAIAAgAEEUahAGNgIQIABBADYCACAAQQc2AgQgACAAKAIQQRRqahACJAMLIAINAAsgAgRAQQEhAiAGKAIIJAQgBiQDBSAGQfsANgIAIAZBCzYCBCAGIwQ2AgwgBkEDNgIQCyACC8wCAQR/IwNBgAhqPwBBEHRKBEBBAUAAGgsjAyICIwQ2AgggAkEUaiQDIwMiASMENgIIIwRBhgFBAhAEIQMgAyMEaiQEIwQQBQJAIANBAkcEQEEBIQAgASgCCCQEIAEkAwwBCyMDQQA2AgAjA0EHNgIEIwMjBDYCDCMDQQI2AhAgAUEUakGGAUECEAMgAUEWahACJAMLAkAgAEUNAEEAIQAjAyIBIwQ2AggjBEGIAUEBEAQhAyADIwRqJAQjBBAFAkAgA0EBRwRAQQEhACABKAIIJAQgASQDDAELIwNBADYCACMDQQc2AgQjAyMENgIMIwNBATYCECABQRRqQYgBQQEQAyABQRVqEAIkAwsgAEUNAAsCQCAADQALIAAEQEEBIQAgAigCCCQEIAIkAwUgAkGJATYCACACQQo2AgQgAiMENgIMIAJBATYCEAsgAAvBAwEEfyMDQYAIaj8AQRB0SgRAQQFAABoLIwMiAyMENgIIIANBFGokAyMDIgAjBDYCCCMEQZMBQQEQBCECIAIjBGokBCMEEAUCQCACQQFHBEBBASEBIAAoAggkBCAAJAMMAQsjA0EANgIAIwNBBzYCBCMDIwQ2AgwjA0EBNgIQIABBFGpBkwFBARADIABBFWoQAiQDCwJAIAFFDQBBACEBIwMiACMENgIIIwRBlAFBARAEIQIgAiMEaiQEIwQQBQJAIAJBAUcEQEEBIQEgACgCCCQEIAAkAwwBCyMDQQA2AgAjA0EHNgIEIwMjBDYCDCMDQQE2AhAgAEEUakGUAUEBEAMgAEEVahACJAMLIAFFDQBBACEBIwMiACMENgIIIwRBlQFBARAEIQIgAiMEaiQEIwQQBQJAIAJBAUcEQEEBIQEgACgCCCQEIAAkAwwBCyMDQQA2AgAjA0EHNgIEIwMjBDYCDCMDQQE2AhAgAEEUakGVAUEBEAMgAEEVahACJAMLIAFFDQALAkAgAQ0ACyABBEBBASEBIAMoAggkBCADJAMFIANBlgE2AgAgA0ELNgIEIAMjBDYCDCADQQE2AhALIAELjwUBBn8jA0GACGo/AEEQdEoEQEEBQAAaCyMDIgMjBDYCCCADQRRqJAMjAyMDIgIjBDYCCCACQRRqJAMjAyIBIwQ2AggjBEGhAUEBEAQhBCAEIwRqJAQjBBAFAkAgBEEBRwRAQQEhACABKAIIJAQgASQDDAELIwNBADYCACMDQQc2AgQjAyMENgIMIwNBATYCECABQRRqQaEBQQEQAyABQRVqEAIkAwsCQCAAQQFGDQBBACEBIwMiACMENgIIIABBFGokAwNAEAhBAUZFBEAgAUEBaiEBDAELCyAAQRI2AgAgAEEGNgIEIAAjBDYCDCAAIAE2AhBBACEAQQANAAsgAEEBRgRAQQEhACACKAIIJAQgAiQDBSACQQc2AgAgAkEFNgIEIAIjBDYCDCACQQI2AhALJAMCQCAAQQFGDQAQEyIAQQFGDQAjAyMDIgIjBDYCCCACQRRqJANBACEBIwMiACMENgIIIABBFGokAwNAEAhBAUZFBEAgAUEBaiEBDAELCyAAQRI2AgAgAEEGNgIEIAAjBDYCDCAAIAE2AhACQEEAIQBBAA0AIwMiASMENgIIIwRBogFBARAEIQQgBCMEaiQEIwQQBQJAIARBAUcEQEEBIQAgASgCCCQEIAEkAwwBCyMDQQA2AgAjA0EHNgIEIwMjBDYCDCMDQQE2AhAgAUEUakGiAUEBEAMgAUEVahACJAMLIABBAUYNAAsgAEEBRgRAQQEhACACKAIIJAQgAiQDBSACQQc2AgAgAkEFNgIEIAIjBDYCDCACQQI2AhALJAMgAEEBRg0ACyAAQQFGBEBBASEAIAMoAggkBCADJAMFIANBowE2AgAgA0ENNgIEIAMjBDYCDCADQQE2AhALIAALC7kDLwBBAAsHbGl0ZXJhbABBBwsFKC4uLikAQQwLBiguLi4pPwBBEgsGKC4uLikqAEEYCwYoLi4uKSsAQR4LB3Byb2dyYW0AQSULASAAQSYLAQkAQScLAQoAQSgLAg0KAEEqCwF3AEErCwEjAEEsCwdjb21tZW50AEEzCwFfAEE0CwRuYW1lAEE4CwFhAEE5CwFBAEE6CwZsZXR0ZXIAQcAACwEwAEHBAAsFZGlnaXQAQcYACwNoZXgAQckACwEiAEHKAAsIY29uc3RhbnQAQdIACwRmcmFnAEHWAAsBXABB1wALBmVzY2FwZQBB3QALAlx4AEHfAAsEYnl0ZQBB4wALAzo6PQBB5gALATsAQecACwNkZWYAQeoACwRleHByAEHuAAsIZXhwcl9hcmcAQfYACwElAEH3AAsDLi4uAEH6AAsBIQBB+wALC2V4cHJfcHJlZml4AEGGAQsCLT4AQYgBCwF8AEGJAQsKZXhwcl9pbmZpeABBkwELASoAQZQBCwE/AEGVAQsBKwBBlgELC2V4cHJfc3VmZml4AEGhAQsBKABBogELASkAQaMBCw1leHByX2JyYWNrZXRz"); let _ctx = null; if (typeof window === 'undefined') { _ctx = new WebAssembly.Instance( diff --git a/source/wasm/rule.ts b/source/wasm/rule.ts index 660bfc6..42f5996 100644 --- a/source/wasm/rule.ts +++ b/source/wasm/rule.ts @@ -943,6 +943,34 @@ export function CompileRule(m: binaryen.Module, literals: LiteralMapping, rule: ctx.m.block(null, [ ctx.m.local.set(error, ctx.m.i32.const(0)), + // Auto grow if 1kb from end of memory + ctx.m.if( + ctx.m.i32.lt_s( + ctx.m.i32.mul( + ctx.m.memory.size(), + ctx.m.i32.const(65_536) // bytes per page + ), + ctx.m.i32.add( + ctx.m.global.get("heap", binaryen.i32), + ctx.m.i32.const(1024) // 1kb + ) + ), + ctx.m.block(null, [ + rule.name === "expr_arg" + ? ctx.m.call("print_i32", [ + ctx.m.i32.sub( + ctx.m.i32.mul( + ctx.m.memory.size(), + ctx.m.i32.const(65_536) // bytes per page + ), + ctx.m.global.get("heap", binaryen.i32) + ) + ], binaryen.none) + : ctx.m.nop(), + ctx.m.drop( ctx.m.memory.grow(ctx.m.i32.const(1)) ) + ]) + ), + innerWasm, ctx.m.return(ctx.m.local.get(error, binaryen.i32)) diff --git a/test/bnf/long-syntax.bnf b/test/bnf/long-syntax.bnf new file mode 100644 index 0000000..bd09bc8 --- /dev/null +++ b/test/bnf/long-syntax.bnf @@ -0,0 +1,11 @@ +program ::= "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" + "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" ; + +# Remove a single "..." from this line and it will compile +wordI ::= "b" "c" ; \ No newline at end of file diff --git a/test/sample/long-syntax/correct.txt b/test/sample/long-syntax/correct.txt new file mode 100644 index 0000000..3aae031 --- /dev/null +++ b/test/sample/long-syntax/correct.txt @@ -0,0 +1 @@ +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \ No newline at end of file From 860dbcf340810c38d2c11f29cccc3c727a45ddb0 Mon Sep 17 00:00:00 2001 From: Ajani Bilby <11359344+AjaniBilby@users.noreply.github.com> Date: Tue, 9 Jan 2024 15:43:38 +1100 Subject: [PATCH 2/2] ~prepared for publishing --- docs/source/changelog.md | 5 +++++ package.json | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/source/changelog.md b/docs/source/changelog.md index f81cbd8..937df04 100644 --- a/docs/source/changelog.md +++ b/docs/source/changelog.md @@ -1,5 +1,10 @@ # Changelog +## Version 4.1.1 + +### Fixes: + - [x] Fixed an issue where wasm memory usage exceeded predicted usage - the module now checks if it's about to run out of memory on the start of every rule being parsed. + ## Version 4.1.0 ### Added: diff --git a/package.json b/package.json index 4a9151b..c5f2e7b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bnf-parser", - "version": "4.1.0", + "version": "4.1.1", "description": "Deterministic BNF compiler/parser", "homepage": "https://bnf-parser.ajanibilby.com", "main": "./bin/index.js",