UNPKG

@glimmer/runtime

Version:

Minimal runtime needed to render Glimmer templates

109 lines (82 loc) 8.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _vm = require("@glimmer/vm"); var _symbols = require("../symbols"); var _lowLevel = require("./low-level"); var EvaluationStackImpl = /*#__PURE__*/function () { // fp -> sp function EvaluationStackImpl(stack, registers) { if (stack === void 0) { stack = []; } this.stack = stack; this[_symbols.REGISTERS] = registers; if (false /* LOCAL_DEBUG */ ) { Object.seal(this); } } EvaluationStackImpl.restore = function restore(snapshot) { return new this(snapshot.slice(), (0, _lowLevel.initializeRegistersWithSP)(snapshot.length - 1)); }; var _proto = EvaluationStackImpl.prototype; _proto.push = function push(value) { this.stack[++this[_symbols.REGISTERS][_vm.$sp]] = value; }; _proto.dup = function dup(position) { if (position === void 0) { position = this[_symbols.REGISTERS][_vm.$sp]; } this.stack[++this[_symbols.REGISTERS][_vm.$sp]] = this.stack[position]; }; _proto.copy = function copy(from, to) { this.stack[to] = this.stack[from]; }; _proto.pop = function pop(n) { if (n === void 0) { n = 1; } var top = this.stack[this[_symbols.REGISTERS][_vm.$sp]]; this[_symbols.REGISTERS][_vm.$sp] -= n; return top; }; _proto.peek = function peek(offset) { if (offset === void 0) { offset = 0; } return this.stack[this[_symbols.REGISTERS][_vm.$sp] - offset]; }; _proto.get = function get(offset, base) { if (base === void 0) { base = this[_symbols.REGISTERS][_vm.$fp]; } return this.stack[base + offset]; }; _proto.set = function set(value, offset, base) { if (base === void 0) { base = this[_symbols.REGISTERS][_vm.$fp]; } this.stack[base + offset] = value; }; _proto.slice = function slice(start, end) { return this.stack.slice(start, end); }; _proto.capture = function capture(items) { var end = this[_symbols.REGISTERS][_vm.$sp] + 1; var start = end - items; return this.stack.slice(start, end); }; _proto.reset = function reset() { this.stack.length = 0; }; _proto.toArray = function toArray() { return this.stack.slice(this[_symbols.REGISTERS][_vm.$fp], this[_symbols.REGISTERS][_vm.$sp] + 1); }; return EvaluationStackImpl; }(); exports.default = EvaluationStackImpl; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL3N0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7SUFrQmMsbUI7QUFPWjtBQUNBLFdBQUEsbUJBQUEsQ0FBQSxLQUFBLEVBQUEsU0FBQSxFQUF1RTtBQUFBLFFBQW5ELEtBQW1ELEtBQUEsS0FBQSxDQUFBLEVBQUE7QUFBbkQsTUFBQSxLQUFtRCxHQUF2RSxFQUFvQjtBQUFtRDs7QUFBbkQsU0FBQSxLQUFBLEdBQUEsS0FBQTtBQUNsQixTQUFBLGtCQUFBLElBQUEsU0FBQTs7QUFFQSxRQUFBO0FBQUE7QUFBQSxNQUFpQjtBQUNmLFFBQUEsTUFBTSxDQUFOLElBQUEsQ0FBQSxJQUFBO0FBQ0Q7QUFDRjs7c0JBYkQsTyxHQUFBLFNBQUEsT0FBQSxDQUFBLFFBQUEsRUFBa0M7QUFDaEMsV0FBTyxJQUFBLElBQUEsQ0FBUyxRQUFRLENBQWpCLEtBQVMsRUFBVCxFQUEyQix5Q0FBMEIsUUFBUSxDQUFSLE1BQUEsR0FBNUQsQ0FBa0MsQ0FBM0IsQ0FBUDs7Ozs7U0FjRixJLEdBQUEsU0FBQSxJQUFBLENBQUEsS0FBQSxFQUFtQjtBQUNqQixTQUFBLEtBQUEsQ0FBVyxFQUFFLEtBQUEsa0JBQUEsRUFBYixPQUFhLENBQWIsSUFBQSxLQUFBOzs7U0FHRixHLEdBQUEsU0FBQSxHQUFBLENBQUEsUUFBQSxFQUFtQztBQUFBLFFBQS9CLFFBQStCLEtBQUEsS0FBQSxDQUFBLEVBQUE7QUFBL0IsTUFBQSxRQUErQixHQUFwQixLQUFBLGtCQUFBLEVBQVosT0FBWSxDQUFYO0FBQStCOztBQUNqQyxTQUFBLEtBQUEsQ0FBVyxFQUFFLEtBQUEsa0JBQUEsRUFBYixPQUFhLENBQWIsSUFBcUMsS0FBQSxLQUFBLENBQXJDLFFBQXFDLENBQXJDOzs7U0FHRixJLEdBQUEsU0FBQSxJQUFBLENBQUEsSUFBQSxFQUFBLEVBQUEsRUFBNkI7QUFDM0IsU0FBQSxLQUFBLENBQUEsRUFBQSxJQUFpQixLQUFBLEtBQUEsQ0FBakIsSUFBaUIsQ0FBakI7OztTQUdGLEcsR0FBQSxTQUFBLEdBQUEsQ0FBQSxDQUFBLEVBQVk7QUFBQSxRQUFMLENBQUssS0FBQSxLQUFBLENBQUEsRUFBQTtBQUFMLE1BQUEsQ0FBSyxHQUFULENBQUk7QUFBSzs7QUFDVixRQUFJLEdBQUcsR0FBRyxLQUFBLEtBQUEsQ0FBVyxLQUFBLGtCQUFBLEVBQXJCLE9BQXFCLENBQVgsQ0FBVjtBQUNBLFNBQUEsa0JBQUEsRUFBQSxPQUFBLEtBQUEsQ0FBQTtBQUNBLFdBQUEsR0FBQTs7O1NBR0YsSSxHQUFBLFNBQUEsSUFBQSxDQUFBLE1BQUEsRUFBa0I7QUFBQSxRQUFWLE1BQVUsS0FBQSxLQUFBLENBQUEsRUFBQTtBQUFWLE1BQUEsTUFBVSxHQUFkLENBQUk7QUFBVTs7QUFDaEIsV0FBTyxLQUFBLEtBQUEsQ0FBVyxLQUFBLGtCQUFBLEVBQUEsT0FBQSxJQUFsQixNQUFPLENBQVA7OztTQUdGLEcsR0FBQSxTQUFBLEdBQUEsQ0FBQSxNQUFBLEVBQUEsSUFBQSxFQUFrRDtBQUFBLFFBQTNCLElBQTJCLEtBQUEsS0FBQSxDQUFBLEVBQUE7QUFBM0IsTUFBQSxJQUEyQixHQUFwQixLQUFBLGtCQUFBLEVBQTNCLE9BQTJCLENBQVA7QUFBMkI7O0FBQ2hELFdBQU8sS0FBQSxLQUFBLENBQVcsSUFBSSxHQUF0QixNQUFPLENBQVA7OztTQUdGLEcsR0FBQSxTQUFBLEdBQUEsQ0FBQSxLQUFBLEVBQUEsTUFBQSxFQUFBLElBQUEsRUFBK0Q7QUFBQSxRQUEzQixJQUEyQixLQUFBLEtBQUEsQ0FBQSxFQUFBO0FBQTNCLE1BQUEsSUFBMkIsR0FBcEIsS0FBQSxrQkFBQSxFQUF4QyxPQUF3QyxDQUFQO0FBQTJCOztBQUM3RCxTQUFBLEtBQUEsQ0FBVyxJQUFJLEdBQWYsTUFBQSxJQUFBLEtBQUE7OztTQUdGLEssR0FBQSxTQUFBLEtBQUEsQ0FBQSxLQUFBLEVBQUEsR0FBQSxFQUE2QztBQUMzQyxXQUFPLEtBQUEsS0FBQSxDQUFBLEtBQUEsQ0FBQSxLQUFBLEVBQVAsR0FBTyxDQUFQOzs7U0FHRixPLEdBQUEsU0FBQSxPQUFBLENBQUEsS0FBQSxFQUFxQjtBQUNuQixRQUFJLEdBQUcsR0FBRyxLQUFBLGtCQUFBLEVBQUEsT0FBQSxJQUFWLENBQUE7QUFDQSxRQUFJLEtBQUssR0FBRyxHQUFHLEdBQWYsS0FBQTtBQUNBLFdBQU8sS0FBQSxLQUFBLENBQUEsS0FBQSxDQUFBLEtBQUEsRUFBUCxHQUFPLENBQVA7OztTQUdGLEssR0FBQSxTQUFBLEtBQUEsR0FBSztBQUNILFNBQUEsS0FBQSxDQUFBLE1BQUEsR0FBQSxDQUFBOzs7U0FHRixPLEdBQUEsU0FBQSxPQUFBLEdBQU87QUFDTCxXQUFPLEtBQUEsS0FBQSxDQUFBLEtBQUEsQ0FBaUIsS0FBQSxrQkFBQSxFQUFqQixPQUFpQixDQUFqQixFQUF1QyxLQUFBLGtCQUFBLEVBQUEsT0FBQSxJQUE5QyxDQUFPLENBQVAiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMT0NBTF9ERUJVRyB9IGZyb20gJ0BnbGltbWVyL2xvY2FsLWRlYnVnLWZsYWdzJztcbmltcG9ydCB7ICRmcCwgJHNwLCBNYWNoaW5lUmVnaXN0ZXIgfSBmcm9tICdAZ2xpbW1lci92bSc7XG5pbXBvcnQgeyBSRUdJU1RFUlMgfSBmcm9tICcuLi9zeW1ib2xzJztcbmltcG9ydCB7IGluaXRpYWxpemVSZWdpc3RlcnNXaXRoU1AsIExvd0xldmVsUmVnaXN0ZXJzIH0gZnJvbSAnLi9sb3ctbGV2ZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV2YWx1YXRpb25TdGFjayB7XG4gIFtSRUdJU1RFUlNdOiBMb3dMZXZlbFJlZ2lzdGVycztcblxuICBwdXNoKHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgZHVwKHBvc2l0aW9uPzogTWFjaGluZVJlZ2lzdGVyKTogdm9pZDtcbiAgY29weShmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpOiB2b2lkO1xuICBwb3A8VD4obj86IG51bWJlcik6IFQ7XG4gIHBlZWs8VD4ob2Zmc2V0PzogbnVtYmVyKTogVDtcbiAgZ2V0PFQ+KG9mZnNldDogbnVtYmVyLCBiYXNlPzogbnVtYmVyKTogVDtcbiAgc2V0KHZhbHVlOiB1bmtub3duLCBvZmZzZXQ6IG51bWJlciwgYmFzZT86IG51bWJlcik6IHZvaWQ7XG4gIHNsaWNlPFQgPSB1bmtub3duPihzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcik6IFRbXTtcbiAgY2FwdHVyZShpdGVtczogbnVtYmVyKTogdW5rbm93bltdO1xuICByZXNldCgpOiB2b2lkO1xuICB0b0FycmF5KCk6IHVua25vd25bXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXZhbHVhdGlvblN0YWNrSW1wbCBpbXBsZW1lbnRzIEV2YWx1YXRpb25TdGFjayB7XG4gIHN0YXRpYyByZXN0b3JlKHNuYXBzaG90OiB1bmtub3duW10pOiBFdmFsdWF0aW9uU3RhY2tJbXBsIHtcbiAgICByZXR1cm4gbmV3IHRoaXMoc25hcHNob3Quc2xpY2UoKSwgaW5pdGlhbGl6ZVJlZ2lzdGVyc1dpdGhTUChzbmFwc2hvdC5sZW5ndGggLSAxKSk7XG4gIH1cblxuICByZWFkb25seSBbUkVHSVNURVJTXTogTG93TGV2ZWxSZWdpc3RlcnM7XG5cbiAgLy8gZnAgLT4gc3BcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdGFjazogdW5rbm93bltdID0gW10sIHJlZ2lzdGVyczogTG93TGV2ZWxSZWdpc3RlcnMpIHtcbiAgICB0aGlzW1JFR0lTVEVSU10gPSByZWdpc3RlcnM7XG5cbiAgICBpZiAoTE9DQUxfREVCVUcpIHtcbiAgICAgIE9iamVjdC5zZWFsKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1c2godmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgICB0aGlzLnN0YWNrWysrdGhpc1tSRUdJU1RFUlNdWyRzcF1dID0gdmFsdWU7XG4gIH1cblxuICBkdXAocG9zaXRpb24gPSB0aGlzW1JFR0lTVEVSU11bJHNwXSk6IHZvaWQge1xuICAgIHRoaXMuc3RhY2tbKyt0aGlzW1JFR0lTVEVSU11bJHNwXV0gPSB0aGlzLnN0YWNrW3Bvc2l0aW9uXTtcbiAgfVxuXG4gIGNvcHkoZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5zdGFja1t0b10gPSB0aGlzLnN0YWNrW2Zyb21dO1xuICB9XG5cbiAgcG9wPFQ+KG4gPSAxKTogVCB7XG4gICAgbGV0IHRvcCA9IHRoaXMuc3RhY2tbdGhpc1tSRUdJU1RFUlNdWyRzcF1dIGFzIFQ7XG4gICAgdGhpc1tSRUdJU1RFUlNdWyRzcF0gLT0gbjtcbiAgICByZXR1cm4gdG9wO1xuICB9XG5cbiAgcGVlazxUPihvZmZzZXQgPSAwKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpc1tSRUdJU1RFUlNdWyRzcF0gLSBvZmZzZXRdIGFzIFQ7XG4gIH1cblxuICBnZXQ8VD4ob2Zmc2V0OiBudW1iZXIsIGJhc2UgPSB0aGlzW1JFR0lTVEVSU11bJGZwXSk6IFQge1xuICAgIHJldHVybiB0aGlzLnN0YWNrW2Jhc2UgKyBvZmZzZXRdIGFzIFQ7XG4gIH1cblxuICBzZXQodmFsdWU6IHVua25vd24sIG9mZnNldDogbnVtYmVyLCBiYXNlID0gdGhpc1tSRUdJU1RFUlNdWyRmcF0pIHtcbiAgICB0aGlzLnN0YWNrW2Jhc2UgKyBvZmZzZXRdID0gdmFsdWU7XG4gIH1cblxuICBzbGljZTxUID0gdW5rbm93bj4oc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpOiBUW10ge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLnNsaWNlKHN0YXJ0LCBlbmQpIGFzIFRbXTtcbiAgfVxuXG4gIGNhcHR1cmUoaXRlbXM6IG51bWJlcik6IHVua25vd25bXSB7XG4gICAgbGV0IGVuZCA9IHRoaXNbUkVHSVNURVJTXVskc3BdICsgMTtcbiAgICBsZXQgc3RhcnQgPSBlbmQgLSBpdGVtcztcbiAgICByZXR1cm4gdGhpcy5zdGFjay5zbGljZShzdGFydCwgZW5kKTtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMuc3RhY2subGVuZ3RoID0gMDtcbiAgfVxuXG4gIHRvQXJyYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suc2xpY2UodGhpc1tSRUdJU1RFUlNdWyRmcF0sIHRoaXNbUkVHSVNURVJTXVskc3BdICsgMSk7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=