Skip to content

Commit 59ddee7

Browse files
committed
breaking changes: remove bounds checking, change index type
various optimizations. bounds checking is now responsibility of caller. index parameters and returns are now uint256. see PR #2
1 parent 85a1b68 commit 59ddee7

19 files changed

+981
-1120
lines changed

.gas-snapshot

Lines changed: 94 additions & 135 deletions
Original file line numberDiff line numberDiff line change
@@ -1,147 +1,106 @@
1-
ArrayTest:test_decodeEmptyArray() (gas: 3436)
2-
ArrayTest:test_decodeLargeArray() (gas: 3480)
3-
ArrayTest:test_decodeMixedArray() (gas: 6558)
4-
ArrayTest:test_decodeNestedArray() (gas: 7342)
5-
ArrayTest:test_decodeSingleElementArray() (gas: 4226)
6-
BytesTest:testFail_Bytes32_long() (gas: 773)
7-
BytesTest:testFail_Bytes32_parameter() (gas: 367)
8-
BytesTest:testFail_invalidBytes() (gas: 943)
9-
BytesTest:testFail_skipBytes() (gas: 514)
10-
BytesTest:test_Bytes32_short() (gas: 4275)
11-
BytesTest:test_decodeEmptyBytes() (gas: 3861)
12-
BytesTest:test_decodeLongBytes() (gas: 3868)
13-
BytesTest:test_decodeMediumBytes() (gas: 992)
14-
BytesTest:test_decodeShortBytes() (gas: 3861)
15-
BytesTest:test_skipBytes() (gas: 780)
1+
ArrayTest:test_decodeEmptyArray() (gas: 560)
2+
ArrayTest:test_decodeLargeArray() (gas: 606)
3+
ArrayTest:test_decodeMixedArray() (gas: 2048)
4+
ArrayTest:test_decodeNestedArray() (gas: 2281)
5+
ArrayTest:test_decodeSingleElementArray() (gas: 987)
6+
BytesTest:test_Bytes32_short() (gas: 846)
7+
BytesTest:test_decodeEmptyBytes() (gas: 760)
8+
BytesTest:test_decodeLongBytes() (gas: 851)
9+
BytesTest:test_decodeMediumBytes() (gas: 830)
10+
BytesTest:test_decodeShortBytes() (gas: 777)
11+
BytesTest:test_skipBytes() (gas: 653)
1612
ComparisonTest:test_decodeArrayU8_CBORDecoder() (gas: 5274)
1713
ComparisonTest:test_decodeArrayU8_ReadCbor() (gas: 2334)
1814
ComparisonTest:test_decodeFalse_CBORDecoder() (gas: 916)
19-
ComparisonTest:test_decodeFalse_ReadCbor() (gas: 437)
15+
ComparisonTest:test_decodeFalse_ReadCbor() (gas: 425)
2016
ComparisonTest:test_decodeFixedArray_CBORDecoder() (gas: 9207)
21-
ComparisonTest:test_decodeFixedArray_ReadCbor() (gas: 4402)
17+
ComparisonTest:test_decodeFixedArray_ReadCbor() (gas: 4234)
2218
ComparisonTest:test_decodeInteger_CBORDecoder() (gas: 884)
2319
ComparisonTest:test_decodeInteger_ReadCbor() (gas: 554)
2420
ComparisonTest:test_decodeNull_CBORDecoder() (gas: 396)
2521
ComparisonTest:test_decodeNull_ReadCbor() (gas: 240)
2622
ComparisonTest:test_decodeStringWithWeirdChar_CBORDecoder() (gas: 2356)
27-
ComparisonTest:test_decodeStringWithWeirdChar_ReadCbor() (gas: 1052)
23+
ComparisonTest:test_decodeStringWithWeirdChar_ReadCbor() (gas: 884)
2824
ComparisonTest:test_decodeString_CBORDecoder() (gas: 3869)
29-
ComparisonTest:test_decodeString_ReadCbor() (gas: 1125)
25+
ComparisonTest:test_decodeString_ReadCbor() (gas: 957)
3026
ComparisonTest:test_decodeTrue_CBORDecoder() (gas: 937)
31-
ComparisonTest:test_decodeTrue_ReadCbor() (gas: 495)
32-
HeaderTest:testFail_header32_badu8() (gas: 608)
33-
HeaderTest:testFail_header32_u64() (gas: 614)
34-
HeaderTest:testFail_header8_expectMajor() (gas: 497)
35-
HeaderTest:testFail_header_badext() (gas: 697)
36-
HeaderTest:testFail_header_expectMajor() (gas: 472)
37-
HeaderTest:testFail_header_expectMinor_failmajor() (gas: 499)
38-
HeaderTest:testFail_parseArg_unsupportedMinor(uint8) (runs: 256, μ: 3986, ~: 3986)
39-
HeaderTest:test_header() (gas: 4270)
40-
HeaderTest:test_header32_u16() (gas: 3643)
41-
HeaderTest:test_header32_u32() (gas: 3617)
27+
ComparisonTest:test_decodeTrue_ReadCbor() (gas: 483)
28+
HeaderTest:test_header() (gas: 651)
29+
HeaderTest:test_header32_u16() (gas: 726)
30+
HeaderTest:test_header32_u32() (gas: 700)
4231
MapTest:test_decodeEmptyMap() (gas: 539)
43-
MapTest:test_decodeNestedMap() (gas: 4369)
44-
MapTest:test_decodeSingleKeyMap() (gas: 5909)
45-
MapTest:test_deeplyNestedStructure() (gas: 10262)
46-
NIntTest:testFail_badInt() (gas: 452)
47-
NIntTest:testFail_invalidNInt8() (gas: 668)
48-
NIntTest:testFail_notNInt8() (gas: 575)
49-
NIntTest:testFail_outOfBoundsNInt16() (gas: 539)
50-
NIntTest:test_decodeLongNInt8() (gas: 3653)
51-
NIntTest:test_decodeNInt16() (gas: 3806)
52-
NIntTest:test_decodeNInt32() (gas: 3789)
53-
NIntTest:test_decodeNInt64() (gas: 3826)
54-
NIntTest:test_decodeNInt8() (gas: 3674)
55-
NIntTest:test_decodeShortNInt8() (gas: 3577)
56-
NIntTest:test_decodeSmallNInts() (gas: 4422)
57-
PeekTest:test_isArray_false() (gas: 3181)
58-
PeekTest:test_isArray_true() (gas: 3160)
59-
PeekTest:test_isBool_false() (gas: 3158)
60-
PeekTest:test_isBool_true() (gas: 3598)
61-
PeekTest:test_isBytes_false() (gas: 3201)
62-
PeekTest:test_isBytes_true() (gas: 3159)
63-
PeekTest:test_isInt_false() (gas: 3179)
64-
PeekTest:test_isInt_true() (gas: 3687)
65-
PeekTest:test_isMap_false() (gas: 3157)
66-
PeekTest:test_isMap_true() (gas: 3182)
67-
PeekTest:test_isNInt_false() (gas: 3218)
68-
PeekTest:test_isNInt_true() (gas: 3160)
69-
PeekTest:test_isNull_false() (gas: 3241)
70-
PeekTest:test_isNull_true() (gas: 3182)
71-
PeekTest:test_isString_false() (gas: 3181)
72-
PeekTest:test_isString_true() (gas: 3161)
73-
PeekTest:test_isTag_expect_badminor() (gas: 3720)
74-
PeekTest:test_isTag_expect_false() (gas: 3333)
75-
PeekTest:test_isTag_expect_rand_16(uint16) (runs: 256, μ: 3617, ~: 3617)
76-
PeekTest:test_isTag_expect_rand_64(uint32) (runs: 256, μ: 3628, ~: 3628)
77-
PeekTest:test_isTag_expect_rand_64(uint64) (runs: 256, μ: 3601, ~: 3601)
78-
PeekTest:test_isTag_expect_true() (gas: 3319)
79-
PeekTest:test_isTag_false() (gas: 3179)
80-
PeekTest:test_isTag_false_expect() (gas: 3281)
81-
PeekTest:test_isTag_true() (gas: 3181)
82-
PeekTest:test_isUInt_false() (gas: 3202)
83-
PeekTest:test_isUInt_true() (gas: 3227)
84-
PeekTest:test_isUndefined_false() (gas: 3240)
85-
PeekTest:test_isUndefined_true() (gas: 3162)
86-
RangeTest:testFail_requireComplete() (gas: 369)
87-
RangeTest:testFail_requireRange() (gas: 404)
88-
RangeTest:test_requireComplete() (gas: 321)
89-
RangeTest:test_requireRange() (gas: 3712)
90-
ReadBignum_Test:testFail_Int256_notbignum() (gas: 775)
91-
ReadBignum_Test:testFail_Integer_UInt256_max() (gas: 2163)
92-
ReadBignum_Test:testFail_NInt256_large() (gas: 1506)
93-
ReadBignum_Test:testFail_NInt256_maxu256() (gas: 1534)
94-
ReadBignum_Test:testFail_NInt256_overflow() (gas: 1600)
95-
ReadBignum_Test:testFail_UInt256_large() (gas: 1450)
96-
ReadBignum_Test:test_Integer() (gas: 14240)
97-
ReadBignum_Test:test_NInt256_max() (gas: 4803)
98-
ReadBignum_Test:test_NInt256_middle() (gas: 6075)
99-
ReadBignum_Test:test_NInt256_multi() (gas: 4296)
100-
ReadBignum_Test:test_NInt256_random(int256) (runs: 256, μ: 5706, ~: 5706)
101-
ReadBignum_Test:test_NInt256_single() (gas: 4297)
102-
ReadBignum_Test:test_UInt256_max() (gas: 4530)
103-
ReadBignum_Test:test_UInt256_middle() (gas: 5809)
104-
ReadBignum_Test:test_UInt256_multi() (gas: 4096)
105-
ReadBignum_Test:test_UInt256_random(uint256) (runs: 256, μ: 4589, ~: 4589)
106-
ReadBignum_Test:test_UInt256_single() (gas: 4389)
107-
ReadCidSha256_Test:testFail_Cid_NullableCid_zeroes() (gas: 903)
108-
ReadCidSha256_Test:testFail_Cid_nullCbor() (gas: 765)
109-
ReadCidSha256_Test:testFail_Cid_zeroCidCbor() (gas: 800)
110-
ReadCidSha256_Test:test_Cid() (gas: 1133)
111-
ReadCidSha256_Test:test_Cid_multicodec_raw() (gas: 1079)
112-
ReadCidSha256_Test:test_Cid_random(uint256) (runs: 256, μ: 4540, ~: 4540)
113-
ReadCidSha256_Test:test_NullableCid_nullCbor() (gas: 3440)
114-
ReadCidSha256_Test:test_NullableCid_random(uint256) (runs: 256, μ: 4397, ~: 4409)
115-
SimpleTest:testFail_decodeBool() (gas: 518)
116-
SimpleTest:testFail_skipNull() (gas: 440)
117-
SimpleTest:testFail_skipUndefined() (gas: 450)
118-
SimpleTest:test_decodeFalse() (gas: 3317)
119-
SimpleTest:test_decodeTrue() (gas: 3323)
120-
SimpleTest:test_skipNull() (gas: 431)
121-
SimpleTest:test_skipUndefined() (gas: 474)
122-
StringTest:testFail_String1() (gas: 460)
123-
StringTest:testFail_String32_long() (gas: 788)
124-
StringTest:testFail_String32_parameter() (gas: 346)
125-
StringTest:testFail_invalidString() (gas: 989)
126-
StringTest:testFail_skipString() (gas: 514)
127-
StringTest:test_String1() (gas: 3379)
128-
StringTest:test_String32_short() (gas: 4254)
129-
StringTest:test_decodeEmptyString() (gas: 3807)
130-
StringTest:test_decodeLongString() (gas: 3851)
131-
StringTest:test_decodeMediumString() (gas: 992)
132-
StringTest:test_decodeShortString() (gas: 3871)
133-
StringTest:test_skipString() (gas: 782)
134-
TagTest:testFail_notTag() (gas: 671)
135-
TagTest:testFail_unexpectedTag() (gas: 702)
136-
TagTest:test_decodeExpectedTag() (gas: 682)
137-
TagTest:test_decodeTag() (gas: 3591)
138-
UIntTest:testFail_invalidUInt8() (gas: 643)
139-
UIntTest:testFail_notUInt8() (gas: 574)
140-
UIntTest:testFail_outOfBoundsUInt16() (gas: 580)
141-
UIntTest:test_decodeLongUInt8() (gas: 3512)
142-
UIntTest:test_decodeShortUInt8() (gas: 3457)
143-
UIntTest:test_decodeSmallInts() (gas: 4164)
144-
UIntTest:test_decodeUInt16() (gas: 3633)
145-
UIntTest:test_decodeUInt32() (gas: 3661)
146-
UIntTest:test_decodeUInt64() (gas: 3709)
147-
UIntTest:test_decodeUInt8() (gas: 3513)
32+
MapTest:test_decodeNestedMap() (gas: 6619)
33+
MapTest:test_decodeSingleKeyMap() (gas: 1764)
34+
MapTest:test_deeplyNestedStructure() (gas: 3560)
35+
NIntTest:test_decodeLongNInt8() (gas: 768)
36+
NIntTest:test_decodeNInt16() (gas: 918)
37+
NIntTest:test_decodeNInt32() (gas: 901)
38+
NIntTest:test_decodeNInt64() (gas: 938)
39+
NIntTest:test_decodeNInt8() (gas: 789)
40+
NIntTest:test_decodeShortNInt8() (gas: 689)
41+
NIntTest:test_decodeSmallNInts() (gas: 1155)
42+
PeekTest:test_isArray_false() (gas: 317)
43+
PeekTest:test_isArray_true() (gas: 312)
44+
PeekTest:test_isBool_false() (gas: 305)
45+
PeekTest:test_isBool_true() (gas: 364)
46+
PeekTest:test_isBytes_false() (gas: 348)
47+
PeekTest:test_isBytes_true() (gas: 311)
48+
PeekTest:test_isInt_false() (gas: 326)
49+
PeekTest:test_isInt_true() (gas: 488)
50+
PeekTest:test_isMap_false() (gas: 304)
51+
PeekTest:test_isMap_true() (gas: 334)
52+
PeekTest:test_isNInt_false() (gas: 353)
53+
PeekTest:test_isNInt_true() (gas: 312)
54+
PeekTest:test_isNull_false() (gas: 376)
55+
PeekTest:test_isNull_true() (gas: 334)
56+
PeekTest:test_isString_false() (gas: 328)
57+
PeekTest:test_isString_true() (gas: 313)
58+
PeekTest:test_isTag_expect_badminor() (gas: 858)
59+
PeekTest:test_isTag_expect_false() (gas: 468)
60+
PeekTest:test_isTag_expect_rand_16(uint16) (runs: 256, μ: 766, ~: 766)
61+
PeekTest:test_isTag_expect_rand_64(uint32) (runs: 256, μ: 777, ~: 777)
62+
PeekTest:test_isTag_expect_rand_64(uint64) (runs: 256, μ: 750, ~: 750)
63+
PeekTest:test_isTag_expect_true() (gas: 459)
64+
PeekTest:test_isTag_false() (gas: 326)
65+
PeekTest:test_isTag_false_expect() (gas: 413)
66+
PeekTest:test_isTag_true() (gas: 333)
67+
PeekTest:test_isUInt_false() (gas: 349)
68+
PeekTest:test_isUInt_true() (gas: 370)
69+
PeekTest:test_isUndefined_false() (gas: 375)
70+
PeekTest:test_isUndefined_true() (gas: 303)
71+
ReadBignum_Test:test_Integer() (gas: 12559)
72+
ReadBignum_Test:test_NInt256_max() (gas: 1697)
73+
ReadBignum_Test:test_NInt256_middle() (gas: 2134)
74+
ReadBignum_Test:test_NInt256_multi() (gas: 1190)
75+
ReadBignum_Test:test_NInt256_random(int256) (runs: 256, μ: 5100, ~: 5100)
76+
ReadBignum_Test:test_NInt256_single() (gas: 1191)
77+
ReadBignum_Test:test_UInt256_max() (gas: 1502)
78+
ReadBignum_Test:test_UInt256_middle() (gas: 1946)
79+
ReadBignum_Test:test_UInt256_multi() (gas: 1068)
80+
ReadBignum_Test:test_UInt256_random(uint256) (runs: 256, μ: 1561, ~: 1561)
81+
ReadBignum_Test:test_UInt256_single() (gas: 1364)
82+
ReadCidSha256_Test:test_Cid() (gas: 521)
83+
ReadCidSha256_Test:test_Cid_multicodec_raw() (gas: 449)
84+
ReadCidSha256_Test:test_Cid_random(uint256) (runs: 256, μ: 3520, ~: 3520)
85+
ReadCidSha256_Test:test_NullableCid_nullCbor() (gas: 519)
86+
ReadCidSha256_Test:test_NullableCid_random(uint256) (runs: 256, μ: 885, ~: 889)
87+
SimpleTest:test_decodeFalse() (gas: 424)
88+
SimpleTest:test_decodeTrue() (gas: 438)
89+
SimpleTest:test_skipNull() (gas: 412)
90+
SimpleTest:test_skipUndefined() (gas: 455)
91+
StringTest:test_String1() (gas: 457)
92+
StringTest:test_String32_short() (gas: 805)
93+
StringTest:test_decodeEmptyString() (gas: 755)
94+
StringTest:test_decodeLongString() (gas: 801)
95+
StringTest:test_decodeMediumString() (gas: 852)
96+
StringTest:test_decodeShortString() (gas: 778)
97+
StringTest:test_skipString() (gas: 677)
98+
TagTest:test_decodeExpectedTag() (gas: 627)
99+
TagTest:test_decodeTag() (gas: 666)
100+
UIntTest:test_decodeLongUInt8() (gas: 636)
101+
UIntTest:test_decodeShortUInt8() (gas: 578)
102+
UIntTest:test_decodeSmallInts() (gas: 913)
103+
UIntTest:test_decodeUInt16() (gas: 751)
104+
UIntTest:test_decodeUInt32() (gas: 779)
105+
UIntTest:test_decodeUInt64() (gas: 827)
106+
UIntTest:test_decodeUInt8() (gas: 634)

0 commit comments

Comments
 (0)