Commit Graph
375 Commits
Author SHA1 Message Date
Alex Beregszaszi ce62c7c01c Be more verbose on the stack-mismatch errors 2017-02-01 12:23:47 +00:00
Alex Beregszaszi 767ec1d670 Support explicit conversion of external function type to address 2017-02-01 12:23:47 +00:00
chriseth bff8fc23e6 Changelog and review suggestions. 2017-01-27 10:18:53 +01:00
chriseth a98fa41897 Uninitialized internal function should call INVALID. 2017-01-26 16:39:07 +01:00
chriseth d9fbb83861 Allow inserting low-level functions without calling them. 2017-01-26 16:39:07 +01:00
chriseth 390bebaaf9 Split line. 2017-01-26 16:39:07 +01:00
Valentin Wüstholz 5b7cc018f0 Address feedback from code review. 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 1316bb7565 Warn about invalid checksums of addresses. 2017-01-24 23:37:48 +01:00
chriseth ead1a3b33f Include creation code only once. 2017-01-24 17:41:31 +01:00
chriseth 7e6f1b3f00 Use int arithmetics for stack adjustment. 2017-01-24 12:07:09 +01:00
chriseth 23eca813f5 Change clearStorageLoop to TypePointer. 2017-01-24 12:07:09 +01:00
chriseth 82a00e7dc5 Use shared_ptrs to enable shared_from_this. 2017-01-24 12:06:41 +01:00
chriseth cea020b89e Convert ArrayUtils routines into low-level functions. 2017-01-24 12:06:40 +01:00
chriseth b60623521f Move some util functions to low-level functions. 2017-01-24 12:06:40 +01:00
chriseth d0e8d340a5 Low level named functions for CompilerContext. 2017-01-24 12:06:40 +01:00
chriseth 2536bdd6d0 Report source location on "stack too deep" errors. 2017-01-20 19:01:19 +01:00
Rhett Aultman 1f30982ab5 Use fully-qualified names for linking, too
Using libraries leaves behind a library link reference in the binary
which the linker must later resolve.  These link references were still
being generated by name and not by fully-qualified name.  This would
lead to a link-time collision between two libraries having the same
name but in different source units.

This change changes linker symbols over to fully-qualified names,
which resolves that issue.  This does potentially introduce a new
problem, which is that linker symbols appear to be limited to 36
characters and are truncated.  Storing paths extends the average
symbol size, and it would be great if truncation was from the tail
rather than the head.
2017-01-16 12:32:57 -05:00
Yoichi Hirai 6a312233fc ast, codegen: enable accessing events through contract names.
Fixes #1286
2017-01-02 17:59:20 +01:00
Yoichi Hirai 18f8f29c0a Merge pull request #1487 from ethereum/shift-ops
Shift operators
2016-12-14 16:31:27 +01:00
chriseth e9d3327ad6 Use correct type for storing. 2016-12-13 16:50:50 +01:00
chriseth 0e0d5d47c0 Renamed padToWordBoundaries -> padToWords 2016-12-12 23:43:21 +01:00
chriseth 2738045030 Cleaner shift handling and type conversion for binary operations. 2016-12-12 11:12:12 +01:00
Alex Beregszaszi b8b4f5e9f9 Support bitshifting in variables 2016-12-12 11:12:10 +01:00
chriseth bfa4f45116 Split memcopy into three functions. 2016-12-11 17:57:15 +01:00
chriseth 4184525d4a Fix inline assembly. 2016-12-11 17:57:15 +01:00
Alex Beregszaszi efd7b4bfbb Reset stack height after inline assembly block 2016-12-11 17:57:15 +01:00
Alex Beregszaszi 4a11200a27 Better assert message for appendInlineAssembnly 2016-12-11 17:57:15 +01:00
Alex Beregszaszi b93589b3b6 Implement identity call in inline assembly 2016-12-11 17:57:15 +01:00
Alex Beregszaszi bf5dac1fb2 Turn off the identity precompile for testing 2016-12-11 17:57:15 +01:00
Alex Beregszaszi 1bf412d9fd Implement CompilerUtils::memoryCopy using inline assembly 2016-12-11 17:57:15 +01:00
Alex Beregszaszi 4abc8ab5a9 Add usingIdentity option to CompilerUtils::memoryCopy 2016-12-11 17:57:15 +01:00
chriseth 84443eb560 Merge pull request #1351 from ethereum/truncate_bit
Truncate a boolean from calldata into one bit
2016-12-08 16:15:35 +01:00
Alex Beregszaszi 86d54c02cd Throw if calling the identity precompile (memoryCopy) failed 2016-12-02 13:18:39 +00:00
chriseth 6a7ff039df Use CBOR encoding. 2016-12-01 16:03:59 +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
chriseth 5789eaa78d Metadata stamp. 2016-12-01 16:03:59 +01:00
chriseth 55a719a79c Merge pull request #1462 from ethereum/fix-incorrect-assertion
codegen: assertion did not assert non-nullness
2016-12-01 15:14:31 +01:00
Yoichi Hirai 1e791f30aa codegen: this commit removes one of duplicate assignments 2016-12-01 12:03:25 +01:00
Yoichi Hirai e29047b24d codegen: assertion did not assert non-nullness
This commit strengthens an assertion so that it makes sure that a pointer is not null.
Moreover, `isLocalVariable(variable)` is now positively asserted, following the error message.
2016-12-01 11:58:34 +01:00
Yoichi Hirai d77c8f730c codegen: clean not only booleans but all types before storing them into memory 2016-11-30 17:42:21 +01:00
Yoichi Hirai 547deec4be codegen: clean any data from the input 2016-11-30 17:42:03 +01:00
Yoichi Hirai fb9babce54 codegen: truncate booleans before they enter storage 2016-11-30 17:41:51 +01:00
Yoichi Hirai 0123e74a2e codegen: cleanup booleans before storing them into memory 2016-11-30 17:41:46 +01:00
Yoichi Hirai 03ccc6df70 codegen: truncate a boolean calldata down to one bit 2016-11-30 17:41:38 +01:00
Alex Beregszaszi f1bc979c0f Use solUnimplemented wherever possible 2016-11-28 09:51:02 +00:00
Yoichi Hirai 0be5859503 codegen: cleanup values to fit in storage bytes 2016-11-25 15:50:46 +01:00
Yoichi Hirai 548b7ce42d codegen: storing of non-value types; add some assertions 2016-11-25 15:45:18 +01:00
Yoichi Hirai fa486f5b44 codegen: shorten the bit truncation 2016-11-25 15:45:18 +01:00