diff --git a/.changeset/red-falcons-do.md b/.changeset/red-falcons-do.md new file mode 100644 index 0000000000..052cf2fcc4 --- /dev/null +++ b/.changeset/red-falcons-do.md @@ -0,0 +1,5 @@ +--- +"@latticexyz/store": patch +--- + +Minor `Store` cleanups: renamed `Utils.sol` to `leftMask.sol` since it only contains a single free function, and removed a leftover sanity check. diff --git a/packages/store/gas-report.json b/packages/store/gas-report.json index 702c0bf0aa..9463ca8072 100644 --- a/packages/store/gas-report.json +++ b/packages/store/gas-report.json @@ -171,7 +171,7 @@ "file": "test/Gas.t.sol", "test": "testCompareAbiEncodeVsCustom", "name": "custom decode", - "gasUsed": 2046 + "gasUsed": 1969 }, { "file": "test/Gas.t.sol", @@ -351,7 +351,7 @@ "file": "test/KeyEncoding.t.sol", "test": "testRegisterAndGetFieldLayout", "name": "register KeyEncoding table", - "gasUsed": 719171 + "gasUsed": 719017 }, { "file": "test/Mixed.t.sol", @@ -363,49 +363,49 @@ "file": "test/Mixed.t.sol", "test": "testDeleteExternalCold", "name": "delete record from Mixed (external, cold)", - "gasUsed": 24434 + "gasUsed": 24357 }, { "file": "test/Mixed.t.sol", "test": "testDeleteInternalCold", "name": "delete record from Mixed (internal, cold)", - "gasUsed": 19230 + "gasUsed": 19153 }, { "file": "test/Mixed.t.sol", "test": "testSetGetDeleteExternal", "name": "set record in Mixed (external, cold)", - "gasUsed": 108604 + "gasUsed": 108527 }, { "file": "test/Mixed.t.sol", "test": "testSetGetDeleteExternal", "name": "get record from Mixed (external, warm)", - "gasUsed": 7078 + "gasUsed": 7001 }, { "file": "test/Mixed.t.sol", "test": "testSetGetDeleteExternal", "name": "delete record from Mixed (external, warm)", - "gasUsed": 8750 + "gasUsed": 8673 }, { "file": "test/Mixed.t.sol", "test": "testSetGetDeleteInternal", "name": "set record in Mixed (internal, cold)", - "gasUsed": 103358 + "gasUsed": 103281 }, { "file": "test/Mixed.t.sol", "test": "testSetGetDeleteInternal", "name": "get record from Mixed (internal, warm)", - "gasUsed": 6764 + "gasUsed": 6687 }, { "file": "test/Mixed.t.sol", "test": "testSetGetDeleteInternal", "name": "delete record from Mixed (internal, warm)", - "gasUsed": 7543 + "gasUsed": 7466 }, { "file": "test/PackedCounter.t.sol", @@ -651,25 +651,25 @@ "file": "test/StoreCoreDynamic.t.sol", "test": "testPopFromSecondField", "name": "pop from field (cold, 1 slot, 1 uint32 item)", - "gasUsed": 18094 + "gasUsed": 18017 }, { "file": "test/StoreCoreDynamic.t.sol", "test": "testPopFromSecondField", "name": "pop from field (warm, 1 slot, 1 uint32 item)", - "gasUsed": 12101 + "gasUsed": 12024 }, { "file": "test/StoreCoreDynamic.t.sol", "test": "testPopFromThirdField", "name": "pop from field (cold, 2 slots, 10 uint32 items)", - "gasUsed": 15862 + "gasUsed": 15785 }, { "file": "test/StoreCoreDynamic.t.sol", "test": "testPopFromThirdField", "name": "pop from field (warm, 2 slots, 10 uint32 items)", - "gasUsed": 11869 + "gasUsed": 11792 }, { "file": "test/StoreCoreGas.t.sol", @@ -699,7 +699,7 @@ "file": "test/StoreCoreGas.t.sol", "test": "testDeleteData", "name": "delete record (complex data, 3 slots)", - "gasUsed": 8077 + "gasUsed": 8000 }, { "file": "test/StoreCoreGas.t.sol", @@ -729,67 +729,67 @@ "file": "test/StoreCoreGas.t.sol", "test": "testHooks", "name": "register subscriber", - "gasUsed": 58016 + "gasUsed": 57939 }, { "file": "test/StoreCoreGas.t.sol", "test": "testHooks", "name": "set record on table with subscriber", - "gasUsed": 72450 + "gasUsed": 72296 }, { "file": "test/StoreCoreGas.t.sol", "test": "testHooks", "name": "set static field on table with subscriber", - "gasUsed": 19915 + "gasUsed": 19761 }, { "file": "test/StoreCoreGas.t.sol", "test": "testHooks", "name": "delete record on table with subscriber", - "gasUsed": 18741 + "gasUsed": 18587 }, { "file": "test/StoreCoreGas.t.sol", "test": "testHooksDynamicData", "name": "register subscriber", - "gasUsed": 58016 + "gasUsed": 57939 }, { "file": "test/StoreCoreGas.t.sol", "test": "testHooksDynamicData", "name": "set (dynamic) record on table with subscriber", - "gasUsed": 165605 + "gasUsed": 165451 }, { "file": "test/StoreCoreGas.t.sol", "test": "testHooksDynamicData", "name": "set (dynamic) field on table with subscriber", - "gasUsed": 24593 + "gasUsed": 24439 }, { "file": "test/StoreCoreGas.t.sol", "test": "testHooksDynamicData", "name": "delete (dynamic) record on table with subscriber", - "gasUsed": 20407 + "gasUsed": 20253 }, { "file": "test/StoreCoreGas.t.sol", "test": "testPushToDynamicField", "name": "push to field (1 slot, 1 uint32 item)", - "gasUsed": 9521 + "gasUsed": 9444 }, { "file": "test/StoreCoreGas.t.sol", "test": "testPushToDynamicField", "name": "push to field (2 slots, 10 uint32 items)", - "gasUsed": 32191 + "gasUsed": 32114 }, { "file": "test/StoreCoreGas.t.sol", "test": "testRegisterAndGetFieldLayout", "name": "StoreCore: register table", - "gasUsed": 641053 + "gasUsed": 640899 }, { "file": "test/StoreCoreGas.t.sol", @@ -813,7 +813,7 @@ "file": "test/StoreCoreGas.t.sol", "test": "testSetAndGetDynamicData", "name": "set complex record with dynamic data (4 slots)", - "gasUsed": 102589 + "gasUsed": 102512 }, { "file": "test/StoreCoreGas.t.sol", @@ -855,7 +855,7 @@ "file": "test/StoreCoreGas.t.sol", "test": "testSetAndGetField", "name": "set static field (1 slot)", - "gasUsed": 31286 + "gasUsed": 31209 }, { "file": "test/StoreCoreGas.t.sol", @@ -867,7 +867,7 @@ "file": "test/StoreCoreGas.t.sol", "test": "testSetAndGetField", "name": "set static field (overlap 2 slot)", - "gasUsed": 29939 + "gasUsed": 29862 }, { "file": "test/StoreCoreGas.t.sol", @@ -879,7 +879,7 @@ "file": "test/StoreCoreGas.t.sol", "test": "testSetAndGetField", "name": "set dynamic field (1 slot, first dynamic field)", - "gasUsed": 54007 + "gasUsed": 53930 }, { "file": "test/StoreCoreGas.t.sol", @@ -891,7 +891,7 @@ "file": "test/StoreCoreGas.t.sol", "test": "testSetAndGetField", "name": "set dynamic field (1 slot, second dynamic field)", - "gasUsed": 32230 + "gasUsed": 32153 }, { "file": "test/StoreCoreGas.t.sol", @@ -903,7 +903,7 @@ "file": "test/StoreCoreGas.t.sol", "test": "testSetAndGetStaticData", "name": "set static record (1 slot)", - "gasUsed": 32833 + "gasUsed": 32756 }, { "file": "test/StoreCoreGas.t.sol", @@ -915,7 +915,7 @@ "file": "test/StoreCoreGas.t.sol", "test": "testSetAndGetStaticDataSpanningWords", "name": "set static record (2 slots)", - "gasUsed": 55337 + "gasUsed": 55260 }, { "file": "test/StoreCoreGas.t.sol", @@ -927,13 +927,13 @@ "file": "test/StoreCoreGas.t.sol", "test": "testUpdateInDynamicField", "name": "update in field (1 slot, 1 uint32 item)", - "gasUsed": 8869 + "gasUsed": 8792 }, { "file": "test/StoreCoreGas.t.sol", "test": "testUpdateInDynamicField", "name": "push to field (2 slots, 6 uint64 items)", - "gasUsed": 9315 + "gasUsed": 9238 }, { "file": "test/StoreHook.t.sol", @@ -975,97 +975,97 @@ "file": "test/tables/Callbacks.t.sol", "test": "testSetAndGet", "name": "Callbacks: set field", - "gasUsed": 56318 + "gasUsed": 56241 }, { "file": "test/tables/Callbacks.t.sol", "test": "testSetAndGet", "name": "Callbacks: get field (warm)", - "gasUsed": 2919 + "gasUsed": 2842 }, { "file": "test/tables/Callbacks.t.sol", "test": "testSetAndGet", "name": "Callbacks: push 1 element", - "gasUsed": 32576 + "gasUsed": 32499 }, { "file": "test/tables/StoreHooks.t.sol", "test": "testOneSlot", "name": "StoreHooks: set field with one elements (cold)", - "gasUsed": 58324 + "gasUsed": 58247 }, { "file": "test/tables/StoreHooks.t.sol", "test": "testTable", "name": "StoreHooks: set field (cold)", - "gasUsed": 58324 + "gasUsed": 58247 }, { "file": "test/tables/StoreHooks.t.sol", "test": "testTable", "name": "StoreHooks: get field (warm)", - "gasUsed": 2921 + "gasUsed": 2844 }, { "file": "test/tables/StoreHooks.t.sol", "test": "testTable", "name": "StoreHooks: push 1 element (cold)", - "gasUsed": 12674 + "gasUsed": 12597 }, { "file": "test/tables/StoreHooks.t.sol", "test": "testTable", "name": "StoreHooks: pop 1 element (warm)", - "gasUsed": 10008 + "gasUsed": 9931 }, { "file": "test/tables/StoreHooks.t.sol", "test": "testTable", "name": "StoreHooks: push 1 element (warm)", - "gasUsed": 10691 + "gasUsed": 10614 }, { "file": "test/tables/StoreHooks.t.sol", "test": "testTable", "name": "StoreHooks: update 1 element (warm)", - "gasUsed": 29917 + "gasUsed": 29840 }, { "file": "test/tables/StoreHooks.t.sol", "test": "testTable", "name": "StoreHooks: delete record (warm)", - "gasUsed": 10487 + "gasUsed": 10410 }, { "file": "test/tables/StoreHooks.t.sol", "test": "testTable", "name": "StoreHooks: set field (warm)", - "gasUsed": 30469 + "gasUsed": 30392 }, { "file": "test/tables/StoreHooks.t.sol", "test": "testThreeSlots", "name": "StoreHooks: set field with three elements (cold)", - "gasUsed": 81012 + "gasUsed": 80935 }, { "file": "test/tables/StoreHooks.t.sol", "test": "testTwoSlots", "name": "StoreHooks: set field with two elements (cold)", - "gasUsed": 80924 + "gasUsed": 80847 }, { "file": "test/tables/StoreHooksColdLoad.t.sol", "test": "testDelete", "name": "StoreHooks: delete record (cold)", - "gasUsed": 19345 + "gasUsed": 19268 }, { "file": "test/tables/StoreHooksColdLoad.t.sol", "test": "testGet", "name": "StoreHooks: get field (cold)", - "gasUsed": 8918 + "gasUsed": 8841 }, { "file": "test/tables/StoreHooksColdLoad.t.sol", @@ -1083,25 +1083,25 @@ "file": "test/tables/StoreHooksColdLoad.t.sol", "test": "testPop", "name": "StoreHooks: pop 1 element (cold)", - "gasUsed": 18443 + "gasUsed": 18366 }, { "file": "test/tables/StoreHooksColdLoad.t.sol", "test": "testUpdate", "name": "StoreHooks: update 1 element (cold)", - "gasUsed": 20372 + "gasUsed": 20295 }, { "file": "test/tightcoder/DecodeSlice.t.sol", "test": "testToArrayUint32", "name": "decode packed uint32[]", - "gasUsed": 563 + "gasUsed": 486 }, { "file": "test/tightcoder/DecodeSlice.t.sol", "test": "testToBytes32Array", "name": "decode packed bytes32[]", - "gasUsed": 552 + "gasUsed": 475 }, { "file": "test/tightcoder/EncodeArray.t.sol", @@ -1125,7 +1125,7 @@ "file": "test/tightcoder/TightCoder.t.sol", "test": "testFromAndToUint32Array", "name": "decode packed uint32[]", - "gasUsed": 563 + "gasUsed": 486 }, { "file": "test/tightcoder/TightCoder.t.sol", @@ -1137,19 +1137,19 @@ "file": "test/tightcoder/TightCoder.t.sol", "test": "testToAndFromBytes24Array", "name": "decode packed bytes24[]", - "gasUsed": 563 + "gasUsed": 486 }, { "file": "test/Vector2.t.sol", "test": "testRegisterAndGetFieldLayout", "name": "register Vector2 field layout", - "gasUsed": 442557 + "gasUsed": 442403 }, { "file": "test/Vector2.t.sol", "test": "testSetAndGet", "name": "set Vector2 record", - "gasUsed": 33735 + "gasUsed": 33658 }, { "file": "test/Vector2.t.sol", diff --git a/packages/store/src/Memory.sol b/packages/store/src/Memory.sol index 8cea12e9ab..8ce6c40a80 100644 --- a/packages/store/src/Memory.sol +++ b/packages/store/src/Memory.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity >=0.8.21; -import { leftMask } from "./Utils.sol"; +import { leftMask } from "./leftMask.sol"; library Memory { /** diff --git a/packages/store/src/Storage.sol b/packages/store/src/Storage.sol index e558d23093..264a382599 100644 --- a/packages/store/src/Storage.sol +++ b/packages/store/src/Storage.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity >=0.8.21; -import { leftMask } from "./Utils.sol"; +import { leftMask } from "./leftMask.sol"; import { Memory } from "./Memory.sol"; library Storage { diff --git a/packages/store/src/Utils.sol b/packages/store/src/leftMask.sol similarity index 100% rename from packages/store/src/Utils.sol rename to packages/store/src/leftMask.sol diff --git a/packages/store/src/tightcoder/TightCoder.sol b/packages/store/src/tightcoder/TightCoder.sol index d47a97bcab..0fe328cf88 100644 --- a/packages/store/src/tightcoder/TightCoder.sol +++ b/packages/store/src/tightcoder/TightCoder.sol @@ -74,12 +74,6 @@ library TightCoder { arrayLength = packedLength / elementSize; } - // TODO temporary check to catch bugs, either remove it or use a custom error - // (see https://github.com/latticexyz/mud/issues/444) - if (packedLength % elementSize != 0) { - revert("unpackToArray: packedLength must be a multiple of elementSize"); - } - /// @solidity memory-safe-assembly assembly { // Allocate memory diff --git a/packages/store/test/Utils.t.sol b/packages/store/test/leftMask.t.sol similarity index 91% rename from packages/store/test/Utils.t.sol rename to packages/store/test/leftMask.t.sol index 3d0e7962a4..2b8c5c4e9a 100644 --- a/packages/store/test/Utils.t.sol +++ b/packages/store/test/leftMask.t.sol @@ -3,9 +3,9 @@ pragma solidity >=0.8.21; import { Test } from "forge-std/Test.sol"; import { GasReporter } from "@latticexyz/gas-report/src/GasReporter.sol"; -import { leftMask } from "../src/Utils.sol"; +import { leftMask } from "../src/leftMask.sol"; -contract UtilsTest is Test, GasReporter { +contract LeftMaskTest is Test, GasReporter { function testLeftMask() public { bytes32 mask; assertEq(leftMask(0), uint256(mask)); diff --git a/packages/store/test/tightcoder/DecodeSlice.t.sol b/packages/store/test/tightcoder/DecodeSlice.t.sol index 36e74266e7..54526511c5 100644 --- a/packages/store/test/tightcoder/DecodeSlice.t.sol +++ b/packages/store/test/tightcoder/DecodeSlice.t.sol @@ -22,18 +22,6 @@ contract DecodeSliceTest is Test, GasReporter { assertEq(uint256(output[1]), 0x0300000000000000000000000000000000000000000000000000000000000004); } - function testToBytes32ArrayUneven() public { - bytes memory input = new bytes(65); - input[0] = 0x01; - input[31] = 0x02; - input[32] = 0x03; - input[63] = 0x04; - input[64] = 0x05; - - vm.expectRevert("unpackToArray: packedLength must be a multiple of elementSize"); - SliceLib.fromBytes(input).decodeArray_bytes32(); - } - function testToArrayUint32() public { uint32 num1 = 0x01020304; uint32 num2 = 0x05060708; @@ -47,11 +35,4 @@ contract DecodeSliceTest is Test, GasReporter { assertEq(arr[0], num1); assertEq(arr[1], num2); } - - function testToArrayUint32Uneven() public { - bytes memory input = abi.encodePacked(uint32(1), uint32(2), uint8(3)); - - vm.expectRevert("unpackToArray: packedLength must be a multiple of elementSize"); - SliceLib.fromBytes(input).decodeArray_uint32(); - } } diff --git a/packages/world-modules/gas-report.json b/packages/world-modules/gas-report.json index 1dd64dfa2b..8f7403a498 100644 --- a/packages/world-modules/gas-report.json +++ b/packages/world-modules/gas-report.json @@ -3,73 +3,73 @@ "file": "test/KeysInTableModule.t.sol", "test": "testInstallComposite", "name": "install keys in table module", - "gasUsed": 1408533 + "gasUsed": 1407532 }, { "file": "test/KeysInTableModule.t.sol", "test": "testInstallGas", "name": "install keys in table module", - "gasUsed": 1408533 + "gasUsed": 1407532 }, { "file": "test/KeysInTableModule.t.sol", "test": "testInstallGas", "name": "set a record on a table with keysInTableModule installed", - "gasUsed": 159030 + "gasUsed": 158799 }, { "file": "test/KeysInTableModule.t.sol", "test": "testInstallSingleton", "name": "install keys in table module", - "gasUsed": 1408533 + "gasUsed": 1407532 }, { "file": "test/KeysInTableModule.t.sol", "test": "testSetAndDeleteRecordHookCompositeGas", "name": "install keys in table module", - "gasUsed": 1408533 + "gasUsed": 1407532 }, { "file": "test/KeysInTableModule.t.sol", "test": "testSetAndDeleteRecordHookCompositeGas", "name": "change a composite record on a table with keysInTableModule installed", - "gasUsed": 22571 + "gasUsed": 22494 }, { "file": "test/KeysInTableModule.t.sol", "test": "testSetAndDeleteRecordHookCompositeGas", "name": "delete a composite record on a table with keysInTableModule installed", - "gasUsed": 156371 + "gasUsed": 155678 }, { "file": "test/KeysInTableModule.t.sol", "test": "testSetAndDeleteRecordHookGas", "name": "install keys in table module", - "gasUsed": 1408533 + "gasUsed": 1407532 }, { "file": "test/KeysInTableModule.t.sol", "test": "testSetAndDeleteRecordHookGas", "name": "change a record on a table with keysInTableModule installed", - "gasUsed": 21293 + "gasUsed": 21216 }, { "file": "test/KeysInTableModule.t.sol", "test": "testSetAndDeleteRecordHookGas", "name": "delete a record on a table with keysInTableModule installed", - "gasUsed": 85329 + "gasUsed": 84944 }, { "file": "test/KeysWithValueModule.t.sol", "test": "testGetKeysWithValueGas", "name": "install keys with value module", - "gasUsed": 649692 + "gasUsed": 648845 }, { "file": "test/KeysWithValueModule.t.sol", "test": "testGetKeysWithValueGas", "name": "Get list of keys with a given value", - "gasUsed": 5712 + "gasUsed": 5635 }, { "file": "test/KeysWithValueModule.t.sol", @@ -81,61 +81,61 @@ "file": "test/KeysWithValueModule.t.sol", "test": "testInstall", "name": "install keys with value module", - "gasUsed": 649692 + "gasUsed": 648845 }, { "file": "test/KeysWithValueModule.t.sol", "test": "testInstall", "name": "set a record on a table with KeysWithValueModule installed", - "gasUsed": 135698 + "gasUsed": 135390 }, { "file": "test/KeysWithValueModule.t.sol", "test": "testSetAndDeleteRecordHook", "name": "install keys with value module", - "gasUsed": 649692 + "gasUsed": 648845 }, { "file": "test/KeysWithValueModule.t.sol", "test": "testSetAndDeleteRecordHook", "name": "change a record on a table with KeysWithValueModule installed", - "gasUsed": 104082 + "gasUsed": 103774 }, { "file": "test/KeysWithValueModule.t.sol", "test": "testSetAndDeleteRecordHook", "name": "delete a record on a table with KeysWithValueModule installed", - "gasUsed": 36693 + "gasUsed": 36462 }, { "file": "test/KeysWithValueModule.t.sol", "test": "testSetField", "name": "install keys with value module", - "gasUsed": 649692 + "gasUsed": 648845 }, { "file": "test/KeysWithValueModule.t.sol", "test": "testSetField", "name": "set a field on a table with KeysWithValueModule installed", - "gasUsed": 146907 + "gasUsed": 146599 }, { "file": "test/KeysWithValueModule.t.sol", "test": "testSetField", "name": "change a field on a table with KeysWithValueModule installed", - "gasUsed": 111666 + "gasUsed": 111358 }, { "file": "test/query.t.sol", "test": "testCombinedHasHasValueNotQuery", "name": "CombinedHasHasValueNotQuery", - "gasUsed": 105109 + "gasUsed": 104878 }, { "file": "test/query.t.sol", "test": "testCombinedHasHasValueQuery", "name": "CombinedHasHasValueQuery", - "gasUsed": 53579 + "gasUsed": 53348 }, { "file": "test/query.t.sol", @@ -153,13 +153,13 @@ "file": "test/query.t.sol", "test": "testCombinedHasValueNotQuery", "name": "CombinedHasValueNotQuery", - "gasUsed": 85116 + "gasUsed": 85039 }, { "file": "test/query.t.sol", "test": "testCombinedHasValueQuery", "name": "CombinedHasValueQuery", - "gasUsed": 15705 + "gasUsed": 15551 }, { "file": "test/query.t.sol", @@ -183,60 +183,60 @@ "file": "test/query.t.sol", "test": "testHasValueQuery", "name": "HasValueQuery", - "gasUsed": 7521 + "gasUsed": 7444 }, { "file": "test/query.t.sol", "test": "testNotValueQuery", "name": "NotValueQuery", - "gasUsed": 47175 + "gasUsed": 46944 }, { "file": "test/StandardDelegationsModule.t.sol", "test": "testCallFromCallboundDelegation", "name": "register a callbound delegation", - "gasUsed": 117623 + "gasUsed": 117315 }, { "file": "test/StandardDelegationsModule.t.sol", "test": "testCallFromCallboundDelegation", "name": "call a system via a callbound delegation", - "gasUsed": 36737 + "gasUsed": 36583 }, { "file": "test/StandardDelegationsModule.t.sol", "test": "testCallFromTimeboundDelegation", "name": "register a timebound delegation", - "gasUsed": 112117 + "gasUsed": 111809 }, { "file": "test/StandardDelegationsModule.t.sol", "test": "testCallFromTimeboundDelegation", "name": "call a system via a timebound delegation", - "gasUsed": 26822 + "gasUsed": 26745 }, { "file": "test/UniqueEntityModule.t.sol", "test": "testInstall", "name": "install unique entity module", - "gasUsed": 676231 + "gasUsed": 675076 }, { "file": "test/UniqueEntityModule.t.sol", "test": "testInstall", "name": "get a unique entity nonce (non-root module)", - "gasUsed": 51180 + "gasUsed": 51026 }, { "file": "test/UniqueEntityModule.t.sol", "test": "testInstallRoot", "name": "installRoot unique entity module", - "gasUsed": 643428 + "gasUsed": 642427 }, { "file": "test/UniqueEntityModule.t.sol", "test": "testInstallRoot", "name": "get a unique entity nonce (root module)", - "gasUsed": 51180 + "gasUsed": 51026 } ] diff --git a/packages/world/gas-report.json b/packages/world/gas-report.json index 3243c97e71..25d81bbf9d 100644 --- a/packages/world/gas-report.json +++ b/packages/world/gas-report.json @@ -45,115 +45,115 @@ "file": "test/BatchCall.t.sol", "test": "testBatchCallFromReturnData", "name": "call systems with batchCallFrom", - "gasUsed": 46608 + "gasUsed": 46377 }, { "file": "test/BatchCall.t.sol", "test": "testBatchCallReturnData", "name": "call systems with batchCall", - "gasUsed": 45405 + "gasUsed": 45174 }, { "file": "test/World.t.sol", "test": "testCall", "name": "call a system via the World", - "gasUsed": 12409 + "gasUsed": 12332 }, { "file": "test/World.t.sol", "test": "testCallFromNamespaceDelegation", "name": "call a system via a namespace fallback delegation", - "gasUsed": 26144 + "gasUsed": 26067 }, { "file": "test/World.t.sol", "test": "testCallFromUnlimitedDelegation", "name": "register an unlimited delegation", - "gasUsed": 47739 + "gasUsed": 47585 }, { "file": "test/World.t.sol", "test": "testCallFromUnlimitedDelegation", "name": "call a system via an unlimited delegation", - "gasUsed": 12845 + "gasUsed": 12768 }, { "file": "test/World.t.sol", "test": "testDeleteRecord", "name": "Delete record", - "gasUsed": 9911 + "gasUsed": 9834 }, { "file": "test/World.t.sol", "test": "testPushToDynamicField", "name": "Push data to the table", - "gasUsed": 85885 + "gasUsed": 85808 }, { "file": "test/World.t.sol", "test": "testRegisterFunctionSelector", "name": "Register a function selector", - "gasUsed": 83265 + "gasUsed": 83111 }, { "file": "test/World.t.sol", "test": "testRegisterNamespace", "name": "Register a new namespace", - "gasUsed": 121116 + "gasUsed": 120808 }, { "file": "test/World.t.sol", "test": "testRegisterRootFunctionSelector", "name": "Register a root function selector", - "gasUsed": 80549 + "gasUsed": 80395 }, { "file": "test/World.t.sol", "test": "testRegisterSystem", "name": "register a system", - "gasUsed": 162932 + "gasUsed": 162547 }, { "file": "test/World.t.sol", "test": "testRegisterTable", "name": "Register a new table in the namespace", - "gasUsed": 637753 + "gasUsed": 637323 }, { "file": "test/World.t.sol", "test": "testSetField", "name": "Write data to a table field", - "gasUsed": 36955 + "gasUsed": 36878 }, { "file": "test/World.t.sol", "test": "testSetRecord", "name": "Write data to the table", - "gasUsed": 36970 + "gasUsed": 36893 }, { "file": "test/WorldDynamicUpdate.t.sol", "test": "testPopFromDynamicField", "name": "pop 1 address (cold)", - "gasUsed": 23676 + "gasUsed": 23599 }, { "file": "test/WorldDynamicUpdate.t.sol", "test": "testPopFromDynamicField", "name": "pop 1 address (warm)", - "gasUsed": 12822 + "gasUsed": 12745 }, { "file": "test/WorldDynamicUpdate.t.sol", "test": "testSpliceDynamicData", "name": "update in field 1 item (cold)", - "gasUsed": 24027 + "gasUsed": 23950 }, { "file": "test/WorldDynamicUpdate.t.sol", "test": "testSpliceDynamicData", "name": "update in field 1 item (warm)", - "gasUsed": 13228 + "gasUsed": 13151 }, { "file": "test/WorldResourceId.t.sol",