@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
28 lines (26 loc) • 3.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const constants = tslib_1.__importStar(require("../../../constants"));
const Helper_1 = require("../Helper");
class ContinueHelper extends Helper_1.Helper {
emit(sb, node, options) {
let pc = options.continuePC;
if (pc === undefined) {
sb.context.reportUnsupported(node);
}
else {
if (options.finallyPC !== undefined) {
sb.emitPushInt(node, constants.FINALLY_COMPLETION);
}
sb.emitPushInt(node, constants.CONTINUE_COMPLETION);
if (options.finallyPC !== undefined) {
pc = options.finallyPC;
sb.emitPushInt(node, constants.FINALLY_COMPLETION);
}
sb.emitJmp(node, 'JMP', pc);
}
}
}
exports.ContinueHelper = ContinueHelper;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbnRpbnVlSGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHNFQUFnRDtBQUdoRCxzQ0FBbUM7QUFJbkMsTUFBYSxjQUFlLFNBQVEsZUFBTTtJQUNqQyxJQUFJLENBQUMsRUFBaUIsRUFBRSxJQUFhLEVBQUUsT0FBcUI7UUFDakUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUM1QixJQUFJLEVBQUUsS0FBSyxTQUFTLEVBQUU7WUFFcEIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNwQzthQUFNO1lBQ0wsSUFBSSxPQUFPLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRTtnQkFDbkMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7YUFDcEQ7WUFDRCxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNwRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEtBQUssU0FBUyxFQUFFO2dCQUNuQyxFQUFFLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztnQkFDdkIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLGtCQUFrQixDQUFDLENBQUM7YUFDcEQ7WUFDRCxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDO0NBQ0Y7QUFsQkQsd0NBa0JDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvaGVscGVyL2NvbXBsZXRpb25SZWNvcmQvQ29udGludWVIZWxwZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgKiBhcyBjb25zdGFudHMgZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBIZWxwZXIgfSBmcm9tICcuLi9IZWxwZXInO1xuXG4vLyBJbnB1dDogW11cbi8vIE91dHB1dDogW11cbmV4cG9ydCBjbGFzcyBDb250aW51ZUhlbHBlciBleHRlbmRzIEhlbHBlciB7XG4gIHB1YmxpYyBlbWl0KHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5Ob2RlLCBvcHRpb25zOiBWaXNpdE9wdGlvbnMpOiB2b2lkIHtcbiAgICBsZXQgcGMgPSBvcHRpb25zLmNvbnRpbnVlUEM7XG4gICAgaWYgKHBjID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICBzYi5jb250ZXh0LnJlcG9ydFVuc3VwcG9ydGVkKG5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob3B0aW9ucy5maW5hbGx5UEMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzYi5lbWl0UHVzaEludChub2RlLCBjb25zdGFudHMuRklOQUxMWV9DT01QTEVUSU9OKTtcbiAgICAgIH1cbiAgICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIGNvbnN0YW50cy5DT05USU5VRV9DT01QTEVUSU9OKTtcbiAgICAgIGlmIChvcHRpb25zLmZpbmFsbHlQQyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHBjID0gb3B0aW9ucy5maW5hbGx5UEM7XG4gICAgICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIGNvbnN0YW50cy5GSU5BTExZX0NPTVBMRVRJT04pO1xuICAgICAgfVxuICAgICAgc2IuZW1pdEptcChub2RlLCAnSk1QJywgcGMpO1xuICAgIH1cbiAgfVxufVxuIl19