aboutsummaryrefslogtreecommitdiffstats
path: root/libevmasm
Commit message (Collapse)AuthorAgeFilesLines
* Replace safety stop by invalidLeonardo Alt2018-08-141-2/+2
|
* Explicitly use std::next to avoid boost version.chriseth2018-08-091-1/+1
|
* Use dev::toString() in Assembly instead of misusing string{} for u256Alex Beregszaszi2018-08-091-2/+2
|
* Fix typoLeo Arias2018-08-081-1/+1
|
* Added guards for unknown pragmasAugusto F. Hack2018-08-061-4/+10
| | | | | | | | | | | | | | | Removed push/pop if there was no change to the warnings *in the same file* for a given compiler. This assumes the imported boost headers use a warning stack themselves. The pragmas don't seem to be required anymore, but were not removed to mantain compatibility with older versions of the boost library. Compiled with - clang version 6.0.1 (tags/RELEASE_601/final) - gcc (GCC) 8.1.1 20180531 against: - libboost 1.67.0-5
* evmasm/Instruction: fixes undefined behavior of advancing iterator beyond ↵Christian Parpart2018-08-031-3/+11
| | | | | | the end of a container. Usually the STL doesn't check whether or not the developer advances beyond its container's end, but MSVC does (found out by running soltest in debug mode on Win32 / VS2017).
* Merge pull request #4473 from ethereum/fixGasTuplechriseth2018-07-111-3/+4
|\ | | | | Fix comparison operator for GasConsumption.
| * Fix comparison operator for GasConsumption.chriseth2018-07-111-3/+4
| |
* | Code, Changelog, ReleaseChecklist: Fix typos.Cryptomental2018-07-114-4/+4
|/ | | | Refs: #4442
* As SWITCH..CASE is better than ELSE..IFKhan M Rashedun-Naby2018-07-021-8/+13
|
* Add TruthyAnd Peephole optimizationNicolás Venturo2018-06-151-1/+18
|
* Follow highest gas usage only for gas estimation.chriseth2018-05-092-5/+24
|
* Merge pull request #4028 from ethereum/asm-tags-32bitchriseth2018-05-021-2/+2
|\ | | | | Restrict assembly tags to 32-bit
| * Restrict assembly tags to 32-bitAlex Beregszaszi2018-05-011-2/+2
| |
* | Add virtual destructors on base classes.Alexander Arlt2018-05-022-0/+3
|/
* Ensure that subId and tag handling is correct on all compilers in AssemblyItemAlex Beregszaszi2018-04-301-4/+12
|
* Fix comment typosOmar Boukli-Hacene2018-04-271-7/+7
|
* CMake: remove direct jsoncpp dependency in libevmasmAlexander Arlt2018-04-211-1/+1
|
* Remove unnecessary masking of the result of known short instructionsAlex Beregszaszi2018-04-201-0/+20
|
* Add constant optimiser for SHR/SHL instructionsAlex Beregszaszi2018-04-101-0/+10
|
* Replace comparison operators with opposites if preceded by SWAP1Alex Beregszaszi2018-04-041-1/+27
|
* Remove useless SWAP1 in front of commutative operationsAlex Beregszaszi2018-04-041-1/+20
|
* Optimize across MLOAD if MSIZE is not used.chriseth2018-04-035-7/+17
|
* Use EVM version in gas meter and optimizer.chriseth2018-03-058-31/+83
|
* Remove ROL/ROR as they are not part of EIP145 anymoreAlex Beregszaszi2018-02-272-6/+0
|
* Add bitwise shift operators to libevmasm (EIP145)Alex Beregszaszi2018-02-272-1/+16
|
* Replace MOD with AND if constant is power of 2Alex Beregszaszi2018-02-131-0/+11
|
* Turn simplification rule tuple into struct.chriseth2018-02-075-19/+63
|
* Remove recursive call to simplify with reversed arguments.chriseth2018-02-072-10/+2
| | | | (We now have explicit rules for that).
* Explicitly add reversed operands for commutative operations.chriseth2018-02-071-34/+56
|
* Expression simplifier.chriseth2018-02-071-0/+5
|
* Add flag to indicate whether it can be applied to expressions with side-effects.chriseth2018-02-074-87/+104
|
* Move out the rule list.chriseth2018-02-072-163/+217
|
* Prevent libraries from being called.chriseth2018-01-195-1/+22
|
* Movability.chriseth2018-01-132-0/+29
|
* Replaced solAssert in Jumpdest optimizationIsaac van Bakel2017-11-261-3/+1
| | | | | | This is the only use of solAssert in libevmasm, and the only dependency on libsolidity. There is no justification for why the illegal state is checked here.
* Merge pull request #3077 from ethereum/optimze_popschriseth2017-10-172-2/+12
|\ | | | | Assume peephole optimizer was successful if number of pops increased.
| * Throw on too many peephole optimizer iterations.chriseth2017-10-171-1/+4
| |
| * Assume peephole optimizer was successful if number of pops increased.chriseth2017-10-142-3/+10
| |
* | Allow ``gas`` in view functions.chriseth2017-10-161-1/+1
|/
* Remove duplicate EVMScheduleAlex Beregszaszi2017-10-031-62/+0
|
* Use isDup/SwapInstruction helperAlex Beregszaszi2017-10-032-5/+3
|
* Add helpers for isPush/isDup/isSwapAlex Beregszaszi2017-10-021-0/+18
|
* CMake: Cleanup include pathsPaweł Bylica2017-09-271-1/+1
|
* Ensure parameter names match between headers and implementationAlex Beregszaszi2017-09-202-3/+3
|
* Merge pull request #2922 from ethereum/asm-bytes-requiredchriseth2017-09-181-3/+3
|\ | | | | Properly calculate bytesRequired for subs
| * Properly calculate bytesRequired for subsAlex Beregszaszi2017-09-181-3/+3
| |
* | Add useful messages to exceptions in the assemblerAlex Beregszaszi2017-09-181-3/+3
|/
* Named assembly labels.chriseth2017-09-162-0/+14
|
* Merge pull request #2848 from ethereum/checkViewPurechriseth2017-09-142-0/+55
|\ | | | | Enforce view and pure.
| * Rename to invalidInPureFunctionschriseth2017-09-132-2/+2
| |
| * Rename and add anonymous namespace.chriseth2017-09-062-2/+2
| |
| * Analyze assembly.chriseth2017-09-061-0/+1
| |
| * Add view/pure information about instructions.chriseth2017-09-062-0/+54
| |
* | Introduce assemblyStringAlex Beregszaszi2017-09-112-0/+10
| |
* | Do not return the stream in asssemblyStreamAlex Beregszaszi2017-09-112-4/+2
| |
* | Split out the JSON functionality from assembly.stream()Alex Beregszaszi2017-09-112-23/+13
| |
* | Mark functions static in libevmasmAlex Beregszaszi2017-09-112-3/+4
|/
* Merge pull request #2843 from ethereum/anonymous-cleanupchriseth2017-08-291-0/+5
|\ | | | | Move all file specific globals to anonymous namespace
| * Move all file specific globals to anonymous namespaceAlex Beregszaszi2017-08-291-0/+5
| |
* | Reconcile EVM 1.5 instruction numbers with working draft EIP615gcolvin2017-08-291-9/+11
|/
* Cleanup of vector_ref.hchriseth2017-08-261-1/+1
|
* Cleanup of FixedHash.hchriseth2017-08-251-1/+4
|
* Cleanup of Common.hchriseth2017-08-252-3/+8
|
* Introduce JumpdestRemover optimisation stepAlex Beregszaszi2017-08-254-10/+146
|
* Merge pull request #2757 from ethereum/cmakeAlex Beregszaszi2017-08-231-13/+4
|\ | | | | Static linking
| * CMake: Cleanup "local" include pathPaweł Bylica2017-08-231-1/+0
| |
| * CMake: Simplify libevmasm configPaweł Bylica2017-08-181-11/+5
| |
| * CMake: Build static libs by defaultPaweł Bylica2017-08-181-2/+0
| |
* | Merge pull request #2656 from ethereum/performance1chriseth2017-08-231-5/+2
|\ \ | | | | | | Avoid some Json copy operations.
| * | Avoid some Json copy operations.chriseth2017-08-211-5/+2
| |/
* | Some smaller issues found by Covertiy ScanAlex Beregszaszi2017-08-222-1/+2
| |
* | Switch stream properties back after temporary modificationAlex Beregszaszi2017-08-221-6/+6
| |
* | Mark a lot of functions static (where possible)Alex Beregszaszi2017-08-222-4/+4
| |
* | Mark appropriate constructors explicitAlex Beregszaszi2017-08-223-3/+3
| |
* | Mark a lot of functions const (where possible)Alex Beregszaszi2017-08-222-16/+16
|/
* Introduce fine-grained optimiser settings in libevmasmAlex Beregszaszi2017-07-272-17/+60
|
* Refactor exceptions and provide comment function.chriseth2017-07-132-10/+11
|
* MLOAD has side-effects, treat it like that in the optimiserAlex Beregszaszi2017-07-011-1/+1
|
* Fix negative stack size checks.chriseth2017-06-281-0/+1
|
* Use assertThrow where possibleAlex Beregszaszi2017-06-221-8/+5
|
* Replace obsolete assembly code in LLLAlex Beregszaszi2017-06-222-12/+0
|
* Remove debugbreak.chriseth2017-06-211-3/+3
|
* Merge pull request #2397 from ethereum/doublepushchriseth2017-06-153-7/+29
|\ | | | | Peephole optimizer for double push.
| * Peephole optimizer for double push.chriseth2017-06-153-7/+29
| |
* | Merge pull request #2398 from ethereum/assembly-cleanupchriseth2017-06-152-12/+8
|\ \ | | | | | | Remove obsolete features from libevmasm
| * | Move subroutine helpers from CompilerContext to AssemblyAlex Beregszaszi2017-06-151-0/+7
| | |
| * | Remove single use Assembly::popToAlex Beregszaszi2017-06-151-2/+0
| | |
| * | Remove obsolete Assembly::outAlex Beregszaszi2017-06-152-8/+0
| | |
| * | Remove obsolete errorTag()Alex Beregszaszi2017-06-152-2/+1
| | |
* | | Merge branch 'develop' into asm-auxchriseth2017-06-154-5/+13
|\| |
| * | add new opcode instructions to the parserDimitry2017-06-154-5/+13
| |/ | | | | | | STATICCALL 0xfa 6 inputs (gas address mem1 mem2 mem3 mem4)
* | Print auxiliary data in the assemblyAlex Beregszaszi2017-06-151-0/+6
| |
* | Print assembly even if there's no data sectionAlex Beregszaszi2017-06-151-1/+3
|/
* Introduce CREATE2 in the assemblerAlex Beregszaszi2017-06-144-1/+7
|
* Mention RETURNDATACOPY in GasMeter and SemanticInformationYoichi Hirai2017-06-132-0/+4
|
* libevmasm: add RETURNDATACOPY and RETURNDATASIZEYoichi Hirai2017-06-132-0/+6
|
* Initial EVM1.5 assembly implementation.chriseth2017-06-081-0/+9
|
* Rename the SHA3 assembly instruction to KECCAK256Alex Beregszaszi2017-05-308-26/+26
|
* Add simplification rule for SDIV(0,X) and SDIV(X,0)Alex Beregszaszi2017-05-201-0/+2
|
* Cleanup simplification rulesAlex Beregszaszi2017-05-201-8/+15
|
* Add parentheses for readability.chriseth2017-05-021-1/+1
|
* Fix number representation bug.chriseth2017-05-021-2/+7
|
* Do not use the member in checkRepresentationAlex Beregszaszi2017-04-272-4/+4
|
* Use OptimizerException to report errorchriseth2017-04-271-2/+6
|
* Add recomputation check for number representation.chriseth2017-04-272-1/+56
|
* libevmasm: fix sloadGas in another fileYoichi Hirai2017-04-251-1/+1
|
* libevmasm: add a breakYoichi Hirai2017-04-251-0/+1
|
* libevmasm: reflect EIP 160 gas schedule changeYoichi Hirai2017-04-251-1/+1
|
* libevmasm: EIP150.c gas changeYoichi Hirai2017-04-251-0/+1
|
* libevmasm: EIP150.a changes on SLOAD, CALL, CALLCODE, DELEGATECALL and SUICIDEYoichi Hirai2017-04-254-3/+6
|
* libevmadm: EIP150.a changes on EXTCODE, EXTCODESIZE and BALANCEYoichi Hirai2017-04-254-3/+9
|
* Initialize local variables.chriseth2017-04-121-2/+2
|
* Implement missing assembly output functions and do not use PushString for ↵chriseth2017-04-122-6/+14
| | | | assembly.
* Add upper bound for computing constants.chriseth2017-03-032-1/+5
|
* Print source location before items.chriseth2017-02-241-1/+1
|
* Add REVERT to libevmasmAlex Beregszaszi2017-02-115-1/+7
|
* Rename SUICIDE opcode to SELFDESTRUCT in libevmasmAlex Beregszaszi2017-02-076-8/+8
|
* More verbose log of when using invalid instructionsAlex Beregszaszi2017-02-021-4/+4
|
* Fix optimizer with regards to INVALID instruction.chriseth2017-01-262-0/+2
|
* Change code for INVALID opcode to 0xfe.chriseth2017-01-262-4/+4
|
* Change translation of implicit throws (issue #1589).Valentin Wüstholz2017-01-262-0/+4
| | | | | | | 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.
* Create functional assembly output, if possible.chriseth2017-01-244-17/+94
|
* Fix error tag usage in lll.chriseth2017-01-231-1/+1
|
* Merge pull request #1584 from ethereum/tierchriseth2017-01-193-149/+149
|\ | | | | libevmasm: remove duplicate `Tier` from `Tier::xTier`s
| * libevmasm: remove duplicate `Tier` from `Tier::xTier`sYoichi Hirai2017-01-193-149/+149
| | | | | | | | Synchronize with cpp-ethereum
* | Provide fallback for linking.chriseth2017-01-192-6/+29
|/
* Make enum Tier into an enum classYoichi Hirai2017-01-133-141/+141
|
* Minor changes from review.chriseth2017-01-132-2/+1
|
* Windows build fix.chriseth2017-01-131-0/+2
|
* Fix match groups.chriseth2017-01-131-0/+1
|
* Fix debug output.chriseth2017-01-131-2/+8
|
* Optimize constant optimization.chriseth2017-01-132-37/+58
|
* Optimise simplification rules (sort into bins).chriseth2017-01-134-394/+514
|
* Optimize pattern matcher.chriseth2017-01-132-16/+22
|
* Optimise AssemblyItem::m_data.chriseth2017-01-134-21/+58
|
* Rename programSize to bytecodeSize.chriseth2017-01-031-1/+1
|
* Assembly output for Assembly object.chriseth2017-01-033-51/+105
|
* libevmasm: OpPop() optimization keeps the source locationYoichi Hirai2016-12-301-1/+1
| | | | fixes #1521
* Fix tests.chriseth2016-12-011-2/+3
|
* Add swarm hash to the end of the bytecode.chriseth2016-12-012-4/+13
|
* libevmasm: remove an unused variable `total`Yoichi Hirai2016-12-011-3/+2
|
* Add more optimization rulesYoichi Hirai2016-11-301-0/+6
|
* Replace XOR with self with 0Alex Beregszaszi2016-11-301-0/+1
|
* Replace XOR/ISZERO with EQAlex Beregszaszi2016-11-301-0/+4
|
* Add optimiser rule for SUB with 0Alex Beregszaszi2016-11-301-1/+2
|
* Integrate AddPop.chriseth2016-11-252-16/+13
|
* Templatize.chriseth2016-11-251-37/+75
|
* Peephole optimizer for unreacheable code.chriseth2016-11-251-37/+73
|
* libevmasm: generalize ADDPOP optimization into ADDMODPOP etcYoichi Hirai2016-11-251-5/+6
|
* libevmasm: Add another peephole optimizationYoichi Hirai2016-11-252-3/+28
|
* Fix licensing headersVoR02202016-11-2331-124/+124
| | | | Signed-off-by: VoR0220 <rj@erisindustries.com>
* Optimizer: Clear state for JUMPDESTs.chriseth2016-11-221-36/+25
|
* Some more assertions and style changes.chriseth2016-11-161-1/+1
|
* Change encoding to address-funid and add "function" as ABI type.chriseth2016-11-161-0/+1
|
* Fix setting the tag.chriseth2016-11-161-1/+1
|
* fixup! Simple peephole optimizer that is activated even if not requested.chriseth2016-11-161-0/+2
|
* Simple peephole optimizer that is activated even if not requested.chriseth2016-11-164-12/+223
|
* Converted sub assembly to smart pointer.chriseth2016-11-163-37/+62
|
* Stored combined creation and runtime tags.chriseth2016-11-167-52/+145
| | | | | | | Includes a change to Assembly to allow tags from sub-assemblies to be used. Sorry, this get a bit bigger than I thought.
* Implement uninitialized storage functions.chriseth2016-11-161-0/+1
|
* Keep old code.chriseth2016-11-152-21/+30
|
* Report infinite gas for calls.chriseth2016-11-141-15/+19
|
* Merge pull request #1333 from ethereum/compare_location_fileschriseth2016-11-091-5/+10
|\ | | | | Compare source files in source locations
| * libevmasm: fix comparison of SourceLocationsYoichi Hirai2016-11-081-5/+10
| |
* | Merge pull request #1252 from ethereum/jsoncpp-from-sourcechriseth2016-11-081-1/+2
|\ \ | |/ |/| Build jsoncpp from source using jsoncpp.cmake script
| * Build jsoncpp from source using jsoncpp.cmake scriptPaweł Bylica2016-10-211-1/+2
| |
* | Merge pull request #1270 from ethereum/optimise-eq0chriseth2016-10-241-0/+1
|\ \ | | | | | | Optimise the PUSH 0, EQ case as ISZERO
| * | Optimiser the PUSH 0, EQ case as ISZEROAlex Beregszaszi2016-10-231-0/+1
| |/
* / Optimizer: generate code starting with empty statechriseth2016-10-221-2/+4
|/
* Rename dev::sha3 to dev::keccak256Alex Beregszaszi2016-10-063-4/+4
|
* Explicitly specify length of push data for assembly output.chriseth2016-08-181-1/+1
|
* Rename libevmasm.chriseth2016-08-101-1/+1
|
* Merge pull request #834 from chriseth/devcorecleanupchriseth2016-08-082-5/+1
|\ | | | | Some cleanup regarding libdevcore. Also rename to avoid conflicts.
| * Correct library usage.chriseth2016-08-081-1/+1
| |
| * Some cleanup regarding libdevcore. Also rename to avoid conflicts.chriseth2016-08-062-5/+1
| |
* | Do not install headers.chriseth2016-08-051-2/+0
|/
* Further fixes to the optimizer.chriseth2016-08-022-4/+5
|
* Reset knowledge in optimizer for path joins.chriseth2016-08-013-3/+12
|
* Make the Solidity repository standalone.Bob Summerwill2016-08-011-0/+62
| | | | | | | | | | | | | | | | | | | | This commit is the culmination of several months of work to decouple Solidity from the webthree-umbrella so that it can be developed in parallel with cpp-ethereum (the Ethereum C++ runtime) and so that even for the Solidity unit-tests there is no hard-dependency onto the C++ runtime. The Tests-over-IPC refactoring was a major step in the same process which was already committed. This commit contains the following changes: - A subset of the CMake functionality in webthree-helpers was extracted and tailored for Solidity into ./cmake. Further cleanup is certainly possible. - A subset of the libdevcore functionality in libweb3core was extracted and tailored for Solidity into ./libdevcore. Further cleanup is certainly possible - The gas price constants in EVMSchedule were orphaned into libevmasm. - Some other refactorings and cleanups were made to sever unnecessary EVM dependencies in the Solidity unit-tests. - TravisCI and Appveyor support was added, covering builds and running of the unit-tests (Linux and macOS only for now) - A bug-fix was made to get the Tests-over-IPC running on macOS. - There are still reliability issues in the unit-tests, which need immediate attention. The Travis build has been flipped to run the unit-tests 5 times, to try to flush these out. - The Emscripten automation which was previously in webthree-umbrella was merged into the TravisCI automation here. - The development ZIP deployment step has been commented out, but we will want to read that ONLY for release branch. Further iteration on these changes will definitely be needed, but I feel these have got to sufficient maturity than holding them back further isn't winning us anything. It is go time :-)
* Fix warning showing up in openSUSE build.Bob Summerwill2016-06-081-1/+1
|
* Correctly use not/bnot/iszero.chriseth2016-05-091-2/+2
| | | | | A long time ago, some opcodes were renamed. Now we should only have not (bitwise negation) and iszero (logical negation).
* Windows fix.chriseth2016-04-211-2/+13
|
* Source location for inline assembly.chriseth2016-04-201-18/+5
|
* Merge pull request #496 from chriseth/removelogBob Summerwill2016-04-122-10/+0
|\ | | | | Remove log.h from solidity.
| * Remove log.h from solidity.chriseth2016-04-122-10/+0
| |
* | Make solidity independent from ethcore.chriseth2016-04-077-121/+83
|/
* reduce unnecessary solidity:: namespaceDimitry2016-04-044-8/+8
|
* return instructionInfo styleDimitry2016-04-049-14/+14
|
* enable solidity testDimitry2016-04-042-6/+6
|
* rename namespace for instruction.h/cpp in libevmasmDimitry2016-04-0213-32/+33
|
* move libevmcore to solidityDimitry2016-04-026-4/+626
|
* includesDimitry2016-03-223-4/+5
|
* add liblll lllc libevmasmDimitry2016-03-222-4/+4
|
* move libevmasmDimitry2016-03-2129-0/+5102