
* Add separate flags for each scode optimization * Add a list of available optimizations to docs * Update CONTRIBUTING.md * Update docs/aeso_compiler.md Co-authored-by: Radosław Rowicki <35342116+radrow@users.noreply.github.com> * Prefix rules functions with optimize_ instead of r_ Co-authored-by: Radosław Rowicki <35342116+radrow@users.noreply.github.com>
2.2 KiB
aeso_compiler
Module
aeso_compiler
The Sophia compiler
Description
This module provides the interface to the standard Sophia compiler. It returns the compiled module in a map which can then be loaded.
Types
contract_string() = string() | binary()
contract_map() = #{bytecode => binary(),
compiler_version => binary(),
contract_souce => string(),
type_info => type_info()}
type_info()
errorstring() = binary()
Exports
file(File)
file(File, Options) -> CompRet
from_string(ContractString, Options) -> CompRet
Types
ContractString = contract_string()
Options = [Option]
CompRet = {ok,ContractMap} | {error,ErrorString}
ContractMap = contract_map()
ErrorString = errorstring()
Compile a contract defined in a file or in a string.
The pp_ options all print to standard output the following:
pp_sophia_code
- print the input Sophia code.
pp_ast
- print the AST of the code
pp_types
- print information about the types
pp_typed_ast
- print the AST with type information at each node
pp_assembler
- print the generated assembler code
Options to control which compiler optimizations should run:
By default all optimizations are turned on, to disable an optimization, it should be explicitly set to false and passed as a compiler option.
List of optimizations:
- optimize_inliner
- optimize_inline_local_functions
- optimize_bind_subexpressions
- optimize_let_floating
- optimize_simplifier
- optimize_drop_unused_lets
- optimize_push_consume
- optimize_one_shot_var
- optimize_write_to_dead_var
- optimize_inline_switch_target
- optimize_swap_push
- optimize_swap_pop
- optimize_swap_write
- optimize_constant_propagation
- optimize_prune_impossible_branches
- optimize_single_successful_branch
- optimize_inline_store
- optimize_float_switch_bod
check_call(ContractString, Options) -> CheckRet
Types
ContractString = string() | binary()
CheckRet = {ok,string(),{Types,Type | any()},Terms} | {error,Term}
Types = [Type]
Type = term()
Check a call in contract through the __call
function.
version() -> {ok, Version} | {error, term()}
Types
Version = binary()
Get the current version of the Sophia compiler.