Skip to content

[Sol-Yul] Support selfbalance opcode #8882

@axic

Description

@axic
contract C {
  function f() public view returns (uint) {
    return address(this).balance;
  }
}

generates

            function fun_f_12() -> vloc__3 {
                let zero_value_for_type_t_uint256_1 := zero_value_for_split_t_uint256()
                vloc__3 := zero_value_for_type_t_uint256_1

                let expr_7_address := address()
                let expr_8 := convert_t_contract$_C_$13_to_t_address(expr_7_address)
                let expr_9 := balance(expr_8)
                vloc__3 := expr_9
                leave

while --asm does

    tag_5:
        /* "balance.sol":49:53  uint */
      0x00
        /* "balance.sol":68:89  address(this).balance */
      selfbalance
        /* "balance.sol":61:89  return address(this).balance */
      swap1
      pop
        /* "balance.sol":15:94  function f() public view returns (uint) {... */
      swap1
      jump	// out

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions