objdiff-wasm 2.0.0-beta.4 → 2.0.0-beta.6

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/dist/main.js CHANGED
@@ -641,13 +641,13 @@ var InstructionDiff$Type = class extends MessageType {
641
641
  { no: 2, name: "instruction", kind: "message", T: () => Instruction },
642
642
  { no: 3, name: "branch_from", kind: "message", localName: "branch_from", T: () => InstructionBranchFrom },
643
643
  { no: 4, name: "branch_to", kind: "message", localName: "branch_to", T: () => InstructionBranchTo },
644
- { no: 5, name: "display", kind: "message", repeat: 1, T: () => DiffDisplay }
644
+ { no: 5, name: "arg_diff", kind: "message", localName: "arg_diff", repeat: 1, T: () => ArgumentDiff }
645
645
  ]);
646
646
  }
647
647
  create(value) {
648
648
  const message = globalThis.Object.create(this.messagePrototype);
649
649
  message.diff_kind = 0;
650
- message.display = [];
650
+ message.arg_diff = [];
651
651
  if (value !== void 0)
652
652
  reflectionMergePartial(this, message, value);
653
653
  return message;
@@ -673,9 +673,9 @@ var InstructionDiff$Type = class extends MessageType {
673
673
  4:
674
674
  message.branch_to = InstructionBranchTo.internalBinaryRead(reader, reader.uint32(), options, message.branch_to);
675
675
  break;
676
- case /* repeated objdiff.diff.DiffDisplay display */
676
+ case /* repeated objdiff.diff.ArgumentDiff arg_diff */
677
677
  5:
678
- message.display.push(DiffDisplay.internalBinaryRead(reader, reader.uint32(), options));
678
+ message.arg_diff.push(ArgumentDiff.internalBinaryRead(reader, reader.uint32(), options));
679
679
  break;
680
680
  default:
681
681
  let u = options.readUnknownField;
@@ -697,8 +697,8 @@ var InstructionDiff$Type = class extends MessageType {
697
697
  InstructionBranchFrom.internalBinaryWrite(message.branch_from, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
698
698
  if (message.branch_to)
699
699
  InstructionBranchTo.internalBinaryWrite(message.branch_to, writer.tag(4, WireType.LengthDelimited).fork(), options).join();
700
- for (let i = 0; i < message.display.length; i++)
701
- DiffDisplay.internalBinaryWrite(message.display[i], writer.tag(5, WireType.LengthDelimited).fork(), options).join();
700
+ for (let i = 0; i < message.arg_diff.length; i++)
701
+ ArgumentDiff.internalBinaryWrite(message.arg_diff[i], writer.tag(5, WireType.LengthDelimited).fork(), options).join();
702
702
  let u = options.writeUnknownFields;
703
703
  if (u !== false)
704
704
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -706,6 +706,56 @@ var InstructionDiff$Type = class extends MessageType {
706
706
  }
707
707
  };
708
708
  var InstructionDiff = new InstructionDiff$Type();
709
+ var ArgumentDiff$Type = class extends MessageType {
710
+ constructor() {
711
+ super("objdiff.diff.ArgumentDiff", [
712
+ {
713
+ no: 1,
714
+ name: "diff_index",
715
+ kind: "scalar",
716
+ localName: "diff_index",
717
+ opt: true,
718
+ T: 13
719
+ /*ScalarType.UINT32*/
720
+ }
721
+ ]);
722
+ }
723
+ create(value) {
724
+ const message = globalThis.Object.create(this.messagePrototype);
725
+ if (value !== void 0)
726
+ reflectionMergePartial(this, message, value);
727
+ return message;
728
+ }
729
+ internalBinaryRead(reader, length, options, target) {
730
+ let message = target ?? this.create(), end = reader.pos + length;
731
+ while (reader.pos < end) {
732
+ let [fieldNo, wireType] = reader.tag();
733
+ switch (fieldNo) {
734
+ case /* optional uint32 diff_index */
735
+ 1:
736
+ message.diff_index = reader.uint32();
737
+ break;
738
+ default:
739
+ let u = options.readUnknownField;
740
+ if (u === "throw")
741
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
742
+ let d = reader.skip(wireType);
743
+ if (u !== false)
744
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
745
+ }
746
+ }
747
+ return message;
748
+ }
749
+ internalBinaryWrite(message, writer, options) {
750
+ if (message.diff_index !== void 0)
751
+ writer.tag(1, WireType.Varint).uint32(message.diff_index);
752
+ let u = options.writeUnknownFields;
753
+ if (u !== false)
754
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
755
+ return writer;
756
+ }
757
+ };
758
+ var ArgumentDiff = new ArgumentDiff$Type();
709
759
  var InstructionBranchFrom$Type = class extends MessageType {
710
760
  constructor() {
711
761
  super("objdiff.diff.InstructionBranchFrom", [
@@ -1192,752 +1242,134 @@ var DiffResult$Type = class extends MessageType {
1192
1242
  }
1193
1243
  };
1194
1244
  var DiffResult = new DiffResult$Type();
1195
- var DiffDisplay$Type = class extends MessageType {
1196
- constructor() {
1197
- super("objdiff.diff.DiffDisplay", [
1198
- { no: 1, name: "text", kind: "message", T: () => DiffText },
1199
- {
1200
- no: 2,
1201
- name: "diff_index",
1202
- kind: "scalar",
1203
- localName: "diff_index",
1204
- opt: true,
1205
- T: 13
1206
- /*ScalarType.UINT32*/
1207
- }
1208
- ]);
1209
- }
1210
- create(value) {
1211
- const message = globalThis.Object.create(this.messagePrototype);
1212
- if (value !== void 0)
1213
- reflectionMergePartial(this, message, value);
1214
- return message;
1245
+
1246
+ // src/main.ts
1247
+ var workerInit = false;
1248
+ var workerCallbacks = null;
1249
+ var workerReady = new Promise((resolve, reject) => {
1250
+ workerCallbacks = { start: performance.now(), resolve, reject };
1251
+ });
1252
+ function initialize(workerUrl) {
1253
+ if (workerInit) {
1254
+ return;
1215
1255
  }
1216
- internalBinaryRead(reader, length, options, target) {
1217
- let message = target ?? this.create(), end = reader.pos + length;
1218
- while (reader.pos < end) {
1219
- let [fieldNo, wireType] = reader.tag();
1220
- switch (fieldNo) {
1221
- case /* objdiff.diff.DiffText text */
1222
- 1:
1223
- message.text = DiffText.internalBinaryRead(reader, reader.uint32(), options, message.text);
1224
- break;
1225
- case /* optional uint32 diff_index */
1226
- 2:
1227
- message.diff_index = reader.uint32();
1228
- break;
1229
- default:
1230
- let u = options.readUnknownField;
1231
- if (u === "throw")
1232
- throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1233
- let d = reader.skip(wireType);
1234
- if (u !== false)
1235
- (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1256
+ workerInit = true;
1257
+ const worker = new Worker(workerUrl || "worker.js", { type: "module" });
1258
+ worker.onmessage = onMessage.bind(null, worker);
1259
+ worker.onerror = (error) => {
1260
+ console.error("Worker error", error);
1261
+ workerCallbacks.reject(error);
1262
+ };
1263
+ }
1264
+ var globalMessageId = 0;
1265
+ var messageCallbacks = /* @__PURE__ */ new Map();
1266
+ function onMessage(worker, event) {
1267
+ switch (event.data.type) {
1268
+ case "ready":
1269
+ workerCallbacks.resolve(worker);
1270
+ break;
1271
+ case "result": {
1272
+ const { messageId, result } = event.data;
1273
+ const callbacks = messageCallbacks.get(messageId);
1274
+ if (callbacks) {
1275
+ const end = performance.now();
1276
+ console.debug(`Message ${messageId} took ${end - callbacks.start}ms`);
1277
+ messageCallbacks.delete(messageId);
1278
+ callbacks.resolve(result);
1279
+ } else {
1280
+ console.warn(`Unknown message ID ${messageId}`);
1236
1281
  }
1282
+ break;
1237
1283
  }
1238
- return message;
1239
- }
1240
- internalBinaryWrite(message, writer, options) {
1241
- if (message.text)
1242
- DiffText.internalBinaryWrite(message.text, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
1243
- if (message.diff_index !== void 0)
1244
- writer.tag(2, WireType.Varint).uint32(message.diff_index);
1245
- let u = options.writeUnknownFields;
1246
- if (u !== false)
1247
- (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1248
- return writer;
1249
- }
1250
- };
1251
- var DiffDisplay = new DiffDisplay$Type();
1252
- var DiffText$Type = class extends MessageType {
1253
- constructor() {
1254
- super("objdiff.diff.DiffText", [
1255
- { no: 1, name: "basic", kind: "message", oneof: "text", T: () => DiffTextBasic },
1256
- { no: 2, name: "basic_color", kind: "message", localName: "basic_color", oneof: "text", T: () => DiffTextBasicColor },
1257
- { no: 3, name: "line", kind: "message", oneof: "text", T: () => DiffTextLine },
1258
- { no: 4, name: "address", kind: "message", oneof: "text", T: () => DiffTextAddress },
1259
- { no: 5, name: "opcode", kind: "message", oneof: "text", T: () => DiffTextOpcode },
1260
- { no: 6, name: "argument", kind: "message", oneof: "text", T: () => DiffTextArgument },
1261
- { no: 7, name: "branch_dest", kind: "message", localName: "branch_dest", oneof: "text", T: () => DiffTextBranchDest },
1262
- { no: 8, name: "symbol", kind: "message", oneof: "text", T: () => DiffTextSymbol },
1263
- { no: 9, name: "spacing", kind: "message", oneof: "text", T: () => DiffTextSpacing },
1264
- { no: 10, name: "eol", kind: "message", oneof: "text", T: () => DiffTextEol }
1265
- ]);
1266
- }
1267
- create(value) {
1268
- const message = globalThis.Object.create(this.messagePrototype);
1269
- message.text = { oneofKind: void 0 };
1270
- if (value !== void 0)
1271
- reflectionMergePartial(this, message, value);
1272
- return message;
1273
1284
  }
1274
- internalBinaryRead(reader, length, options, target) {
1275
- let message = target ?? this.create(), end = reader.pos + length;
1276
- while (reader.pos < end) {
1277
- let [fieldNo, wireType] = reader.tag();
1278
- switch (fieldNo) {
1279
- case /* objdiff.diff.DiffTextBasic basic */
1280
- 1:
1281
- message.text = {
1282
- oneofKind: "basic",
1283
- basic: DiffTextBasic.internalBinaryRead(reader, reader.uint32(), options, message.text.basic)
1284
- };
1285
- break;
1286
- case /* objdiff.diff.DiffTextBasicColor basic_color */
1287
- 2:
1288
- message.text = {
1289
- oneofKind: "basic_color",
1290
- basic_color: DiffTextBasicColor.internalBinaryRead(reader, reader.uint32(), options, message.text.basic_color)
1291
- };
1292
- break;
1293
- case /* objdiff.diff.DiffTextLine line */
1294
- 3:
1295
- message.text = {
1296
- oneofKind: "line",
1297
- line: DiffTextLine.internalBinaryRead(reader, reader.uint32(), options, message.text.line)
1298
- };
1299
- break;
1300
- case /* objdiff.diff.DiffTextAddress address */
1301
- 4:
1302
- message.text = {
1303
- oneofKind: "address",
1304
- address: DiffTextAddress.internalBinaryRead(reader, reader.uint32(), options, message.text.address)
1305
- };
1306
- break;
1307
- case /* objdiff.diff.DiffTextOpcode opcode */
1308
- 5:
1309
- message.text = {
1310
- oneofKind: "opcode",
1311
- opcode: DiffTextOpcode.internalBinaryRead(reader, reader.uint32(), options, message.text.opcode)
1312
- };
1313
- break;
1314
- case /* objdiff.diff.DiffTextArgument argument */
1315
- 6:
1316
- message.text = {
1317
- oneofKind: "argument",
1318
- argument: DiffTextArgument.internalBinaryRead(reader, reader.uint32(), options, message.text.argument)
1319
- };
1320
- break;
1321
- case /* objdiff.diff.DiffTextBranchDest branch_dest */
1322
- 7:
1323
- message.text = {
1324
- oneofKind: "branch_dest",
1325
- branch_dest: DiffTextBranchDest.internalBinaryRead(reader, reader.uint32(), options, message.text.branch_dest)
1326
- };
1327
- break;
1328
- case /* objdiff.diff.DiffTextSymbol symbol */
1329
- 8:
1330
- message.text = {
1331
- oneofKind: "symbol",
1332
- symbol: DiffTextSymbol.internalBinaryRead(reader, reader.uint32(), options, message.text.symbol)
1333
- };
1334
- break;
1335
- case /* objdiff.diff.DiffTextSpacing spacing */
1336
- 9:
1337
- message.text = {
1338
- oneofKind: "spacing",
1339
- spacing: DiffTextSpacing.internalBinaryRead(reader, reader.uint32(), options, message.text.spacing)
1340
- };
1341
- break;
1342
- case /* objdiff.diff.DiffTextEol eol */
1343
- 10:
1344
- message.text = {
1345
- oneofKind: "eol",
1346
- eol: DiffTextEol.internalBinaryRead(reader, reader.uint32(), options, message.text.eol)
1347
- };
1348
- break;
1349
- default:
1350
- let u = options.readUnknownField;
1351
- if (u === "throw")
1352
- throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1353
- let d = reader.skip(wireType);
1354
- if (u !== false)
1355
- (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1356
- }
1357
- }
1358
- return message;
1285
+ }
1286
+ async function defer(message) {
1287
+ if (!workerInit) {
1288
+ throw new Error("Worker not initialized");
1359
1289
  }
1360
- internalBinaryWrite(message, writer, options) {
1361
- if (message.text.oneofKind === "basic")
1362
- DiffTextBasic.internalBinaryWrite(message.text.basic, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
1363
- if (message.text.oneofKind === "basic_color")
1364
- DiffTextBasicColor.internalBinaryWrite(message.text.basic_color, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
1365
- if (message.text.oneofKind === "line")
1366
- DiffTextLine.internalBinaryWrite(message.text.line, writer.tag(3, WireType.LengthDelimited).fork(), options).join();
1367
- if (message.text.oneofKind === "address")
1368
- DiffTextAddress.internalBinaryWrite(message.text.address, writer.tag(4, WireType.LengthDelimited).fork(), options).join();
1369
- if (message.text.oneofKind === "opcode")
1370
- DiffTextOpcode.internalBinaryWrite(message.text.opcode, writer.tag(5, WireType.LengthDelimited).fork(), options).join();
1371
- if (message.text.oneofKind === "argument")
1372
- DiffTextArgument.internalBinaryWrite(message.text.argument, writer.tag(6, WireType.LengthDelimited).fork(), options).join();
1373
- if (message.text.oneofKind === "branch_dest")
1374
- DiffTextBranchDest.internalBinaryWrite(message.text.branch_dest, writer.tag(7, WireType.LengthDelimited).fork(), options).join();
1375
- if (message.text.oneofKind === "symbol")
1376
- DiffTextSymbol.internalBinaryWrite(message.text.symbol, writer.tag(8, WireType.LengthDelimited).fork(), options).join();
1377
- if (message.text.oneofKind === "spacing")
1378
- DiffTextSpacing.internalBinaryWrite(message.text.spacing, writer.tag(9, WireType.LengthDelimited).fork(), options).join();
1379
- if (message.text.oneofKind === "eol")
1380
- DiffTextEol.internalBinaryWrite(message.text.eol, writer.tag(10, WireType.LengthDelimited).fork(), options).join();
1381
- let u = options.writeUnknownFields;
1382
- if (u !== false)
1383
- (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1384
- return writer;
1290
+ const worker = await workerReady;
1291
+ const messageId = globalMessageId++;
1292
+ const promise = new Promise((resolve, reject) => {
1293
+ messageCallbacks.set(messageId, { start: performance.now(), resolve, reject });
1294
+ });
1295
+ worker.postMessage({
1296
+ ...message,
1297
+ messageId
1298
+ });
1299
+ return promise;
1300
+ }
1301
+ async function runDiff(left, right, config) {
1302
+ const data = await defer({
1303
+ type: "run_diff",
1304
+ left,
1305
+ right,
1306
+ config
1307
+ });
1308
+ const parseStart = performance.now();
1309
+ const result = DiffResult.fromBinary(data, { readUnknownField: false });
1310
+ const end = performance.now();
1311
+ console.debug(`Parsing message took ${end - parseStart}ms`);
1312
+ return result;
1313
+ }
1314
+ function oneof(type) {
1315
+ return type;
1316
+ }
1317
+ function displayDiff(diff, baseAddr, cb) {
1318
+ var _a;
1319
+ const ins = diff.instruction;
1320
+ if (!ins) {
1321
+ return;
1385
1322
  }
1386
- };
1387
- var DiffText = new DiffText$Type();
1388
- var DiffTextBasic$Type = class extends MessageType {
1389
- constructor() {
1390
- super("objdiff.diff.DiffTextBasic", [
1391
- {
1392
- no: 1,
1393
- name: "text",
1394
- kind: "scalar",
1395
- T: 9
1396
- /*ScalarType.STRING*/
1397
- }
1398
- ]);
1323
+ if (ins.line_number != null) {
1324
+ cb({ type: "line", line_number: ins.line_number });
1399
1325
  }
1400
- create(value) {
1401
- const message = globalThis.Object.create(this.messagePrototype);
1402
- message.text = "";
1403
- if (value !== void 0)
1404
- reflectionMergePartial(this, message, value);
1405
- return message;
1326
+ cb({ type: "address", address: ins.address - baseAddr });
1327
+ if (diff.branch_from) {
1328
+ cb({ type: "basic_color", text: " ~> ", index: diff.branch_from.branch_index });
1329
+ } else {
1330
+ cb({ type: "spacing", count: 4 });
1406
1331
  }
1407
- internalBinaryRead(reader, length, options, target) {
1408
- let message = target ?? this.create(), end = reader.pos + length;
1409
- while (reader.pos < end) {
1410
- let [fieldNo, wireType] = reader.tag();
1411
- switch (fieldNo) {
1412
- case /* string text */
1413
- 1:
1414
- message.text = reader.string();
1415
- break;
1416
- default:
1417
- let u = options.readUnknownField;
1418
- if (u === "throw")
1419
- throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1420
- let d = reader.skip(wireType);
1421
- if (u !== false)
1422
- (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1332
+ cb({ type: "opcode", mnemonic: ins.mnemonic, opcode: ins.opcode });
1333
+ for (let i = 0; i < ins.arguments.length; i++) {
1334
+ if (i == 0) {
1335
+ cb({ type: "spacing", count: 1 });
1336
+ }
1337
+ const arg = oneof(ins.arguments[i].value);
1338
+ const diff_index = (_a = diff.arg_diff[i]) == null ? void 0 : _a.diff_index;
1339
+ switch (arg.oneofKind) {
1340
+ case "plain_text":
1341
+ cb({ type: "basic", text: arg.plain_text, diff_index });
1342
+ break;
1343
+ case "argument":
1344
+ cb({ type: "argument", value: arg.argument, diff_index });
1345
+ break;
1346
+ case "relocation": {
1347
+ const reloc = ins.relocation;
1348
+ cb({ type: "symbol", target: reloc.target, diff_index });
1349
+ break;
1423
1350
  }
1351
+ case "branch_dest":
1352
+ if (arg.branch_dest < baseAddr) {
1353
+ cb({ type: "basic", text: "<unknown>", diff_index });
1354
+ } else {
1355
+ cb({ type: "branch_dest", address: arg.branch_dest - baseAddr, diff_index });
1356
+ }
1357
+ break;
1424
1358
  }
1425
- return message;
1426
1359
  }
1427
- internalBinaryWrite(message, writer, options) {
1428
- if (message.text !== "")
1429
- writer.tag(1, WireType.LengthDelimited).string(message.text);
1430
- let u = options.writeUnknownFields;
1431
- if (u !== false)
1432
- (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1433
- return writer;
1360
+ if (diff.branch_to) {
1361
+ cb({ type: "basic_color", text: " ~> ", index: diff.branch_to.branch_index });
1434
1362
  }
1435
- };
1436
- var DiffTextBasic = new DiffTextBasic$Type();
1437
- var DiffTextBasicColor$Type = class extends MessageType {
1438
- constructor() {
1439
- super("objdiff.diff.DiffTextBasicColor", [
1440
- {
1441
- no: 1,
1442
- name: "text",
1443
- kind: "scalar",
1444
- T: 9
1445
- /*ScalarType.STRING*/
1446
- },
1447
- {
1448
- no: 2,
1449
- name: "index",
1450
- kind: "scalar",
1451
- T: 13
1452
- /*ScalarType.UINT32*/
1453
- }
1454
- ]);
1455
- }
1456
- create(value) {
1457
- const message = globalThis.Object.create(this.messagePrototype);
1458
- message.text = "";
1459
- message.index = 0;
1460
- if (value !== void 0)
1461
- reflectionMergePartial(this, message, value);
1462
- return message;
1463
- }
1464
- internalBinaryRead(reader, length, options, target) {
1465
- let message = target ?? this.create(), end = reader.pos + length;
1466
- while (reader.pos < end) {
1467
- let [fieldNo, wireType] = reader.tag();
1468
- switch (fieldNo) {
1469
- case /* string text */
1470
- 1:
1471
- message.text = reader.string();
1472
- break;
1473
- case /* uint32 index */
1474
- 2:
1475
- message.index = reader.uint32();
1476
- break;
1477
- default:
1478
- let u = options.readUnknownField;
1479
- if (u === "throw")
1480
- throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1481
- let d = reader.skip(wireType);
1482
- if (u !== false)
1483
- (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1484
- }
1485
- }
1486
- return message;
1487
- }
1488
- internalBinaryWrite(message, writer, options) {
1489
- if (message.text !== "")
1490
- writer.tag(1, WireType.LengthDelimited).string(message.text);
1491
- if (message.index !== 0)
1492
- writer.tag(2, WireType.Varint).uint32(message.index);
1493
- let u = options.writeUnknownFields;
1494
- if (u !== false)
1495
- (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1496
- return writer;
1497
- }
1498
- };
1499
- var DiffTextBasicColor = new DiffTextBasicColor$Type();
1500
- var DiffTextLine$Type = class extends MessageType {
1501
- constructor() {
1502
- super("objdiff.diff.DiffTextLine", [
1503
- {
1504
- no: 1,
1505
- name: "line_number",
1506
- kind: "scalar",
1507
- localName: "line_number",
1508
- T: 13
1509
- /*ScalarType.UINT32*/
1510
- }
1511
- ]);
1512
- }
1513
- create(value) {
1514
- const message = globalThis.Object.create(this.messagePrototype);
1515
- message.line_number = 0;
1516
- if (value !== void 0)
1517
- reflectionMergePartial(this, message, value);
1518
- return message;
1519
- }
1520
- internalBinaryRead(reader, length, options, target) {
1521
- let message = target ?? this.create(), end = reader.pos + length;
1522
- while (reader.pos < end) {
1523
- let [fieldNo, wireType] = reader.tag();
1524
- switch (fieldNo) {
1525
- case /* uint32 line_number */
1526
- 1:
1527
- message.line_number = reader.uint32();
1528
- break;
1529
- default:
1530
- let u = options.readUnknownField;
1531
- if (u === "throw")
1532
- throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1533
- let d = reader.skip(wireType);
1534
- if (u !== false)
1535
- (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1536
- }
1537
- }
1538
- return message;
1539
- }
1540
- internalBinaryWrite(message, writer, options) {
1541
- if (message.line_number !== 0)
1542
- writer.tag(1, WireType.Varint).uint32(message.line_number);
1543
- let u = options.writeUnknownFields;
1544
- if (u !== false)
1545
- (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1546
- return writer;
1547
- }
1548
- };
1549
- var DiffTextLine = new DiffTextLine$Type();
1550
- var DiffTextAddress$Type = class extends MessageType {
1551
- constructor() {
1552
- super("objdiff.diff.DiffTextAddress", [
1553
- {
1554
- no: 1,
1555
- name: "address",
1556
- kind: "scalar",
1557
- T: 4,
1558
- L: 0
1559
- /*LongType.BIGINT*/
1560
- }
1561
- ]);
1562
- }
1563
- create(value) {
1564
- const message = globalThis.Object.create(this.messagePrototype);
1565
- message.address = 0n;
1566
- if (value !== void 0)
1567
- reflectionMergePartial(this, message, value);
1568
- return message;
1569
- }
1570
- internalBinaryRead(reader, length, options, target) {
1571
- let message = target ?? this.create(), end = reader.pos + length;
1572
- while (reader.pos < end) {
1573
- let [fieldNo, wireType] = reader.tag();
1574
- switch (fieldNo) {
1575
- case /* uint64 address */
1576
- 1:
1577
- message.address = reader.uint64().toBigInt();
1578
- break;
1579
- default:
1580
- let u = options.readUnknownField;
1581
- if (u === "throw")
1582
- throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1583
- let d = reader.skip(wireType);
1584
- if (u !== false)
1585
- (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1586
- }
1587
- }
1588
- return message;
1589
- }
1590
- internalBinaryWrite(message, writer, options) {
1591
- if (message.address !== 0n)
1592
- writer.tag(1, WireType.Varint).uint64(message.address);
1593
- let u = options.writeUnknownFields;
1594
- if (u !== false)
1595
- (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1596
- return writer;
1597
- }
1598
- };
1599
- var DiffTextAddress = new DiffTextAddress$Type();
1600
- var DiffTextOpcode$Type = class extends MessageType {
1601
- constructor() {
1602
- super("objdiff.diff.DiffTextOpcode", [
1603
- {
1604
- no: 1,
1605
- name: "mnemonic",
1606
- kind: "scalar",
1607
- T: 9
1608
- /*ScalarType.STRING*/
1609
- },
1610
- {
1611
- no: 2,
1612
- name: "opcode",
1613
- kind: "scalar",
1614
- T: 13
1615
- /*ScalarType.UINT32*/
1616
- }
1617
- ]);
1618
- }
1619
- create(value) {
1620
- const message = globalThis.Object.create(this.messagePrototype);
1621
- message.mnemonic = "";
1622
- message.opcode = 0;
1623
- if (value !== void 0)
1624
- reflectionMergePartial(this, message, value);
1625
- return message;
1626
- }
1627
- internalBinaryRead(reader, length, options, target) {
1628
- let message = target ?? this.create(), end = reader.pos + length;
1629
- while (reader.pos < end) {
1630
- let [fieldNo, wireType] = reader.tag();
1631
- switch (fieldNo) {
1632
- case /* string mnemonic */
1633
- 1:
1634
- message.mnemonic = reader.string();
1635
- break;
1636
- case /* uint32 opcode */
1637
- 2:
1638
- message.opcode = reader.uint32();
1639
- break;
1640
- default:
1641
- let u = options.readUnknownField;
1642
- if (u === "throw")
1643
- throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1644
- let d = reader.skip(wireType);
1645
- if (u !== false)
1646
- (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1647
- }
1648
- }
1649
- return message;
1650
- }
1651
- internalBinaryWrite(message, writer, options) {
1652
- if (message.mnemonic !== "")
1653
- writer.tag(1, WireType.LengthDelimited).string(message.mnemonic);
1654
- if (message.opcode !== 0)
1655
- writer.tag(2, WireType.Varint).uint32(message.opcode);
1656
- let u = options.writeUnknownFields;
1657
- if (u !== false)
1658
- (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1659
- return writer;
1660
- }
1661
- };
1662
- var DiffTextOpcode = new DiffTextOpcode$Type();
1663
- var DiffTextArgument$Type = class extends MessageType {
1664
- constructor() {
1665
- super("objdiff.diff.DiffTextArgument", [
1666
- { no: 1, name: "value", kind: "message", T: () => ArgumentValue }
1667
- ]);
1668
- }
1669
- create(value) {
1670
- const message = globalThis.Object.create(this.messagePrototype);
1671
- if (value !== void 0)
1672
- reflectionMergePartial(this, message, value);
1673
- return message;
1674
- }
1675
- internalBinaryRead(reader, length, options, target) {
1676
- let message = target ?? this.create(), end = reader.pos + length;
1677
- while (reader.pos < end) {
1678
- let [fieldNo, wireType] = reader.tag();
1679
- switch (fieldNo) {
1680
- case /* objdiff.diff.ArgumentValue value */
1681
- 1:
1682
- message.value = ArgumentValue.internalBinaryRead(reader, reader.uint32(), options, message.value);
1683
- break;
1684
- default:
1685
- let u = options.readUnknownField;
1686
- if (u === "throw")
1687
- throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1688
- let d = reader.skip(wireType);
1689
- if (u !== false)
1690
- (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1691
- }
1692
- }
1693
- return message;
1694
- }
1695
- internalBinaryWrite(message, writer, options) {
1696
- if (message.value)
1697
- ArgumentValue.internalBinaryWrite(message.value, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
1698
- let u = options.writeUnknownFields;
1699
- if (u !== false)
1700
- (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1701
- return writer;
1702
- }
1703
- };
1704
- var DiffTextArgument = new DiffTextArgument$Type();
1705
- var DiffTextBranchDest$Type = class extends MessageType {
1706
- constructor() {
1707
- super("objdiff.diff.DiffTextBranchDest", [
1708
- {
1709
- no: 1,
1710
- name: "address",
1711
- kind: "scalar",
1712
- T: 4,
1713
- L: 0
1714
- /*LongType.BIGINT*/
1715
- }
1716
- ]);
1717
- }
1718
- create(value) {
1719
- const message = globalThis.Object.create(this.messagePrototype);
1720
- message.address = 0n;
1721
- if (value !== void 0)
1722
- reflectionMergePartial(this, message, value);
1723
- return message;
1724
- }
1725
- internalBinaryRead(reader, length, options, target) {
1726
- let message = target ?? this.create(), end = reader.pos + length;
1727
- while (reader.pos < end) {
1728
- let [fieldNo, wireType] = reader.tag();
1729
- switch (fieldNo) {
1730
- case /* uint64 address */
1731
- 1:
1732
- message.address = reader.uint64().toBigInt();
1733
- break;
1734
- default:
1735
- let u = options.readUnknownField;
1736
- if (u === "throw")
1737
- throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1738
- let d = reader.skip(wireType);
1739
- if (u !== false)
1740
- (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1741
- }
1742
- }
1743
- return message;
1744
- }
1745
- internalBinaryWrite(message, writer, options) {
1746
- if (message.address !== 0n)
1747
- writer.tag(1, WireType.Varint).uint64(message.address);
1748
- let u = options.writeUnknownFields;
1749
- if (u !== false)
1750
- (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1751
- return writer;
1752
- }
1753
- };
1754
- var DiffTextBranchDest = new DiffTextBranchDest$Type();
1755
- var DiffTextSymbol$Type = class extends MessageType {
1756
- constructor() {
1757
- super("objdiff.diff.DiffTextSymbol", [
1758
- { no: 1, name: "target", kind: "message", T: () => RelocationTarget }
1759
- ]);
1760
- }
1761
- create(value) {
1762
- const message = globalThis.Object.create(this.messagePrototype);
1763
- if (value !== void 0)
1764
- reflectionMergePartial(this, message, value);
1765
- return message;
1766
- }
1767
- internalBinaryRead(reader, length, options, target) {
1768
- let message = target ?? this.create(), end = reader.pos + length;
1769
- while (reader.pos < end) {
1770
- let [fieldNo, wireType] = reader.tag();
1771
- switch (fieldNo) {
1772
- case /* objdiff.diff.RelocationTarget target */
1773
- 1:
1774
- message.target = RelocationTarget.internalBinaryRead(reader, reader.uint32(), options, message.target);
1775
- break;
1776
- default:
1777
- let u = options.readUnknownField;
1778
- if (u === "throw")
1779
- throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1780
- let d = reader.skip(wireType);
1781
- if (u !== false)
1782
- (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1783
- }
1784
- }
1785
- return message;
1786
- }
1787
- internalBinaryWrite(message, writer, options) {
1788
- if (message.target)
1789
- RelocationTarget.internalBinaryWrite(message.target, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
1790
- let u = options.writeUnknownFields;
1791
- if (u !== false)
1792
- (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1793
- return writer;
1794
- }
1795
- };
1796
- var DiffTextSymbol = new DiffTextSymbol$Type();
1797
- var DiffTextSpacing$Type = class extends MessageType {
1798
- constructor() {
1799
- super("objdiff.diff.DiffTextSpacing", [
1800
- {
1801
- no: 1,
1802
- name: "count",
1803
- kind: "scalar",
1804
- T: 13
1805
- /*ScalarType.UINT32*/
1806
- }
1807
- ]);
1808
- }
1809
- create(value) {
1810
- const message = globalThis.Object.create(this.messagePrototype);
1811
- message.count = 0;
1812
- if (value !== void 0)
1813
- reflectionMergePartial(this, message, value);
1814
- return message;
1815
- }
1816
- internalBinaryRead(reader, length, options, target) {
1817
- let message = target ?? this.create(), end = reader.pos + length;
1818
- while (reader.pos < end) {
1819
- let [fieldNo, wireType] = reader.tag();
1820
- switch (fieldNo) {
1821
- case /* uint32 count */
1822
- 1:
1823
- message.count = reader.uint32();
1824
- break;
1825
- default:
1826
- let u = options.readUnknownField;
1827
- if (u === "throw")
1828
- throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
1829
- let d = reader.skip(wireType);
1830
- if (u !== false)
1831
- (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
1832
- }
1833
- }
1834
- return message;
1835
- }
1836
- internalBinaryWrite(message, writer, options) {
1837
- if (message.count !== 0)
1838
- writer.tag(1, WireType.Varint).uint32(message.count);
1839
- let u = options.writeUnknownFields;
1840
- if (u !== false)
1841
- (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1842
- return writer;
1843
- }
1844
- };
1845
- var DiffTextSpacing = new DiffTextSpacing$Type();
1846
- var DiffTextEol$Type = class extends MessageType {
1847
- constructor() {
1848
- super("objdiff.diff.DiffTextEol", []);
1849
- }
1850
- create(value) {
1851
- const message = globalThis.Object.create(this.messagePrototype);
1852
- if (value !== void 0)
1853
- reflectionMergePartial(this, message, value);
1854
- return message;
1855
- }
1856
- internalBinaryRead(reader, length, options, target) {
1857
- return target ?? this.create();
1858
- }
1859
- internalBinaryWrite(message, writer, options) {
1860
- let u = options.writeUnknownFields;
1861
- if (u !== false)
1862
- (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
1863
- return writer;
1864
- }
1865
- };
1866
- var DiffTextEol = new DiffTextEol$Type();
1867
-
1868
- // src/main.ts
1869
- var workerInit = false;
1870
- var workerCallbacks = null;
1871
- var workerReady = new Promise((resolve, reject) => {
1872
- workerCallbacks = { start: performance.now(), resolve, reject };
1873
- });
1874
- function initialize(workerUrl) {
1875
- if (workerInit) {
1876
- return;
1877
- }
1878
- workerInit = true;
1879
- const worker = new Worker(workerUrl || "worker.js", { type: "module" });
1880
- worker.onmessage = onMessage.bind(null, worker);
1881
- worker.onerror = (error) => {
1882
- console.error("Worker error", error);
1883
- workerCallbacks.reject(error);
1884
- };
1885
- }
1886
- var globalMessageId = 0;
1887
- var messageCallbacks = /* @__PURE__ */ new Map();
1888
- function onMessage(worker, event) {
1889
- switch (event.data.type) {
1890
- case "ready":
1891
- workerCallbacks.resolve(worker);
1892
- break;
1893
- case "result": {
1894
- const { messageId, result } = event.data;
1895
- const callbacks = messageCallbacks.get(messageId);
1896
- if (callbacks) {
1897
- const end = performance.now();
1898
- console.debug(`Message ${messageId} took ${end - callbacks.start}ms`);
1899
- messageCallbacks.delete(messageId);
1900
- callbacks.resolve(result);
1901
- }
1902
- break;
1903
- }
1904
- }
1905
- }
1906
- async function defer(message) {
1907
- if (!workerInit) {
1908
- throw new Error("Worker not initialized");
1909
- }
1910
- const worker = await workerReady;
1911
- const messageId = globalMessageId++;
1912
- const promise = new Promise((resolve, reject) => {
1913
- messageCallbacks.set(messageId, { start: performance.now(), resolve, reject });
1914
- });
1915
- worker.postMessage({
1916
- ...message,
1917
- messageId
1918
- });
1919
- return promise;
1920
- }
1921
- async function runDiff(left, right, config) {
1922
- const data = await defer({
1923
- type: "run_diff",
1924
- left,
1925
- right,
1926
- config
1927
- });
1928
- const parseStart = performance.now();
1929
- const result = DiffResult.fromBinary(data, { readUnknownField: false });
1930
- const end = performance.now();
1931
- console.debug(`Parsing message took ${end - parseStart}ms`);
1932
- return result;
1933
1363
  }
1934
1364
  export {
1935
1365
  Argument,
1366
+ ArgumentDiff,
1936
1367
  ArgumentRelocation,
1937
1368
  ArgumentValue,
1938
1369
  DataDiff,
1939
1370
  DiffKind,
1940
1371
  DiffResult,
1372
+ FunctionDiff,
1941
1373
  Instruction,
1942
1374
  InstructionBranchFrom,
1943
1375
  InstructionBranchTo,
@@ -1949,7 +1381,9 @@ export {
1949
1381
  SectionKind,
1950
1382
  Symbol,
1951
1383
  SymbolFlag,
1384
+ displayDiff,
1952
1385
  initialize,
1386
+ oneof,
1953
1387
  runDiff
1954
1388
  };
1955
1389
  //# sourceMappingURL=main.js.map