chriseth
c554145f4d
Move stack height to generation phase.
2017-06-14 00:01:06 +02:00
chriseth
45d96959f8
Move LabelIDs to generation phase.
2017-06-13 22:01:15 +02:00
Alex Beregszaszi
05af6c9255
Warn if returndatasize/returndatacopy is used
2017-06-13 16:57:07 +02:00
Alex Beregszaszi
fe3b46554a
Merge pull request #2362 from ethereum/lowercase_instructions
...
Use lowercase when reporting instruction error.
2017-06-09 14:49:59 +01:00
chriseth
bf2b5c746a
Use lowercase when reporting instruction error.
2017-06-09 15:17:29 +02:00
Alex Beregszaszi
1da3af161f
Simplify CodeGenerator by remove seldom used case
2017-06-09 12:45:56 +01:00
Alex Beregszaszi
114c157b04
Remove obsolete AsmStack
2017-06-09 11:43:41 +01:00
chriseth
6b3e7f79cf
Comments and consistent variable names.
2017-06-09 10:45:36 +01:00
chriseth
308a726ad1
Fix: Copy resolver.
2017-06-08 15:52:45 +02:00
chriseth
b32d5e4cc0
Visitor bugfix.
2017-06-08 15:52:45 +02:00
chriseth
ef3d5874fe
Remove error reporter from code generation phase.
2017-06-08 15:52:45 +02:00
chriseth
19f707aeaa
Some more comments.
2017-06-08 15:52:45 +02:00
chriseth
0185f3cbf6
Correct stack height adjustment after returnsub.
2017-06-08 15:52:45 +02:00
chriseth
fefd3b866d
Introduce machine-dependent stack adjustment.
2017-06-08 15:52:45 +02:00
chriseth
97cc968a13
Initial EVM1.5 assembly implementation.
2017-06-08 15:52:44 +02:00
chriseth
d5408f78ad
Add comma.
2017-06-01 15:56:49 +02:00
chriseth
40f3e4413b
Improved error message.
2017-06-01 15:31:07 +02:00
chriseth
05004253ba
Refactor to use expectExpression in analyzer.
2017-06-01 14:28:39 +02:00
chriseth
d4a57d81ba
Merge pull request #2317 from ethereum/keccak256
...
Use keccak256 in tests and replace the SHA3 instruction in assembly
2017-05-30 19:34:28 +02:00
Rhett Aultman
89b60ffbd4
Refactor error reporting
...
This commit introduces ErrorReporter, a utility class which consolidates
all of the error logging functionality into a common set of functions.
It also replaces all direct interactions with an ErrorList with calls to
an ErrorReporter.
This commit resolves issue #2209
2017-05-30 07:28:31 -07:00
Alex Beregszaszi
75e4a2be1b
Alias sha3 to keccak256 in inline assembly
2017-05-30 10:54:29 +01:00
chriseth
8b29cc5535
Merge pull request #2319 from ethereum/virtualBlocks
...
Introduce virtual blocks for function arguments.
2017-05-29 16:52:51 +02:00
chriseth
4af55c78eb
Introduce virtual blocks for function arguments.
2017-05-29 16:18:16 +02:00
chriseth
9adff68ecc
Introduce LabelID typedef.
2017-05-29 15:40:32 +02:00
chriseth
2c4a107f43
Merge pull request #2311 from ethereum/julia-types
...
Validate types for Julia (part 1)
2017-05-29 14:12:38 +02:00
Alex Beregszaszi
9337003d5e
Use the new ParserBase API in AsmParser
2017-05-26 20:44:34 +01:00
Alex Beregszaszi
2a50e869d0
Move builtin type list to the top
2017-05-26 20:43:28 +01:00
Alex Beregszaszi
efadf7e41f
Change error message for invalid type
2017-05-26 20:42:17 +01:00
Alex Beregszaszi
8fe79fe706
Introduce Julia mode in AsmAnalyzer
2017-05-26 20:39:30 +01:00
Alex Beregszaszi
3b75c5b45f
Validate that only basic types are used in Julia
2017-05-26 20:39:10 +01:00
Alex Beregszaszi
dda497ca02
Move constructor to AsmAnalyzer header
2017-05-26 20:39:10 +01:00
chriseth
261731f7ee
Adapt EVM codegen to new namespace.
2017-05-26 15:08:27 +02:00
chriseth
71b923cc36
Move EVM codegen to libjulia.
2017-05-26 15:03:30 +02:00
chriseth
68e1e464be
Merge pull request #2316 from ethereum/inlineasm-cleanup
...
Better error message for elementary operations
2017-05-26 11:29:51 +02:00
Alex Beregszaszi
e410cec19a
Better error message for elementary operations
2017-05-26 09:41:53 +01:00
Alex Beregszaszi
05fcf1989c
Better error messages for invalid switch cases
2017-05-26 03:20:34 +01:00
Alex Beregszaszi
c64bd33784
Disallow instructions as a switch expression
2017-05-26 03:20:34 +01:00
Alex Beregszaszi
d745dd6542
Visit case bodies in scope filler
2017-05-26 03:20:34 +01:00
Alex Beregszaszi
ba8a79c600
Do not stop on first switch error
2017-05-26 03:20:31 +01:00
Alex Beregszaszi
e48e84ca2b
Check token within parseCase
2017-05-26 03:20:15 +01:00
Alex Beregszaszi
db3d9e0416
Switch cases are not followed by colon
2017-05-26 03:20:15 +01:00
Alex Beregszaszi
66eab1caf6
Change switch case string to Literal
2017-05-26 03:20:10 +01:00
Alex Beregszaszi
b5080860d5
Implement switch statement in the assembly parser/printer
2017-05-26 03:16:09 +01:00
Alex Beregszaszi
338202ea96
Uniform error messages
2017-05-24 13:35:52 +01:00
Alex Beregszaszi
56fe3a6ab9
Better error messages during parsing functional instructions
2017-05-24 13:35:52 +01:00
Alex Beregszaszi
74d41ad25f
Fix scope assert in AsmAnalyzer
2017-05-24 11:58:49 +01:00
Alex Beregszaszi
b77b11781d
Rename parseFunctionalInstruction to parseCall
2017-05-24 01:48:54 +01:00
Alex Beregszaszi
4f738ff1c0
Reorder AsmData for readability
2017-05-24 01:48:54 +01:00
Alex Beregszaszi
187fa50751
Rename FunctionalAssignment to Assignment
2017-05-24 01:48:53 +01:00
Alex Beregszaszi
f15d6ea45f
Rename Assignment to StackAssignment
2017-05-24 01:07:07 +01:00
Alex Beregszaszi
3451a30e5c
Display actual error message and not assertion in analysis
2017-05-22 18:45:34 +01:00
Alex Beregszaszi
cb4966046d
Enable a single right hand item on let
2017-05-22 18:45:34 +01:00
Alex Beregszaszi
15b4d4def2
Support multiple variables in a variable declaration in inline assembly
2017-05-22 18:45:34 +01:00
chriseth
7f5601fd4b
Add const
2017-05-19 20:15:28 +02:00
chriseth
69413ae32a
Review changes.
2017-05-19 20:12:12 +02:00
chriseth
e2b21e1c96
Refactor to abstract assembly to JULIA.
2017-05-19 19:20:28 +02:00
Alex Beregszaszi
ebcb27e5c1
Accept bool as a type in Julia mode
2017-05-19 09:44:16 +01:00
Alex Beregszaszi
edd0afa3c3
Support true/false literals in inline assembly
2017-05-19 09:44:16 +01:00
Alex Beregszaszi
8688b63fa6
Use boost range adaptors in AsmPrinter
2017-05-05 22:31:22 +01:00
Alex Beregszaszi
d6396ee85f
Parse types in Julia mode
2017-05-05 22:31:22 +01:00
Alex Beregszaszi
07176e82de
Assert that invalid AST elements are not printed in Julia mode
2017-05-05 14:21:25 +01:00
Alex Beregszaszi
c423e140ee
Add flag for JULIA printing
2017-05-05 14:21:25 +01:00
Alex Beregszaszi
804971973d
Show better error message for Julia mode
2017-05-05 14:21:25 +01:00
Alex Beregszaszi
f1f209db40
Do not allow literal pushes in Julia
2017-05-05 14:21:25 +01:00
Alex Beregszaszi
d61f9c4d4e
Disable labels in Julia
2017-05-05 14:21:25 +01:00
chriseth
28f10f4783
Remove error label / invalid jump label.
2017-04-28 13:14:52 +02:00
chriseth
f9bccab7b7
Merge pull request #2193 from ethereum/julia-assign-stack
...
Disallow assign from stack in Julia (=: var)
2017-04-27 22:00:33 +02:00
Alex Beregszaszi
20206a04dd
Disallow assign from stack in Julia (=: var)
2017-04-27 19:20:53 +01:00
Alex Beregszaszi
8020144d06
Do not validate identifiers against EVM instructions in JULIA
2017-04-27 18:16:42 +01:00
Alex Beregszaszi
01b60a4f8d
Add flag for JULIA parsing
2017-04-27 18:16:42 +01:00
Alex Beregszaszi
8b79517d47
Do not validate identifiers against EVM instructions in JULIA
2017-04-27 14:12:48 +01:00
Alex Beregszaszi
b48bc81d40
Add flag for JULIA parsing
2017-04-27 14:12:43 +01:00
Alex Beregszaszi
35f1cf92db
Remove parentheses from around function return parameters
2017-04-27 10:08:02 +01:00
chriseth
d7b3ce24a4
Check stack height during code generation.
2017-04-26 17:12:04 +02:00
chriseth
f3ec2ba39e
Refactor to combined scope and stack height info.
2017-04-26 17:12:04 +02:00
chriseth
68218387cf
Store stack height in analysis phase.
2017-04-26 12:34:24 +02:00
chriseth
1d712c7d64
Fix storage access tests.
2017-04-25 16:49:04 +02:00
chriseth
3df7b06464
Pass internal resolver to assembly analyzer.
2017-04-25 16:49:04 +02:00
chriseth
0ebaf220b5
Fix refactoring error.
2017-04-25 16:49:04 +02:00
chriseth
5f4b68e211
Another stack check.
2017-04-25 16:49:04 +02:00
chriseth
dfb7d5ebd9
Move analysis out of code generator.
2017-04-25 16:49:04 +02:00
chriseth
dfaab73efe
Only allow access to local variables and only if they have a stack size of one.
2017-04-25 16:49:04 +02:00
chriseth
f19e6a09a7
Check again that instruction argument count is correct.
2017-04-25 16:49:03 +02:00
chriseth
b622c2e9d3
Only run stack filler on AST elements that are or contain declarations.
2017-04-25 16:49:03 +02:00
chriseth
83bf34c571
Review comments and cleanup.
2017-04-25 16:49:03 +02:00
chriseth
4755757c00
Remove some errors checks from code generation (was moved to analysis already).
2017-04-25 16:49:03 +02:00
chriseth
580921b329
Perform stack height checks in assembly analysis phase.
2017-04-25 16:49:03 +02:00
chriseth
c4a0826f40
Add some missing error locations.
2017-04-25 16:49:03 +02:00
chriseth
c6fa78c73e
Use actual type checking phase of assembler.
2017-04-25 16:49:03 +02:00
chriseth
e0849f2f3b
Split external identifier access into resolving and code generation.
2017-04-25 16:49:03 +02:00
chriseth
5d6747eb32
Refactor assembly analysis into scope filling and checking.
2017-04-25 16:49:03 +02:00
chriseth
72fdf755c9
Register functions.
2017-04-25 16:49:03 +02:00
chriseth
4d715e9055
Implement missing assembly output functions and do not use PushString for assembly.
2017-04-11 19:54:44 +02:00
chriseth
f8ce32f2a6
Fix error message.
2017-03-03 15:41:02 +01:00
chriseth
369005fc03
Remove stack annotations again.
2017-03-03 15:41:02 +01:00
chriseth
13fd569f76
First reset stack height, then register variables.
2017-03-03 15:41:02 +01:00
chriseth
41236cd08c
Slightly cleaner label ids.
2017-03-03 15:41:02 +01:00
chriseth
e963405a19
Partially add functions.
2017-03-03 15:41:02 +01:00
chriseth
647473cf01
Generic visitor.
2017-03-03 15:41:02 +01:00
chriseth
caa3761dc9
Refactor variable access.
2017-03-03 15:41:02 +01:00