@typeberry/lib 0.5.8-0dea783 → 0.5.8-857ec24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typeberry/lib",
3
- "version": "0.5.8-0dea783",
3
+ "version": "0.5.8-857ec24",
4
4
  "description": "Typeberry Library",
5
5
  "main": "./bin/lib/index.js",
6
6
  "types": "./bin/lib/index.d.ts",
@@ -52,7 +52,7 @@ export class HostCallsExecutor {
52
52
  this.ioTracer?.logPanic(pvmInstance.getExitParam() ?? 0, pc, gas, registers);
53
53
  return { consumedGas, status: ReturnStatus.PANIC };
54
54
  }
55
- async execute(pvmInstance) {
55
+ async execute(pvmInstance, initialPc) {
56
56
  const ioTracker = this.ioTracer?.tracker() ?? null;
57
57
  const registers = new HostCallRegisters(pvmInstance.registers.getAllEncoded());
58
58
  registers.ioTracker = ioTracker;
@@ -60,7 +60,7 @@ export class HostCallsExecutor {
60
60
  memory.ioTracker = ioTracker;
61
61
  const gas = pvmInstance.gas;
62
62
  // log start of execution (note the PVM initialisation should be logged already)
63
- this.ioTracer?.logStart(pvmInstance.getPC(), pvmInstance.gas.get(), registers);
63
+ this.ioTracer?.logStart(initialPc, pvmInstance.gas.get(), registers);
64
64
  for (;;) {
65
65
  // execute program as much as we can
66
66
  pvmInstance.runProgram();
@@ -120,7 +120,7 @@ export class HostCallsExecutor {
120
120
  pvmInstance.resetJam(program, args, initialPc, initialGas);
121
121
  try {
122
122
  this.ioTracer?.logProgram(program, args);
123
- return await this.execute(pvmInstance);
123
+ return await this.execute(pvmInstance, initialPc);
124
124
  }
125
125
  finally {
126
126
  this.pvmInstanceManager.releaseInstance(pvmInstance);
@@ -1 +1 @@
1
- {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../../../packages/core/utils/debug.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,YAExB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG,cAA6F,CAAC;AAE9G;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CACnB,OAAO,EAAE,oBAAoB,EAC7B,SAAS,EAAE,OAAO,EAClB,GAAG,IAAI,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,SAAS,IAAI,IAAI,CAO3B;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAE/C;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,QAKpE;AAED,6BAA6B;AAC7B,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAqDzC;AAED,sEAAsE;AACtE,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,gBAGjC;AAED,mFAAmF;AACnF,8BAAsB,SAAS;IAC7B,QAAQ;CAGT;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;;EAMpC"}
1
+ {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../../../packages/core/utils/debug.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,YAExB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG,cAA6F,CAAC;AAE9G;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CACnB,OAAO,EAAE,oBAAoB,EAC7B,SAAS,EAAE,OAAO,EAClB,GAAG,IAAI,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,SAAS,IAAI,IAAI,CAO3B;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAE/C;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,QAKpE;AAED,6BAA6B;AAC7B,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAEzC;AAkED,sEAAsE;AACtE,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,gBAGjC;AAED,mFAAmF;AACnF,8BAAsB,SAAS;IAC7B,QAAQ;CAGT;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;;EAMpC"}
@@ -55,6 +55,12 @@ export function assertEmpty(value) {
55
55
  }
56
56
  /** Debug print an object. */
57
57
  export function inspect(val) {
58
+ return inspectInternal(val, new WeakSet());
59
+ }
60
+ /**
61
+ * Internal implementation of inspect with circular reference detection.
62
+ */
63
+ function inspectInternal(val, seen) {
58
64
  const nest = (v) => v
59
65
  .split("\n")
60
66
  .map((x) => ` ${x}`)
@@ -67,10 +73,10 @@ export function inspect(val) {
67
73
  return "<undefined>";
68
74
  }
69
75
  if (Array.isArray(val)) {
70
- return `[${val.map((x) => inspect(x))}]`;
76
+ return `[${val.map((x) => inspectInternal(x, seen))}]`;
71
77
  }
72
78
  if (val instanceof Map) {
73
- return inspect(Array.from(val.entries()));
79
+ return inspectInternal(Array.from(val.entries()), seen);
74
80
  }
75
81
  if (typeof val === "number") {
76
82
  return `${val} (0x${val.toString(16)})`;
@@ -78,6 +84,11 @@ export function inspect(val) {
78
84
  if (typeof val !== "object") {
79
85
  return `${val}`;
80
86
  }
87
+ // Check for circular references
88
+ if (seen.has(val)) {
89
+ return "<circular>";
90
+ }
91
+ seen.add(val);
81
92
  if ("toString" in val &&
82
93
  Object.prototype.toString !== val.toString &&
83
94
  WithDebug.prototype.toString !== val.toString) {
@@ -90,7 +101,7 @@ export function inspect(val) {
90
101
  for (const k of keys) {
91
102
  if (typeof k === "string") {
92
103
  v += oneLine ? "" : "\n ";
93
- v += `${k}: ${nest(inspect(val[k]))}`;
104
+ v += `${k}: ${nest(inspectInternal(val[k], seen))}`;
94
105
  v += oneLine ? "," : "";
95
106
  }
96
107
  }