chriseth
90c98a3289
Introduce typed EVM dialect.
2020-01-29 17:25:25 +01:00
chriseth
f0afb0aeff
Remove stack height checks.
2020-01-28 15:26:17 +01:00
chriseth
81569f7208
Remove Scope::Label.
2020-01-16 19:13:25 +01:00
chriseth
123ea0a250
Remove asm flavour.
2020-01-14 17:16:09 +01:00
Christian Parpart
345f9928ab
Library libdevcore renamed to libsolutil.
2020-01-07 15:51:50 +01:00
Christian Parpart
6b23412fae
C++ namespace cleanup (except tests).
2020-01-07 15:51:50 +01:00
chriseth
7db88cfedd
Remove yul::Instruction
.
2019-12-19 23:22:19 +01:00
chriseth
2f11ac3590
Merge remote-tracking branch 'origin/develop' into develop_060
2019-12-03 21:17:15 +01:00
Alex Beregszaszi
7e8f0a17bc
Replace all solAsserts with yulAsserts in libyul
2019-12-03 17:54:34 +01:00
chriseth
b0db64ff5b
Merge remote-tracking branch 'origin/develop' into develop_060
2019-11-26 16:19:35 +01:00
chriseth
40b4a876eb
Merge pull request #7778 from ethereum/generic_visitor_cpp17
...
Rewrite GenericVisitor
2019-11-26 16:09:38 +01:00
Leonardo Alt
2bfa3a7c97
Rewrite GenericVisitor
2019-11-26 15:55:06 +01:00
Alex Beregszaszi
991fbd2956
Replace uses of BOOST_THROW_EXCEPTION with assertThrow
...
Where appropriate.
2019-11-26 13:07:42 +01:00
Leonardo Alt
389da5228e
Merge remote-tracking branch 'origin/develop' into merge_develop_060
2019-11-20 12:27:40 +01:00
chriseth
5deaac0849
Merge pull request #7740 from ethereum/istanbul
...
Enable support for Istanbul
2019-11-20 10:49:27 +01:00
Leonardo Alt
be849b3c47
Replace boost::variant by std::variant in libyul
2019-11-19 17:23:18 +01:00
Alex Beregszaszi
840aba8929
Add new gas price for deployed bytecode (EIP2028)
2019-11-19 17:09:18 +01:00
Christian Parpart
f15d47f165
Yul: Remove obsoleted FunctionalInstruction.
2019-11-11 16:04:39 +01:00
Daniel Kirchner
0556f64722
Analyze inline assembly variable declarations for invalid or shadowing names.
2019-11-07 13:04:37 +01:00
chriseth
e275bb88f0
Fix windows build.
2019-11-06 02:06:19 +01:00
chriseth
ceb8ee9124
[Yul] leave statement.
2019-10-29 14:32:16 +01:00
chriseth
edf1e83fda
Merge remote-tracking branch 'origin/develop' into develop_060
2019-10-28 15:21:49 +01:00
Christian Parpart
df729b3084
Make use of C++17 std::optional<> instead of boost::optional<>.
2019-10-28 11:39:30 +01:00
Christian Parpart
dc2adb3d9d
Assembly: Removing EVMDialect::looseAssemblyForEVM().
2019-10-25 15:01:26 +02:00
Christian Parpart
e23998fc6e
Assembly: Remove Label instruction.
2019-10-25 15:01:25 +02:00
Christian Parpart
5e8d348f66
Assembly: Remove StackAssignment instruction.
2019-10-25 15:01:25 +02:00
chriseth
4f80117eef
Use builtin iszero for for loop condition rewriting.
2019-09-12 10:26:16 +02:00
chriseth
7d30fbdef0
Extract side effects into their own struct.
2019-08-14 15:06:10 +02:00
chriseth
2b979cba38
Also optimize memory.
2019-06-20 18:43:37 +02:00
chriseth
1f9d11c644
Knowledge about storage.
2019-06-20 18:43:37 +02:00
chriseth
8edf9e4baf
Merge pull request #6666 from vedant1811/issue-5405
...
Group function definitions
2019-06-19 18:03:40 +02:00
Vedant Agarwala
5d6cbd97df
[Yul] Directly jump over a series of function definitions
...
Implement a AbstractAssembly::setStackHeight function
Update the tests
Update Changelog
2019-06-19 12:40:11 +08:00
chriseth
6cb6fe35ef
Make Yul optimizer not fail for wasm.
2019-06-17 18:42:47 +02:00
chriseth
a3f721bbcc
Merge pull request #6583 from ethereum/reset_yulstringrepo
...
Reset YulStringRepository regularly
2019-05-28 14:20:53 +02:00
Bhargava Shastry
dbae0fa939
Reset Yul string repository before each compilation.
2019-05-28 13:12:39 +02:00
chriseth
afe887adc1
Split MovableChecker and introduce SideEffectsUpToMSize.
2019-05-28 12:54:32 +02:00
chriseth
9a00729ce7
Provide dialect to Parser and InlineAssembly AST nodes.
2019-05-23 00:24:58 +02:00
chriseth
1dc15d5864
Modify parser and optimizer.
2019-05-20 17:32:56 +02:00
chriseth
46d9df7574
Add EVM opcodes as builtins.
2019-05-20 16:46:31 +02:00
chriseth
003c170989
Add EVM instructions as builtin functions.
2019-05-20 16:46:31 +02:00
chriseth
4bdb981224
Make dialect const& and allocate single instances statically.
2019-05-17 12:54:24 +02:00
chriseth
570db164c9
Make Dialect const.
2019-05-16 21:51:54 +02:00
chriseth
9a387380b3
Move generation of builtin functions to helper.
2019-05-16 21:51:54 +02:00
chriseth
7de150924c
Extract subIDs from Dialect to allow it being const.
2019-05-16 21:51:54 +02:00
chriseth
e8a88b13e4
Introduce side-effect-free as relaxed version of movable.
2019-05-16 12:30:05 +02:00
chriseth
e82dcd1f91
Fix namespace.
2019-03-28 14:55:50 +01:00
chriseth
2b0c653f57
Merge pull request #6241 from ethereum/yul-bc-codegen
...
Yul codegen for break & continue statements
2019-03-28 14:48:50 +01:00
Christian Parpart
b8c6274179
[yul] Implements EVM codegen for break/continue plus respective tests & ChangeLog entry.
2019-03-28 14:09:25 +01:00
chriseth
2308904f68
Remove "using namespace" from header and move Instruction to dev::eth.
2019-03-28 13:48:11 +01:00
Alex Beregszaszi
c26ffa737e
Use move semantics on StackToDeepError
2019-03-26 16:15:16 +00:00
Christian Parpart
7f7f44dd63
Improve exception information in Yul function datasize(name) and dataoffset(name).
...
Makes sure we properly throw a detailed exception instead of an out_of_range from std::map.
2019-03-19 17:17:32 +01:00
chriseth
6d1ed93247
Use stack optimizations.
2019-03-14 15:34:23 +01:00
Christian Parpart
05e2d362c8
[Yul] Adds break/continue statements and some general tests for for-loop syntax.
2019-03-11 15:05:05 +01:00
Mathias Baumann
921d52bfcd
Move Literal to u256 conversions to extra functions
...
That way we can reuse them at different places
2019-03-05 18:39:27 +01:00
chriseth
9b7d793407
Fix windows build.
2019-02-26 19:43:24 +01:00
Leonardo Alt
2405b2151a
EVMVersion in langutil namespace instead of solidity
2019-02-25 15:29:57 +01:00
chriseth
7f5b335b47
Make EVM version part of EVM dialect.
2019-02-21 21:59:46 +01:00
chriseth
947215a901
Take builtin functions into account in the compilability checker.
2019-02-21 12:13:42 +01:00
chriseth
02373c2225
Adjust uses of AsmCodeGen.
2019-02-13 11:35:49 +01:00
chriseth
1ff6f2c71c
Move AsmCodeGen.
2019-02-13 11:20:15 +01:00
chriseth
22c8d74a8a
Store all stack errors before they are thrown.
2019-02-04 17:32:05 +01:00
chriseth
77baf6caf7
Compilability checker.
2019-02-04 17:32:05 +01:00
chriseth
dd5b43741c
No-output Assembly.
2019-02-04 17:32:04 +01:00
chriseth
17a1e7aed5
Better error message for out of stack in assembly.
2019-01-30 12:24:10 +01:00
chriseth
5b73c2ae3b
Take special functions that require literals into account.
2019-01-07 17:23:38 +01:00
Christian Parpart
62fe57479e
make use of C++ = default
constructor declarations as well as more non-static member initialization syntax.
2018-12-19 11:26:42 +01:00
Daniel Kirchner
5ac7620045
Use C++ user-defined literals for creating YulString constants.
2018-12-12 18:45:43 +01:00
Alex Beregszaszi
c863cbf80d
Add missing header guards
2018-12-12 15:47:05 +00:00
chriseth
fb3a0ac1c7
Codegen for object access.
2018-12-11 19:24:44 +01:00
chriseth
8d49e53995
Provide Dialect to EVMCodeTransform.
2018-12-11 19:24:31 +01:00
liangdzou
362648a450
Reuse stack slots in Yul to EVM code generation.
2018-12-10 14:28:56 +01:00
chriseth
3fc118ba21
Analyze and compile sub-objects.
2018-12-06 14:32:04 +01:00
chriseth
f6ed29b88b
Extend abstract assembly to be able to handle sub-objects.
2018-12-06 14:32:04 +01:00
Christian Parpart
8dd0338d12
Remove superfluous libyul/ASTDataForward.h and include libyul/AsmDataForward directly instead.
2018-11-23 14:29:05 +01:00
Christian Parpart
ec47c8946b
Isolating libyul library API into its own namespace yul
.
2018-11-23 14:29:00 +01:00
Christian Parpart
0f4ed52a71
Rewrite header paths to adapt to recent git mv
of libsolidity/inlineasm to libyul
2018-11-23 11:18:57 +01:00
Christian Parpart
d67322a186
Introduce namespace langutil
in liblangutil directory.
...
Also:
- Use {}-style list initialisation for SourceLocation construction
- Introduce new system includes
- Changes the API of the Scanner to take source as value (with move) as opposed to as a reference
2018-11-21 19:13:44 +00:00
Christian Parpart
87821c53c3
Isolating files shared between Yul- and Solidity language frontend.
2018-11-21 18:58:12 +00:00
mordax
ea8b7d803e
Removing redundant virtual from override function declaration
...
Remove trailing whitespace
Remove changelog change
2018-11-21 14:37:32 +00:00
chriseth
674e17c2a8
Performance: Replace string by special single-copy YulString class.
2018-11-07 19:30:27 +01:00
Christian Parpart
ab0de38f16
Eliminate byte
-typedef and use uint8_t
in all their places instead.
...
This change is made to (easily) be forward compatible with future C++
standards, in order to allow compiling the code with newer standards at
some point in the future.
* Removed the `using byte = uint8_t;` line from Common.h
* Mechanically change all uses of `byte` to `uint8_t`.
Tested with GCC 7.3 in C++11/14/17 modes :-)
2018-11-07 12:17:57 +01:00
Christian Parpart
1304361b9c
Renaming namespace dev::julia to dev::yul.
2018-10-15 11:58:51 +02:00
Christian Parpart
9a4bec7e47
Renaming libjulia to libyul
2018-10-15 11:52:35 +02:00