Merge pull request #11946 from ethereum/tests-userdefinedvaluetypes

UserDefinedValueType: test to validate zero-cost-abstraction claim.
This commit is contained in:
Harikrishnan Mulackal 2021-09-13 18:54:36 +02:00 committed by GitHub
commit c8c6d30808
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 75 additions and 0 deletions

View File

@ -0,0 +1,37 @@
// a test to compare the cost between using user defined value types and elementary type. See the
// test zero_cost_abstraction_userdefined.sol for a comparison.
pragma abicoder v2;
contract C {
int x;
function setX(int _x) external {
x = _x;
}
function getX() view external returns (int) {
return x;
}
function add(int a, int b) view external returns (int) {
return a + b;
}
}
// ====
// compileViaYul: also
// ----
// getX() -> 0
// gas irOptimized: 23353
// gas legacy: 23479
// gas legacyOptimized: 23311
// setX(int256): 5 ->
// gas irOptimized: 43511
// gas legacy: 43724
// gas legacyOptimized: 43516
// getX() -> 5
// gas irOptimized: 23353
// gas legacy: 23479
// gas legacyOptimized: 23311
// add(int256,int256): 200, 99 -> 299
// gas irOptimized: 21794
// gas legacy: 22394
// gas legacyOptimized: 21813

View File

@ -0,0 +1,38 @@
// a test to compare the cost between using user defined value types and elementary type. See the
// test zero_cost_abstraction_elementary.sol for comparison.
pragma abicoder v2;
type MyInt is int;
contract C {
int x;
function setX(MyInt _x) external {
x = MyInt.unwrap(_x);
}
function getX() view external returns (MyInt) {
return MyInt.wrap(x);
}
function add(MyInt a, MyInt b) pure external returns(MyInt) {
return MyInt.wrap(MyInt.unwrap(a) + MyInt.unwrap(b));
}
}
// ====
// compileViaYul: also
// ----
// getX() -> 0
// gas irOptimized: 23353
// gas legacy: 23608
// gas legacyOptimized: 23311
// setX(int256): 5 ->
// gas irOptimized: 43511
// gas legacy: 43724
// gas legacyOptimized: 43516
// getX() -> 5
// gas irOptimized: 23353
// gas legacy: 23608
// gas legacyOptimized: 23311
// add(int256,int256): 200, 99 -> 299
// gas irOptimized: 21794
// gas legacy: 22523
// gas legacyOptimized: 21813