sophia/docs/aeso_compiler.md
Gaith Hallak 1c83287d45
Add separate flags for each scode optimization (#410)
* 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>
2022-10-07 12:09:53 +03:00

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.