Commit Graph

358 Commits

Author SHA1 Message Date
chriseth
46ac16d25c Merge remote-tracking branch 'origin/develop' into develop_060 2019-11-04 19:09:11 +01:00
chriseth
62aa20137c
Merge pull request #7600 from ethereum/TypeConversionOnTheFly
[WASM] Inject type conversions on the fly if needed.
2019-11-04 16:20:57 +01:00
chriseth
a964a2026b
Merge pull request #7602 from ethereum/fixWasmTypes
Fix types of wasm builtins.
2019-11-04 13:04:25 +01:00
chriseth
8337de5189 [WASM] Inject type conversions on the fly if needed. 2019-11-01 15:44:39 +01:00
chriseth
e1438b72ad Fix types of wasm builtins. 2019-11-01 13:54:01 +01:00
chriseth
7f1593baa0 [WASM] datasize and dataoffset only return a single value. 2019-11-01 13:52:49 +01:00
Christian Parpart
112e63fe15 libyul: AST cleanup, eliminating dead Instruction AST type. 2019-11-01 12:32:25 +01:00
chriseth
21227d748c Update polyfill and set name. 2019-10-31 18:51:19 +01:00
chriseth
42b8c98567 Merge remote-tracking branch 'origin/develop' into develop_060 2019-10-31 18:03:25 +01:00
chriseth
04c62e2dc3 Fix local and globals wast functions. 2019-10-31 17:41:31 +01:00
chriseth
d605f89167
Merge pull request #7548 from ethereum/fixWasmLayout
Wasm: Fix layout for text conversion.
2019-10-29 17:52:34 +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
chriseth
607bf24afe
Merge pull request #7386 from ethereum/060-strict-inline-assembly
Defaulting to strict inline assembly (instead of loose)
2019-10-28 12:48:58 +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
3c1d12b16c Assembly: Remove errorTypeForLoose property from AsmAnalyzer. 2019-10-25 15:01:26 +02: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
f399d8415f Fix layout for text conversion. 2019-10-23 16:43:29 +02:00
chriseth
f8ade0122a Remove label from expression and add br_if. 2019-10-17 13:15:18 +02:00
chriseth
0657aff937 Remove continue from wasm. 2019-10-17 13:15:17 +02:00
chriseth
9ce1ca2340 Refactor Optimiser Steps Interface. 2019-09-24 14:52:01 +02:00
chriseth
4f80117eef Use builtin iszero for for loop condition rewriting. 2019-09-12 10:26:16 +02:00
chriseth
bb4e7de38c
Merge pull request #7234 from ethereum/extractSideEffects
[Yul] Extract side-effects into their own struct.
2019-08-14 16:00:17 +02:00
chriseth
7d30fbdef0 Extract side effects into their own struct. 2019-08-14 15:06:10 +02:00
Bhargava Shastry
ddc3ce0eae Avoid aggregate initialization of EWasmToText class 2019-08-14 13:40:46 +02:00
chriseth
35ca6ef5ed
Merge pull request #7079 from ethereum/moreWorkOnEWasmExternals
Add eWasm externals.
2019-07-16 14:51:43 +02:00
chriseth
6c31a5f3dd Improve formatting. 2019-07-11 17:37:23 +02:00
chriseth
e3433aa4eb Add eWasm externals. 2019-07-11 17:37:23 +02:00
chriseth
869d69d293 Supply full object to stack compressor and Optimizer Suite. 2019-07-10 18:49:42 +02:00
chriseth
4976b3ec67 More work on eWasm polyfill. 2019-07-01 13:05:20 +02:00
chriseth
d9db193249 Provide meta-information about eWasm builtins. 2019-07-01 13:01:18 +02:00
chriseth
e2bfb1a663 Translation of switch statement for wasm backend. 2019-06-27 13:02:35 +02:00
chriseth
8cd197e572 Support "datasize" and "dataoffset" with literals in eWasm. 2019-06-25 19:07:38 +02:00
chriseth
67f11104c1 EVM to eWasm translator. 2019-06-25 19:06:18 +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
ecab46c707 Finish word size transform. 2019-06-20 10:42:56 +02:00
chriseth
d4a6844e64
Merge pull request #6970 from ethereum/ewasmBoilerplate
Some eWasm boilerplate code.
2019-06-19 19:12:48 +02:00
chriseth
b704abdd75 Some eWasm boilerplate code. 2019-06-19 18:21:58 +02:00
chriseth
8edf9e4baf
Merge pull request #6666 from vedant1811/issue-5405
Group function definitions
2019-06-19 18:03:40 +02:00
chriseth
cc5045a56e [Yul] Run optimizer on all dialects. 2019-06-19 10:01:16 +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
0731abd3f6
Merge pull request #6782 from ethereum/makeVectorEWasmCodeTransform
Use make_vector in EWasmCodeTransform.
2019-05-20 13:07:56 +02:00
Daniel Kirchner
39670abe4d Use make_vector in EWasmCodeTransform. 2019-05-17 14:13:43 +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
Andrey Bronin
4eb37fe631 fix warning in GCC 9.1: redundant move in return statement 2019-05-14 17:44:28 +03:00
chriseth
3f55b52a88 Unify suffixes. 2019-05-09 17:07:18 +02:00
chriseth
eaee4412da Implement word size transform for if. 2019-05-09 16:55:39 +02:00
chriseth
7ab8cc60c9
Merge pull request #6556 from ethereum/wasmCodeTransform
Prototype for Wasm code transform
2019-05-07 17:48:48 +02:00
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
01d1d08fea Implement switch. 2019-05-02 18:39:54 +02:00
chriseth
c3705f268c Add global variables and support multi-return and multi-assignment. 2019-05-02 18:37:13 +02:00
chriseth
61e36cbfaa Activate ewasm dialect in commandline interface. 2019-05-02 18:36:48 +02:00
chriseth
f6c6871bce EWasm to text transformation. 2019-05-02 18:36:47 +02:00
chriseth
ec27f484a1 Prototype for Wasm code transform into in-memory representation. 2019-05-02 18:33:59 +02: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