Alex Beregszaszi
55d2a459a9
Mark functions static in libevmasm
2017-09-11 15:15:02 +01:00
chriseth
15bdc48a73
Rename and add anonymous namespace.
2017-09-06 13:52:29 +02:00
chriseth
d6861d909c
Analyze assembly.
2017-09-06 13:52:29 +02:00
chriseth
7c61a6daf2
Add view/pure information about instructions.
2017-09-06 13:52:29 +02:00
chriseth
2d39a42d37
Merge pull request #2843 from ethereum/anonymous-cleanup
...
Move all file specific globals to anonymous namespace
2017-08-29 14:07:24 +02:00
Alex Beregszaszi
7fb4a64136
Move all file specific globals to anonymous namespace
2017-08-29 11:09:18 +01:00
gcolvin
7da86daa17
Reconcile EVM 1.5 instruction numbers with working draft EIP615
2017-08-28 23:27:13 +01:00
chriseth
6951a371ec
Cleanup of vector_ref.h
2017-08-25 19:36:48 +02:00
chriseth
82e4f6f604
Cleanup of FixedHash.h
2017-08-25 16:05:28 +02:00
chriseth
4b0e30d259
Cleanup of Common.h
2017-08-25 14:54:23 +02:00
Alex Beregszaszi
70e89a5dac
Introduce JumpdestRemover optimisation step
2017-08-25 10:42:36 +01:00
Alex Beregszaszi
3b07c4d38e
Merge pull request #2757 from ethereum/cmake
...
Static linking
2017-08-23 12:36:24 +01:00
chriseth
c5f11d938f
Merge pull request #2656 from ethereum/performance1
...
Avoid some Json copy operations.
2017-08-23 13:26:43 +02:00
Paweł Bylica
388fc983fa
CMake: Cleanup "local" include path
2017-08-22 22:50:25 +02:00
Alex Beregszaszi
f2d6226718
Some smaller issues found by Covertiy Scan
2017-08-22 13:55:28 +01:00
Alex Beregszaszi
f38429fef8
Switch stream properties back after temporary modification
2017-08-22 13:55:01 +01:00
Alex Beregszaszi
9897c56b2c
Mark a lot of functions static (where possible)
2017-08-22 10:51:46 +01:00
Alex Beregszaszi
2a5772cff7
Mark appropriate constructors explicit
2017-08-22 10:51:46 +01:00
Alex Beregszaszi
e2cfc9ee92
Mark a lot of functions const (where possible)
2017-08-22 10:51:46 +01:00
chriseth
e3f90565d8
Avoid some Json copy operations.
2017-08-21 16:28:30 +01:00
Paweł Bylica
63372e4a85
CMake: Simplify libevmasm config
2017-08-18 13:32:35 +02:00
Paweł Bylica
d1f4d110fb
CMake: Build static libs by default
2017-08-18 13:32:35 +02:00
Alex Beregszaszi
f9d5f7e497
Introduce fine-grained optimiser settings in libevmasm
2017-07-27 12:40:28 +01:00
chriseth
09e821619e
Refactor exceptions and provide comment function.
2017-07-13 11:34:03 +02:00
Alex Beregszaszi
32d6c1c316
MLOAD has side-effects, treat it like that in the optimiser
2017-06-30 21:27:39 +01:00
chriseth
168f64f4cb
Fix negative stack size checks.
2017-06-28 16:55:49 +01:00
Alex Beregszaszi
becea47ac3
Use assertThrow where possible
2017-06-22 11:25:06 +01:00
Alex Beregszaszi
bc95da354d
Replace obsolete assembly code in LLL
2017-06-21 21:23:39 +01:00
chriseth
57f79ebfa6
Remove debugbreak.
2017-06-20 19:21:29 +02:00
chriseth
fb5db94879
Merge pull request #2397 from ethereum/doublepush
...
Peephole optimizer for double push.
2017-06-15 10:50:07 +02:00
chriseth
3cb71ac516
Merge pull request #2398 from ethereum/assembly-cleanup
...
Remove obsolete features from libevmasm
2017-06-15 08:41:14 +02:00
chriseth
66881bd675
Merge branch 'develop' into asm-aux
2017-06-15 08:39:02 +02:00
Alex Beregszaszi
c08c4b8b6f
Move subroutine helpers from CompilerContext to Assembly
2017-06-14 21:21:26 +01:00
Alex Beregszaszi
6a260a9ff1
Remove single use Assembly::popTo
2017-06-14 21:21:26 +01:00
Alex Beregszaszi
18fc667658
Remove obsolete Assembly::out
2017-06-14 21:21:26 +01:00
Alex Beregszaszi
398099f50e
Remove obsolete errorTag()
2017-06-14 21:21:26 +01:00
Alex Beregszaszi
585b3ea3e3
Print auxiliary data in the assembly
2017-06-14 20:14:15 +01:00
Alex Beregszaszi
3273e865ec
Print assembly even if there's no data section
2017-06-14 19:51:02 +01:00
chriseth
e5b0ad562e
Peephole optimizer for double push.
2017-06-14 20:02:45 +02:00
Dimitry
c20cdd0a05
add new opcode instructions to the parser
...
STATICCALL 0xfa 6 inputs (gas address mem1 mem2 mem3 mem4)
2017-06-14 18:18:12 +02:00
Alex Beregszaszi
bec30051c5
Introduce CREATE2 in the assembler
2017-06-14 16:00:39 +02:00
Yoichi Hirai
9ff3064d03
Mention RETURNDATACOPY in GasMeter and SemanticInformation
2017-06-13 16:57:07 +02:00
Yoichi Hirai
0b22154a75
libevmasm: add RETURNDATACOPY and RETURNDATASIZE
2017-06-13 16:57:02 +02:00
chriseth
97cc968a13
Initial EVM1.5 assembly implementation.
2017-06-08 15:52:44 +02:00
Alex Beregszaszi
0c8beac357
Rename the SHA3 assembly instruction to KECCAK256
2017-05-30 10:54:29 +01:00
Alex Beregszaszi
af3a4b0642
Add simplification rule for SDIV(0,X) and SDIV(X,0)
2017-05-19 17:49:20 +01:00
Alex Beregszaszi
dc8eb3d846
Cleanup simplification rules
2017-05-19 17:49:20 +01:00
chriseth
b976d53e87
Add parentheses for readability.
2017-05-02 16:56:12 +02:00
chriseth
5c4f3f6d0b
Fix number representation bug.
2017-05-02 12:22:11 +02:00
Alex Beregszaszi
0e91b8fb98
Do not use the member in checkRepresentation
2017-04-27 14:06:58 +01:00
chriseth
c1e14d0119
Use OptimizerException to report error
2017-04-27 14:06:29 +01:00
chriseth
54210ea89f
Add recomputation check for number representation.
2017-04-27 14:06:28 +01:00
Yoichi Hirai
5176784b18
libevmasm: fix sloadGas in another file
2017-04-25 16:47:43 +02:00
Yoichi Hirai
362813f0d6
libevmasm: add a break
2017-04-25 16:47:43 +02:00
Yoichi Hirai
56e4b82696
libevmasm: reflect EIP 160 gas schedule change
2017-04-25 16:14:58 +02:00
Yoichi Hirai
4e24639e39
libevmasm: EIP150.c gas change
2017-04-25 16:14:58 +02:00
Yoichi Hirai
e54a3ead16
libevmasm: EIP150.a changes on SLOAD, CALL, CALLCODE, DELEGATECALL and SUICIDE
2017-04-25 16:14:58 +02:00
Yoichi Hirai
f2775f82d0
libevmadm: EIP150.a changes on EXTCODE, EXTCODESIZE and BALANCE
2017-04-25 16:14:58 +02:00
chriseth
8ebea783f4
Initialize local variables.
2017-04-12 16:30:27 +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
ddc4918f36
Add upper bound for computing constants.
2017-03-03 16:51:37 +01:00
chriseth
46d3c2dd3d
Print source location before items.
2017-02-24 08:24:34 +01:00
Alex Beregszaszi
148f923351
Add REVERT to libevmasm
2017-02-10 22:40:12 +00:00
Alex Beregszaszi
693226b1ab
Rename SUICIDE opcode to SELFDESTRUCT in libevmasm
2017-02-06 20:17:52 +00:00
Alex Beregszaszi
7ec3dd9bbc
More verbose log of when using invalid instructions
2017-02-02 11:39:29 +00:00
chriseth
ae2b59d18a
Fix optimizer with regards to INVALID instruction.
2017-01-26 16:39:07 +01:00
chriseth
c2b3d8bcd2
Change code for INVALID opcode to 0xfe.
2017-01-26 16:39:07 +01:00
Valentin Wüstholz
9bcbd93ac5
Change translation of implicit throws (issue #1589 ).
...
This adds a new invalid instruction that is used for encoding
implicit throws that are emitted by the compiler. This makes it
possible to distinguish such runtime errors from user-provided,
explicit throws.
2017-01-26 16:39:07 +01:00
chriseth
997f5d751a
Create functional assembly output, if possible.
2017-01-24 01:09:55 +01:00
chriseth
4713dd625d
Fix error tag usage in lll.
2017-01-23 15:46:03 +01:00
chriseth
7c18b785e3
Merge pull request #1584 from ethereum/tier
...
libevmasm: remove duplicate `Tier` from `Tier::xTier`s
2017-01-18 19:28:37 +01:00
chriseth
d3a391c136
Provide fallback for linking.
2017-01-18 17:41:36 +01:00
Yoichi Hirai
821997a1d3
libevmasm: remove duplicate Tier
from Tier::xTier
s
...
Synchronize with cpp-ethereum
2017-01-18 17:24:39 +01:00
Yoichi Hirai
20c62a132d
Make enum Tier into an enum class
2017-01-13 13:19:14 +01:00
chriseth
3cfa851f6f
Minor changes from review.
2017-01-12 17:53:06 +01:00
chriseth
d34b561f68
Windows build fix.
2017-01-12 17:52:27 +01:00
chriseth
58509ca3aa
Fix match groups.
2017-01-12 17:52:27 +01:00
chriseth
7127f2fdfd
Fix debug output.
2017-01-12 17:52:27 +01:00
chriseth
da5e171f3b
Optimize constant optimization.
2017-01-12 17:52:27 +01:00
chriseth
f1a4976ce6
Optimise simplification rules (sort into bins).
2017-01-12 17:52:26 +01:00
chriseth
652d8dab19
Optimize pattern matcher.
2017-01-12 17:52:26 +01:00
chriseth
afad40ac5a
Optimise AssemblyItem::m_data.
2017-01-12 17:52:26 +01:00
chriseth
49ac2a1ee5
Rename programSize to bytecodeSize.
2017-01-03 14:13:49 +01:00
chriseth
a285ca44f2
Assembly output for Assembly object.
2017-01-03 14:13:49 +01:00
Yoichi Hirai
2d60990238
libevmasm: OpPop() optimization keeps the source location
...
fixes #1521
2016-12-30 13:52:38 +01:00
chriseth
1e35526eb6
Fix tests.
2016-12-01 16:03:59 +01:00
chriseth
91ecc4533d
Add swarm hash to the end of the bytecode.
2016-12-01 16:03:59 +01:00
Yoichi Hirai
77bad18648
libevmasm: remove an unused variable total
2016-12-01 11:31:58 +01:00
Yoichi Hirai
df4b405f9c
Add more optimization rules
2016-11-30 11:16:43 +00:00
Alex Beregszaszi
3fdef92911
Replace XOR with self with 0
2016-11-30 11:16:43 +00:00
Alex Beregszaszi
b8bba66220
Replace XOR/ISZERO with EQ
2016-11-30 11:16:43 +00:00
Alex Beregszaszi
25160bfc26
Add optimiser rule for SUB with 0
2016-11-30 11:16:43 +00:00
chriseth
f521624952
Integrate AddPop.
2016-11-25 16:10:57 +01:00
chriseth
612c1726d9
Templatize.
2016-11-25 16:10:02 +01:00
chriseth
f2872bfa99
Peephole optimizer for unreacheable code.
2016-11-25 16:10:02 +01:00
Yoichi Hirai
b6ffb6c8b7
libevmasm: generalize ADDPOP optimization into ADDMODPOP etc
2016-11-24 18:22:22 +01:00
Yoichi Hirai
c0fe5fbe9b
libevmasm: Add another peephole optimization
2016-11-24 18:22:22 +01:00
VoR0220
3f9f725737
Fix licensing headers
...
Signed-off-by: VoR0220 <rj@erisindustries.com>
2016-11-23 12:22:33 +01:00
chriseth
7fb7d5ae39
Optimizer: Clear state for JUMPDESTs.
2016-11-22 14:58:24 +01:00
chriseth
2c14a96820
Some more assertions and style changes.
2016-11-16 15:09:01 +01:00