Commit Graph
40 Commits
Author SHA1 Message Date
mingchuan f7ccdb6447 Implement WordSizeTransform
This transformation turns every u256 variable into four u64 variable.
Purpose is to transpile EVMDialect yul to WasmDialect yul.
2019-05-03 01:51:56 +08:00
chriseth ec0b78595d [Yul] Wasm dialect. 2019-04-25 17:27:17 +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