UNPKG

@glimmer/runtime

Version:

Minimal runtime needed to render Glimmer templates

100 lines (77 loc) 8.32 kB
import { $fp, $sp } from '@glimmer/vm'; import { REGISTERS } from '../symbols'; import { initializeRegistersWithSP } from './low-level'; var EvaluationStackImpl = /*#__PURE__*/function () { // fp -> sp function EvaluationStackImpl(stack, registers) { if (stack === void 0) { stack = []; } this.stack = stack; this[REGISTERS] = registers; if (false /* LOCAL_DEBUG */ ) { Object.seal(this); } } EvaluationStackImpl.restore = function restore(snapshot) { return new this(snapshot.slice(), initializeRegistersWithSP(snapshot.length - 1)); }; var _proto = EvaluationStackImpl.prototype; _proto.push = function push(value) { this.stack[++this[REGISTERS][$sp]] = value; }; _proto.dup = function dup(position) { if (position === void 0) { position = this[REGISTERS][$sp]; } this.stack[++this[REGISTERS][$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[REGISTERS][$sp]]; this[REGISTERS][$sp] -= n; return top; }; _proto.peek = function peek(offset) { if (offset === void 0) { offset = 0; } return this.stack[this[REGISTERS][$sp] - offset]; }; _proto.get = function get(offset, base) { if (base === void 0) { base = this[REGISTERS][$fp]; } return this.stack[base + offset]; }; _proto.set = function set(value, offset, base) { if (base === void 0) { base = this[REGISTERS][$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[REGISTERS][$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[REGISTERS][$fp], this[REGISTERS][$sp] + 1); }; return EvaluationStackImpl; }(); export { EvaluationStackImpl as default }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL3N0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLFNBQUEsR0FBQSxFQUFBLEdBQUEsUUFBQSxhQUFBO0FBQ0EsU0FBQSxTQUFBLFFBQUEsWUFBQTtBQUNBLFNBQUEseUJBQUEsUUFBQSxhQUFBOztJQWtCYyxtQjtBQU9aO0FBQ0EsK0JBQW9CLEtBQXBCLEVBQUEsU0FBQSxFQUF1RTtBQUFBLFFBQW5ELEtBQW1EO0FBQW5ELE1BQUEsS0FBbUQsR0FBdkUsRUFBdUU7QUFBQTs7QUFBbkQsU0FBQSxLQUFBLEdBQUEsS0FBQTtBQUNsQixTQUFBLFNBQUEsSUFBQSxTQUFBOztBQUVBLFFBQUE7QUFBQTtBQUFBLE1BQWlCO0FBQ2YsUUFBQSxNQUFNLENBQU4sSUFBQSxDQUFBLElBQUE7QUFDRDtBQUNGOztzQkFiRCxPLEdBQUEsaUJBQUEsUUFBQSxFQUFrQztBQUNoQyxXQUFPLElBQUEsSUFBQSxDQUFTLFFBQVEsQ0FBakIsS0FBUyxFQUFULEVBQTJCLHlCQUF5QixDQUFDLFFBQVEsQ0FBUixNQUFBLEdBQTVELENBQTJELENBQXBELENBQVA7QUFDRCxHOzs7O1NBYUQsSSxHQUFBLGNBQUksS0FBSixFQUFtQjtBQUNqQixTQUFBLEtBQUEsQ0FBVyxFQUFFLEtBQUEsU0FBQSxFQUFiLEdBQWEsQ0FBYixJQUFBLEtBQUE7QUFDRCxHOztTQUVELEcsR0FBQSxhQUFJLFFBQUosRUFBbUM7QUFBQSxRQUEvQixRQUErQjtBQUEvQixNQUFBLFFBQStCLEdBQXBCLEtBQUEsU0FBQSxFQUFaLEdBQVksQ0FBb0I7QUFBQTs7QUFDakMsU0FBQSxLQUFBLENBQVcsRUFBRSxLQUFBLFNBQUEsRUFBYixHQUFhLENBQWIsSUFBcUMsS0FBQSxLQUFBLENBQXJDLFFBQXFDLENBQXJDO0FBQ0QsRzs7U0FFRCxJLEdBQUEsY0FBSSxJQUFKLEVBQUksRUFBSixFQUE2QjtBQUMzQixTQUFBLEtBQUEsQ0FBQSxFQUFBLElBQWlCLEtBQUEsS0FBQSxDQUFqQixJQUFpQixDQUFqQjtBQUNELEc7O1NBRUQsRyxHQUFBLGFBQU8sQ0FBUCxFQUFZO0FBQUEsUUFBTCxDQUFLO0FBQUwsTUFBQSxDQUFLLEdBQVQsQ0FBUztBQUFBOztBQUNWLFFBQUksR0FBRyxHQUFHLEtBQUEsS0FBQSxDQUFXLEtBQUEsU0FBQSxFQUFyQixHQUFxQixDQUFYLENBQVY7QUFDQSxTQUFBLFNBQUEsRUFBQSxHQUFBLEtBQUEsQ0FBQTtBQUNBLFdBQUEsR0FBQTtBQUNELEc7O1NBRUQsSSxHQUFBLGNBQVEsTUFBUixFQUFrQjtBQUFBLFFBQVYsTUFBVTtBQUFWLE1BQUEsTUFBVSxHQUFkLENBQWM7QUFBQTs7QUFDaEIsV0FBTyxLQUFBLEtBQUEsQ0FBVyxLQUFBLFNBQUEsRUFBQSxHQUFBLElBQWxCLE1BQU8sQ0FBUDtBQUNELEc7O1NBRUQsRyxHQUFBLGFBQUcsTUFBSCxFQUF1QixJQUF2QixFQUFrRDtBQUFBLFFBQTNCLElBQTJCO0FBQTNCLE1BQUEsSUFBMkIsR0FBcEIsS0FBQSxTQUFBLEVBQTNCLEdBQTJCLENBQW9CO0FBQUE7O0FBQ2hELFdBQU8sS0FBQSxLQUFBLENBQVcsSUFBSSxHQUF0QixNQUFPLENBQVA7QUFDRCxHOztTQUVELEcsR0FBQSxhQUFHLEtBQUgsRUFBRyxNQUFILEVBQW9DLElBQXBDLEVBQStEO0FBQUEsUUFBM0IsSUFBMkI7QUFBM0IsTUFBQSxJQUEyQixHQUFwQixLQUFBLFNBQUEsRUFBeEMsR0FBd0MsQ0FBb0I7QUFBQTs7QUFDN0QsU0FBQSxLQUFBLENBQVcsSUFBSSxHQUFmLE1BQUEsSUFBQSxLQUFBO0FBQ0QsRzs7U0FFRCxLLEdBQUEsZUFBSyxLQUFMLEVBQUssR0FBTCxFQUE2QztBQUMzQyxXQUFPLEtBQUEsS0FBQSxDQUFBLEtBQUEsQ0FBQSxLQUFBLEVBQVAsR0FBTyxDQUFQO0FBQ0QsRzs7U0FFRCxPLEdBQUEsaUJBQU8sS0FBUCxFQUFxQjtBQUNuQixRQUFJLEdBQUcsR0FBRyxLQUFBLFNBQUEsRUFBQSxHQUFBLElBQVYsQ0FBQTtBQUNBLFFBQUksS0FBSyxHQUFHLEdBQUcsR0FBZixLQUFBO0FBQ0EsV0FBTyxLQUFBLEtBQUEsQ0FBQSxLQUFBLENBQUEsS0FBQSxFQUFQLEdBQU8sQ0FBUDtBQUNELEc7O1NBRUQsSyxHQUFBLGlCQUFLO0FBQ0gsU0FBQSxLQUFBLENBQUEsTUFBQSxHQUFBLENBQUE7QUFDRCxHOztTQUVELE8sR0FBQSxtQkFBTztBQUNMLFdBQU8sS0FBQSxLQUFBLENBQUEsS0FBQSxDQUFpQixLQUFBLFNBQUEsRUFBakIsR0FBaUIsQ0FBakIsRUFBdUMsS0FBQSxTQUFBLEVBQUEsR0FBQSxJQUE5QyxDQUFPLENBQVA7QUFDRCxHOzs7OztTQTlEVyxtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExPQ0FMX0RFQlVHIH0gZnJvbSAnQGdsaW1tZXIvbG9jYWwtZGVidWctZmxhZ3MnO1xuaW1wb3J0IHsgJGZwLCAkc3AsIE1hY2hpbmVSZWdpc3RlciB9IGZyb20gJ0BnbGltbWVyL3ZtJztcbmltcG9ydCB7IFJFR0lTVEVSUyB9IGZyb20gJy4uL3N5bWJvbHMnO1xuaW1wb3J0IHsgaW5pdGlhbGl6ZVJlZ2lzdGVyc1dpdGhTUCwgTG93TGV2ZWxSZWdpc3RlcnMgfSBmcm9tICcuL2xvdy1sZXZlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXZhbHVhdGlvblN0YWNrIHtcbiAgW1JFR0lTVEVSU106IExvd0xldmVsUmVnaXN0ZXJzO1xuXG4gIHB1c2godmFsdWU6IHVua25vd24pOiB2b2lkO1xuICBkdXAocG9zaXRpb24/OiBNYWNoaW5lUmVnaXN0ZXIpOiB2b2lkO1xuICBjb3B5KGZyb206IG51bWJlciwgdG86IG51bWJlcik6IHZvaWQ7XG4gIHBvcDxUPihuPzogbnVtYmVyKTogVDtcbiAgcGVlazxUPihvZmZzZXQ/OiBudW1iZXIpOiBUO1xuICBnZXQ8VD4ob2Zmc2V0OiBudW1iZXIsIGJhc2U/OiBudW1iZXIpOiBUO1xuICBzZXQodmFsdWU6IHVua25vd24sIG9mZnNldDogbnVtYmVyLCBiYXNlPzogbnVtYmVyKTogdm9pZDtcbiAgc2xpY2U8VCA9IHVua25vd24+KHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKTogVFtdO1xuICBjYXB0dXJlKGl0ZW1zOiBudW1iZXIpOiB1bmtub3duW107XG4gIHJlc2V0KCk6IHZvaWQ7XG4gIHRvQXJyYXkoKTogdW5rbm93bltdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFdmFsdWF0aW9uU3RhY2tJbXBsIGltcGxlbWVudHMgRXZhbHVhdGlvblN0YWNrIHtcbiAgc3RhdGljIHJlc3RvcmUoc25hcHNob3Q6IHVua25vd25bXSk6IEV2YWx1YXRpb25TdGFja0ltcGwge1xuICAgIHJldHVybiBuZXcgdGhpcyhzbmFwc2hvdC5zbGljZSgpLCBpbml0aWFsaXplUmVnaXN0ZXJzV2l0aFNQKHNuYXBzaG90Lmxlbmd0aCAtIDEpKTtcbiAgfVxuXG4gIHJlYWRvbmx5IFtSRUdJU1RFUlNdOiBMb3dMZXZlbFJlZ2lzdGVycztcblxuICAvLyBmcCAtPiBzcFxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0YWNrOiB1bmtub3duW10gPSBbXSwgcmVnaXN0ZXJzOiBMb3dMZXZlbFJlZ2lzdGVycykge1xuICAgIHRoaXNbUkVHSVNURVJTXSA9IHJlZ2lzdGVycztcblxuICAgIGlmIChMT0NBTF9ERUJVRykge1xuICAgICAgT2JqZWN0LnNlYWwodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgcHVzaCh2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuICAgIHRoaXMuc3RhY2tbKyt0aGlzW1JFR0lTVEVSU11bJHNwXV0gPSB2YWx1ZTtcbiAgfVxuXG4gIGR1cChwb3NpdGlvbiA9IHRoaXNbUkVHSVNURVJTXVskc3BdKTogdm9pZCB7XG4gICAgdGhpcy5zdGFja1srK3RoaXNbUkVHSVNURVJTXVskc3BdXSA9IHRoaXMuc3RhY2tbcG9zaXRpb25dO1xuICB9XG5cbiAgY29weShmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnN0YWNrW3RvXSA9IHRoaXMuc3RhY2tbZnJvbV07XG4gIH1cblxuICBwb3A8VD4obiA9IDEpOiBUIHtcbiAgICBsZXQgdG9wID0gdGhpcy5zdGFja1t0aGlzW1JFR0lTVEVSU11bJHNwXV0gYXMgVDtcbiAgICB0aGlzW1JFR0lTVEVSU11bJHNwXSAtPSBuO1xuICAgIHJldHVybiB0b3A7XG4gIH1cblxuICBwZWVrPFQ+KG9mZnNldCA9IDApOiBUIHtcbiAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzW1JFR0lTVEVSU11bJHNwXSAtIG9mZnNldF0gYXMgVDtcbiAgfVxuXG4gIGdldDxUPihvZmZzZXQ6IG51bWJlciwgYmFzZSA9IHRoaXNbUkVHSVNURVJTXVskZnBdKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2tbYmFzZSArIG9mZnNldF0gYXMgVDtcbiAgfVxuXG4gIHNldCh2YWx1ZTogdW5rbm93biwgb2Zmc2V0OiBudW1iZXIsIGJhc2UgPSB0aGlzW1JFR0lTVEVSU11bJGZwXSkge1xuICAgIHRoaXMuc3RhY2tbYmFzZSArIG9mZnNldF0gPSB2YWx1ZTtcbiAgfVxuXG4gIHNsaWNlPFQgPSB1bmtub3duPihzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcik6IFRbXSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2suc2xpY2Uoc3RhcnQsIGVuZCkgYXMgVFtdO1xuICB9XG5cbiAgY2FwdHVyZShpdGVtczogbnVtYmVyKTogdW5rbm93bltdIHtcbiAgICBsZXQgZW5kID0gdGhpc1tSRUdJU1RFUlNdWyRzcF0gKyAxO1xuICAgIGxldCBzdGFydCA9IGVuZCAtIGl0ZW1zO1xuICAgIHJldHVybiB0aGlzLnN0YWNrLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5zdGFjay5sZW5ndGggPSAwO1xuICB9XG5cbiAgdG9BcnJheSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGFjay5zbGljZSh0aGlzW1JFR0lTVEVSU11bJGZwXSwgdGhpc1tSRUdJU1RFUlNdWyRzcF0gKyAxKTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==