UNPKG

11.4 kBJavaScriptView Raw
1import { debugAssert as assert } from './assert';
2export function isHandle(value) {
3 return value >= 0;
4}
5export function isNonPrimitiveHandle(value) {
6 return value > 3
7 /* ENCODED_UNDEFINED_HANDLE */
8 ;
9}
10export function constants() {
11 for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {
12 values[_key] = arguments[_key];
13 }
14
15 return [false, true, null, undefined].concat(values);
16}
17export function isSmallInt(value) {
18 return value % 1 === 0 && value <= 536870911
19 /* MAX_INT */
20 && value >= -536870912
21 /* MIN_INT */
22 ;
23}
24export function encodeNegative(num) {
25 if (false
26 /* LOCAL_DEBUG */
27 ) {
28 assert(num % 1 === 0 && num >= -536870912
29 /* MIN_INT */
30 && num < 0, "Could not encode negative: " + num);
31 }
32
33 return num & -536870913
34 /* SIGN_BIT */
35 ;
36}
37export function decodeNegative(num) {
38 if (false
39 /* LOCAL_DEBUG */
40 ) {
41 assert(num % 1 === 0 && num < ~536870911
42 /* MAX_INT */
43 && num >= -1073741824
44 /* MIN_SMI */
45 , "Could not decode negative: " + num);
46 }
47
48 return num | ~-536870913
49 /* SIGN_BIT */
50 ;
51}
52export function encodePositive(num) {
53 if (false
54 /* LOCAL_DEBUG */
55 ) {
56 assert(num % 1 === 0 && num >= 0 && num <= 536870911
57 /* MAX_INT */
58 , "Could not encode positive: " + num);
59 }
60
61 return ~num;
62}
63export function decodePositive(num) {
64 if (false
65 /* LOCAL_DEBUG */
66 ) {
67 assert(num % 1 === 0 && num <= 0 && num >= ~536870911
68 /* MAX_INT */
69 , "Could not decode positive: " + num);
70 }
71
72 return ~num;
73}
74export function encodeHandle(num) {
75 if (false
76 /* LOCAL_DEBUG */
77 ) {
78 assert(num % 1 === 0 && num >= 0 && num <= 1073741823
79 /* MAX_SMI */
80 , "Could not encode handle: " + num);
81 }
82
83 return num;
84}
85export function decodeHandle(num) {
86 if (false
87 /* LOCAL_DEBUG */
88 ) {
89 assert(num % 1 === 0 && num <= 1073741823
90 /* MAX_SMI */
91 && num >= 0, "Could not decode handle: " + num);
92 }
93
94 return num;
95}
96export function encodeImmediate(num) {
97 num |= 0;
98 return num < 0 ? encodeNegative(num) : encodePositive(num);
99}
100export function decodeImmediate(num) {
101 num |= 0;
102 return num > -536870913
103 /* SIGN_BIT */
104 ? decodePositive(num) : decodeNegative(num);
105} // Warm
106
107[1, 2, 3].forEach(function (x) {
108 return decodeHandle(encodeHandle(x));
109});
110[1, -1].forEach(function (x) {
111 return decodeImmediate(encodeImmediate(x));
112});
113//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3V0aWwvbGliL2ltbWVkaWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxTQUFTLFdBQVcsSUFBcEIsTUFBQSxRQUFBLFVBQUE7QUF3REEsT0FBTSxTQUFBLFFBQUEsQ0FBQSxLQUFBLEVBQWdDO0FBQ3BDLFNBQU8sS0FBSyxJQUFaLENBQUE7QUFDRDtBQUVELE9BQU0sU0FBQSxvQkFBQSxDQUFBLEtBQUEsRUFBNEM7QUFDaEQsU0FBTyxLQUFLLEdBQUE7QUFBQTtBQUFaO0FBQ0Q7QUFFRCxPQUFNLFNBQUEsU0FBQSxHQUF3QztBQUFBLG9DQUF4QyxNQUF3QztBQUF4QyxJQUFBLE1BQXdDO0FBQUE7O0FBQzVDLFVBQU8sS0FBUCxFQUFPLElBQVAsRUFBTyxJQUFQLEVBQU8sU0FBUCxTQUFBLE1BQUE7QUFDRDtBQUVELE9BQU0sU0FBQSxVQUFBLENBQUEsS0FBQSxFQUFrQztBQUN0QyxTQUNFLEtBQUssR0FBTCxDQUFBLEtBQUEsQ0FBQSxJQUFtQixLQUFLLElBQUE7QUFBQTtBQUF4QixLQUEwRCxLQUFLLElBQUEsQ0FBQTtBQUFBO0FBRGpFO0FBR0Q7QUFFRCxPQUFNLFNBQUEsY0FBQSxDQUFBLEdBQUEsRUFBb0M7QUFDeEMsTUFBQTtBQUFBO0FBQUEsSUFBaUI7QUFDZixNQUFBLE1BQU0sQ0FDSixHQUFHLEdBQUgsQ0FBQSxLQUFBLENBQUEsSUFBaUIsR0FBRyxJQUFBLENBQUE7QUFBQTtBQUFwQixTQUFzRCxHQUFHLEdBRHJELENBQUEsa0NBQU4sR0FBTSxDQUFOO0FBSUQ7O0FBRUQsU0FBTyxHQUFHLEdBQUEsQ0FBQTtBQUFBO0FBQVY7QUFDRDtBQUVELE9BQU0sU0FBQSxjQUFBLENBQUEsR0FBQSxFQUFvQztBQUN4QyxNQUFBO0FBQUE7QUFBQSxJQUFpQjtBQUNmLE1BQUEsTUFBTSxDQUNKLEdBQUcsR0FBSCxDQUFBLEtBQUEsQ0FBQSxJQUFpQixHQUFHLEdBQUcsQ0FBQTtBQUFBO0FBQXZCLFNBQXNELEdBQUcsSUFBQSxDQUFBO0FBQUE7QUFEckQsd0NBQU4sR0FBTSxDQUFOO0FBSUQ7O0FBRUQsU0FBTyxHQUFHLEdBQUcsQ0FBQSxDQUFBO0FBQUE7QUFBYjtBQUNEO0FBRUQsT0FBTSxTQUFBLGNBQUEsQ0FBQSxHQUFBLEVBQW9DO0FBQ3hDLE1BQUE7QUFBQTtBQUFBLElBQWlCO0FBQ2YsTUFBQSxNQUFNLENBQ0osR0FBRyxHQUFILENBQUEsS0FBQSxDQUFBLElBQWlCLEdBQUcsSUFBcEIsQ0FBQSxJQUE2QixHQUFHLElBQUE7QUFBQTtBQUQ1Qix3Q0FBTixHQUFNLENBQU47QUFJRDs7QUFFRCxTQUFPLENBQVAsR0FBQTtBQUNEO0FBRUQsT0FBTSxTQUFBLGNBQUEsQ0FBQSxHQUFBLEVBQW9DO0FBQ3hDLE1BQUE7QUFBQTtBQUFBLElBQWlCO0FBQ2YsTUFBQSxNQUFNLENBQ0osR0FBRyxHQUFILENBQUEsS0FBQSxDQUFBLElBQWlCLEdBQUcsSUFBcEIsQ0FBQSxJQUE2QixHQUFHLElBQUksQ0FBQTtBQUFBO0FBRGhDLHdDQUFOLEdBQU0sQ0FBTjtBQUlEOztBQUVELFNBQU8sQ0FBUCxHQUFBO0FBQ0Q7QUFFRCxPQUFNLFNBQUEsWUFBQSxDQUFBLEdBQUEsRUFBa0M7QUFDdEMsTUFBQTtBQUFBO0FBQUEsSUFBaUI7QUFDZixNQUFBLE1BQU0sQ0FDSixHQUFHLEdBQUgsQ0FBQSxLQUFBLENBQUEsSUFBaUIsR0FBRyxJQUFwQixDQUFBLElBQTZCLEdBQUcsSUFBQTtBQUFBO0FBRDVCLHNDQUFOLEdBQU0sQ0FBTjtBQUlEOztBQUVELFNBQUEsR0FBQTtBQUNEO0FBRUQsT0FBTSxTQUFBLFlBQUEsQ0FBQSxHQUFBLEVBQWtDO0FBQ3RDLE1BQUE7QUFBQTtBQUFBLElBQWlCO0FBQ2YsTUFBQSxNQUFNLENBQ0osR0FBRyxHQUFILENBQUEsS0FBQSxDQUFBLElBQWlCLEdBQUcsSUFBQTtBQUFBO0FBQXBCLFNBQXNELEdBQUcsSUFEckQsQ0FBQSxnQ0FBTixHQUFNLENBQU47QUFJRDs7QUFFRCxTQUFBLEdBQUE7QUFDRDtBQUVELE9BQU0sU0FBQSxlQUFBLENBQUEsR0FBQSxFQUFxQztBQUN6QyxFQUFBLEdBQUcsSUFBSCxDQUFBO0FBQ0EsU0FBTyxHQUFHLEdBQUgsQ0FBQSxHQUFVLGNBQWMsQ0FBeEIsR0FBd0IsQ0FBeEIsR0FBZ0MsY0FBYyxDQUFyRCxHQUFxRCxDQUFyRDtBQUNEO0FBRUQsT0FBTSxTQUFBLGVBQUEsQ0FBQSxHQUFBLEVBQXFDO0FBQ3pDLEVBQUEsR0FBRyxJQUFILENBQUE7QUFDQSxTQUFPLEdBQUcsR0FBQSxDQUFBO0FBQUE7QUFBSCxJQUFvQyxjQUFjLENBQWxELEdBQWtELENBQWxELEdBQTBELGNBQWMsQ0FBL0UsR0FBK0UsQ0FBL0U7RUFHRjs7QUFDQSxDQUFBLENBQUEsRUFBQSxDQUFBLEVBQUEsQ0FBQSxFQUFBLE9BQUEsQ0FBbUIsVUFBQSxDQUFEO0FBQUEsU0FBTyxZQUFZLENBQUMsWUFBWSxDQUFsRCxDQUFrRCxDQUFiLENBQW5CO0FBQUEsQ0FBbEI7QUFDQSxDQUFBLENBQUEsRUFBSSxDQUFKLENBQUEsRUFBQSxPQUFBLENBQWlCLFVBQUEsQ0FBRDtBQUFBLFNBQU8sZUFBZSxDQUFDLGVBQWUsQ0FBdEQsQ0FBc0QsQ0FBaEIsQ0FBdEI7QUFBQSxDQUFoQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExPQ0FMX0RFQlVHIH0gZnJvbSAnQGdsaW1tZXIvbG9jYWwtZGVidWctZmxhZ3MnO1xuaW1wb3J0IHsgZGVidWdBc3NlcnQgYXMgYXNzZXJ0IH0gZnJvbSAnLi9hc3NlcnQnO1xuXG4vKlxuICBFbmNvZGluZyBub3Rlc1xuXG4gIFdlIHVzZSAzMCBiaXQgaW50ZWdlcnMgZm9yIGVuY29kaW5nLCBzbyB0aGF0IHdlIGRvbid0IGV2ZXIgZW5jb2RlIGEgbm9uLVNNSVxuICBpbnRlZ2VyIHRvIHB1c2ggb24gdGhlIHN0YWNrLlxuXG4gIEhhbmRsZXMgYXJlID49IDBcbiAgSW1tZWRpYXRlcyBhcmUgPCAwXG5cbiAgVHJ1ZSwgRmFsc2UsIFVuZGVmaW5lZCBhbmQgTnVsbCBhcmUgcHVzaGVkIGFzIGhhbmRsZXMgaW50byB0aGUgc3ltYm9sIHRhYmxlLFxuICB3aXRoIHdlbGwga25vd24gaGFuZGxlcyAoMCwgMSwgMiwgMylcblxuICBUaGUgbmVnYXRpdmUgc3BhY2UgaXMgZGl2aWRlZCBpbnRvIHBvc2l0aXZlcyBhbmQgbmVnYXRpdmVzLiBQb3NpdGl2ZXMgYXJlXG4gIGhpZ2hlciBudW1iZXJzICgtMSwgLTIsIC0zLCBldGMpLCBuZWdhdGl2ZXMgYXJlIGxvd2VyLlxuXG4gIFdlIG9ubHkgZW5jb2RlIGltbWVkaWF0ZXMgZm9yIHR3byByZWFzb25zOlxuXG4gIDEuIFRvIHRyYW5zZmVyIG92ZXIgdGhlIHdpcmUsIHNvIHRoZXkncmUgc21hbGxlciBpbiBnZW5lcmFsXG4gIDIuIFdoZW4gcHVzaGluZyB2YWx1ZXMgb250byB0aGUgc3RhY2sgZnJvbSB0aGUgbG93IGxldmVsL2lubmVyIFZNLCB3aGljaCBtYXlcbiAgICAgYmUgY29udmVydGVkIGludG8gV0FTTSBvbmUgZGF5LlxuXG4gIFRoaXMgYWxsb3dzIHRoZSBsb3ctbGV2ZWwgVk0gdG8gYWx3YXlzIHVzZSBTTUlzLCBhbmQgdG8gbWluaW1pemUgdXNpbmcgSlNcbiAgdmFsdWVzIHZpYSBoYW5kbGVzIGZvciB0aGluZ3MgbGlrZSB0aGUgc3RhY2sgcG9pbnRlciBhbmQgZnJhbWUgcG9pbnRlci5cbiAgRXh0ZXJuYWxseSwgbW9zdCBjb2RlIHB1c2hlcyB2YWx1ZXMgYXMgSlMgdmFsdWVzLCBleGNlcHQgd2hlbiBiZWluZyBwdWxsZWRcbiAgZnJvbSB0aGUgYXBwZW5kIGJ5dGUgY29kZSB3aGVyZSBpdCB3YXMgYWxyZWFkeSBlbmNvZGVkLlxuXG4gIExvZ2ljYWxseSwgdGhpcyBpcyBiZWNhdXNlIHRoZSBsb3cgbGV2ZWwgVk0gZG9lc24ndCByZWFsbHkgY2FyZSBhYm91dCB0aGVzZVxuICBoaWdoZXIgbGV2ZWwgdmFsdWVzLiBGb3IgaW5zdGFuY2UsIHRoZSByZXN1bHQgb2YgYSB1c2VybGFuZCBoZWxwZXIgbWF5IGJlIGFcbiAgbnVtYmVyLCBvciBhIGJvb2xlYW4sIG9yIHVuZGVmaW5lZC9udWxsLCBidXQgaXQncyBleHRyYSB3b3JrIHRvIGZpZ3VyZSB0aGF0XG4gIG91dCBhbmQgcHVzaCBpdCBjb3JyZWN0bHksIHZzLiBqdXN0IHB1c2hpbmcgdGhlIHZhbHVlIGFzIGEgSlMgdmFsdWUgd2l0aCBhXG4gIGhhbmRsZS5cblxuICBOb3RlOiBUaGUgZGV0YWlscyBjb3VsZCBjaGFuZ2UgaGVyZSBpbiB0aGUgZnV0dXJlLCB0aGlzIGlzIGp1c3QgdGhlIGN1cnJlbnRcbiAgc3RyYXRlZ3kuXG4qL1xuXG5leHBvcnQgY29uc3QgZW51bSBJbW1lZGlhdGVDb25zdGFudHMge1xuICBNQVhfU01JID0gMiAqKiAzMCAtIDEsXG4gIE1JTl9TTUkgPSB+TUFYX1NNSSxcbiAgU0lHTl9CSVQgPSB+KDIgKiogMjkpLFxuICBNQVhfSU5UID0gflNJR05fQklUIC0gMSxcbiAgTUlOX0lOVCA9IH5NQVhfSU5ULFxuXG4gIEZBTFNFX0hBTkRMRSA9IDAsXG4gIFRSVUVfSEFORExFID0gMSxcbiAgTlVMTF9IQU5ETEUgPSAyLFxuICBVTkRFRklORURfSEFORExFID0gMyxcblxuICBFTkNPREVEX0ZBTFNFX0hBTkRMRSA9IEZBTFNFX0hBTkRMRSxcbiAgRU5DT0RFRF9UUlVFX0hBTkRMRSA9IFRSVUVfSEFORExFLFxuICBFTkNPREVEX05VTExfSEFORExFID0gTlVMTF9IQU5ETEUsXG4gIEVOQ09ERURfVU5ERUZJTkVEX0hBTkRMRSA9IFVOREVGSU5FRF9IQU5ETEUsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0hhbmRsZSh2YWx1ZTogbnVtYmVyKSB7XG4gIHJldHVybiB2YWx1ZSA+PSAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb25QcmltaXRpdmVIYW5kbGUodmFsdWU6IG51bWJlcikge1xuICByZXR1cm4gdmFsdWUgPiBJbW1lZGlhdGVDb25zdGFudHMuRU5DT0RFRF9VTkRFRklORURfSEFORExFO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RhbnRzKC4uLnZhbHVlczogdW5rbm93bltdKTogdW5rbm93bltdIHtcbiAgcmV0dXJuIFtmYWxzZSwgdHJ1ZSwgbnVsbCwgdW5kZWZpbmVkLCAuLi52YWx1ZXNdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTbWFsbEludCh2YWx1ZTogbnVtYmVyKSB7XG4gIHJldHVybiAoXG4gICAgdmFsdWUgJSAxID09PSAwICYmIHZhbHVlIDw9IEltbWVkaWF0ZUNvbnN0YW50cy5NQVhfSU5UICYmIHZhbHVlID49IEltbWVkaWF0ZUNvbnN0YW50cy5NSU5fSU5UXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVOZWdhdGl2ZShudW06IG51bWJlcikge1xuICBpZiAoTE9DQUxfREVCVUcpIHtcbiAgICBhc3NlcnQoXG4gICAgICBudW0gJSAxID09PSAwICYmIG51bSA+PSBJbW1lZGlhdGVDb25zdGFudHMuTUlOX0lOVCAmJiBudW0gPCAwLFxuICAgICAgYENvdWxkIG5vdCBlbmNvZGUgbmVnYXRpdmU6ICR7bnVtfWBcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG51bSAmIEltbWVkaWF0ZUNvbnN0YW50cy5TSUdOX0JJVDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZU5lZ2F0aXZlKG51bTogbnVtYmVyKSB7XG4gIGlmIChMT0NBTF9ERUJVRykge1xuICAgIGFzc2VydChcbiAgICAgIG51bSAlIDEgPT09IDAgJiYgbnVtIDwgfkltbWVkaWF0ZUNvbnN0YW50cy5NQVhfSU5UICYmIG51bSA+PSBJbW1lZGlhdGVDb25zdGFudHMuTUlOX1NNSSxcbiAgICAgIGBDb3VsZCBub3QgZGVjb2RlIG5lZ2F0aXZlOiAke251bX1gXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBudW0gfCB+SW1tZWRpYXRlQ29uc3RhbnRzLlNJR05fQklUO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlUG9zaXRpdmUobnVtOiBudW1iZXIpIHtcbiAgaWYgKExPQ0FMX0RFQlVHKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgbnVtICUgMSA9PT0gMCAmJiBudW0gPj0gMCAmJiBudW0gPD0gSW1tZWRpYXRlQ29uc3RhbnRzLk1BWF9JTlQsXG4gICAgICBgQ291bGQgbm90IGVuY29kZSBwb3NpdGl2ZTogJHtudW19YFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gfm51bTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVBvc2l0aXZlKG51bTogbnVtYmVyKSB7XG4gIGlmIChMT0NBTF9ERUJVRykge1xuICAgIGFzc2VydChcbiAgICAgIG51bSAlIDEgPT09IDAgJiYgbnVtIDw9IDAgJiYgbnVtID49IH5JbW1lZGlhdGVDb25zdGFudHMuTUFYX0lOVCxcbiAgICAgIGBDb3VsZCBub3QgZGVjb2RlIHBvc2l0aXZlOiAke251bX1gXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiB+bnVtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlSGFuZGxlKG51bTogbnVtYmVyKSB7XG4gIGlmIChMT0NBTF9ERUJVRykge1xuICAgIGFzc2VydChcbiAgICAgIG51bSAlIDEgPT09IDAgJiYgbnVtID49IDAgJiYgbnVtIDw9IEltbWVkaWF0ZUNvbnN0YW50cy5NQVhfU01JLFxuICAgICAgYENvdWxkIG5vdCBlbmNvZGUgaGFuZGxlOiAke251bX1gXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBudW07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVIYW5kbGUobnVtOiBudW1iZXIpIHtcbiAgaWYgKExPQ0FMX0RFQlVHKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgbnVtICUgMSA9PT0gMCAmJiBudW0gPD0gSW1tZWRpYXRlQ29uc3RhbnRzLk1BWF9TTUkgJiYgbnVtID49IDAsXG4gICAgICBgQ291bGQgbm90IGRlY29kZSBoYW5kbGU6ICR7bnVtfWBcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG51bTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZUltbWVkaWF0ZShudW06IG51bWJlcikge1xuICBudW0gfD0gMDtcbiAgcmV0dXJuIG51bSA8IDAgPyBlbmNvZGVOZWdhdGl2ZShudW0pIDogZW5jb2RlUG9zaXRpdmUobnVtKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUltbWVkaWF0ZShudW06IG51bWJlcikge1xuICBudW0gfD0gMDtcbiAgcmV0dXJuIG51bSA+IEltbWVkaWF0ZUNvbnN0YW50cy5TSUdOX0JJVCA/IGRlY29kZVBvc2l0aXZlKG51bSkgOiBkZWNvZGVOZWdhdGl2ZShudW0pO1xufVxuXG4vLyBXYXJtXG5bMSwgMiwgM10uZm9yRWFjaCgoeCkgPT4gZGVjb2RlSGFuZGxlKGVuY29kZUhhbmRsZSh4KSkpO1xuWzEsIC0xXS5mb3JFYWNoKCh4KSA9PiBkZWNvZGVJbW1lZGlhdGUoZW5jb2RlSW1tZWRpYXRlKHgpKSk7XG4iXSwic291cmNlUm9vdCI6IiJ9
\No newline at end of file