Commit Graph
187 Commits
Author SHA1 Message Date
chriseth e841b23bfd Special case for storage types with offset zero. 2017-04-25 16:49:04 +02:00
chriseth 978884d9ca Build fix. 2017-04-25 16:49:04 +02:00
chriseth 478f2997ea Storage access from inline assembly. 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 34717838da Review comments. 2017-04-25 16:49:03 +02:00
chriseth 83bf34c571 Review comments and cleanup. 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
Alex Beregszaszi 586d156f33 Use the REVERT opcode for throw; 2017-02-10 22:41:09 +00:00
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
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 b60623521f Move some util functions to low-level functions. 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
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
VoR0220 3f9f725737 Fix licensing headers
Signed-off-by: VoR0220 <rj@erisindustries.com>
2016-11-23 12:22:33 +01:00
Alex Beregszaszi 910269a29f Add appendCallValueCheck 2016-11-17 17:23:35 +00:00
Alex Beregszaszi ceeb8f4a2b Add payable check for constructor in codegen 2016-11-17 17:23:35 +00:00
chriseth e51f852504 Converted sub assembly to smart pointer. 2016-11-16 14:37:18 +01:00
chriseth e543bd34c0 Stored combined creation and runtime tags.
Includes a change to Assembly to allow tags from sub-assemblies to be
used.

Sorry, this get a bit bigger than I thought.
2016-11-16 14:37:18 +01:00
chriseth dd173f83e3 Code generator for function types. 2016-11-16 14:37:17 +01:00
Rhett Aultman 58e75c7a48 Unimplemented features moved to their own exception (#1361)
Unimplemented features moved to their own exception

InternalCompilerError is an exception that really should be reserved for
actual internal errors of the compiler.  Unimplemented features can now
use either solUnimplemented( ) or, if it should be conditional, then
solUnimplementedAssert( ).

* Revert some unimplemented exceptions, add handlers

The jsonCompiler and CommandLineInterface needed handlers for the
new UnimplementedFeatureException, and some cases I had moved on to
the new exception were better treated as real internal compiler
errors.

* Standardize on "Unimplemented feature" message
2016-11-14 20:41:58 +00:00
Rhett Aultman 4524ad0870 Add support for do/while loops
This commit adds support for a standard do <statement> while <expr>;
form of statement.  While loops were already being supported; supporting
a do/while loop mostly involves reusing code from while loops but putting
the conditional checking last.
2016-11-10 07:07:25 -08:00
Alex Beregszaszi 0e33b63468 Allow warnings for inline assembly block 2016-10-20 13:25:28 +01:00
chriseth 727c6fac85 Allow value transfer to library functions. 2016-09-17 11:29:27 +02:00
chriseth 9c64edf110 Change function type to include and propagate payable and constant modifier. 2016-09-05 21:28:28 +02:00
Alex Beregszaszi 962531af96 Merged in changes from chriseth/payable 2016-09-05 21:28:28 +02:00
Alex Beregszaszi a34f2f1a31 Support payable keyword for functions 2016-09-05 21:28:18 +02:00
chriseth 4bfe09897e Make fallback function throw by default. 2016-08-30 15:31:50 +02:00
chriseth 9c83109549 BREAKING: return only exits current function/modifier 2016-08-17 11:29:31 +02:00
chriseth ab7a22f4a0 Disallow implementation of abstract function by constructor of derived class. 2016-06-06 19:38:22 +02:00
chriseth 6b859a2bff Refactor compiler to avoid weird swap of contexts 2016-05-20 14:20:45 +02:00