MakeContainer

help

Click on a value or block to toggle highlighting of that value/block and its uses. (Values and blocks are highlighted by ID, and IDs of dead items may be reused, so not all highlights necessarily correspond to the clicked item.)

Faded out values and blocks are dead code that has not been eliminated.

Values printed in italics have a dependency cycle.

start

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v4 = Addr <**container> {~r0} v2
    • v5 = ConstNil <*container>
    • v6 = Addr <*uint8> {type."".container} v3
    • v7 = OffPtr <**byte> [0] v2
    • v8 = Store <mem> [8] v7 v6 v1
    • v9 = StaticCall <mem> {runtime.newobject} [16] v8
    • v10 = OffPtr <**container> [8] v2
    • v11 = Load <*container> v10 v9
    • v12 = Zero <mem> [size=64,align=1] v11 v9
    • v13 = VarDef <mem> {~r0} v12
    • v14 = Store <mem> [8] v4 v11 v13
  • Ret v14

after early phielim [4512 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v4 = Addr <**container> {~r0} v2
    • v5 = ConstNil <*container>
    • v6 = Addr <*uint8> {type."".container} v3
    • v7 = OffPtr <**byte> [0] v2
    • v8 = Store <mem> [8] v7 v6 v1
    • v9 = StaticCall <mem> {runtime.newobject} [16] v8
    • v10 = OffPtr <**container> [8] v2
    • v11 = Load <*container> v10 v9
    • v12 = Zero <mem> [size=64,align=1] v11 v9
    • v13 = VarDef <mem> {~r0} v12
    • v14 = Store <mem> [8] v4 v11 v13
  • Ret v14

after early copyelim [949 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v4 = Addr <**container> {~r0} v2
    • v5 = ConstNil <*container>
    • v6 = Addr <*uint8> {type."".container} v3
    • v7 = OffPtr <**byte> [0] v2
    • v8 = Store <mem> [8] v7 v6 v1
    • v9 = StaticCall <mem> {runtime.newobject} [16] v8
    • v10 = OffPtr <**container> [8] v2
    • v11 = Load <*container> v10 v9
    • v12 = Zero <mem> [size=64,align=1] v11 v9
    • v13 = VarDef <mem> {~r0} v12
    • v14 = Store <mem> [8] v4 v11 v13
  • Ret v14

after early deadcode [8430 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v4 = Addr <**container> {~r0} v2
    • v6 = Addr <*uint8> {type."".container} v3
    • v7 = OffPtr <**byte> [0] v2
    • v8 = Store <mem> [8] v7 v6 v1
    • v9 = StaticCall <mem> {runtime.newobject} [16] v8
    • v10 = OffPtr <**container> [8] v2
    • v11 = Load <*container> v10 v9
    • v12 = Zero <mem> [size=64,align=1] v11 v9
    • v13 = VarDef <mem> {~r0} v12
    • v14 = Store <mem> [8] v4 v11 v13
  • Ret v14

after short circuit [7333 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v4 = Addr <**container> {~r0} v2
    • v6 = Addr <*uint8> {type."".container} v3
    • v7 = OffPtr <**byte> [0] v2
    • v8 = Store <mem> [8] v7 v6 v1
    • v9 = StaticCall <mem> {runtime.newobject} [16] v8
    • v10 = OffPtr <**container> [8] v2
    • v11 = Load <*container> v10 v9
    • v12 = Zero <mem> [size=64,align=1] v11 v9
    • v13 = VarDef <mem> {~r0} v12
    • v14 = Store <mem> [8] v4 v11 v13
    • v5 = ConstBool <bool> [true]
    • v15 = ConstBool <bool> [false]
  • Ret v14

after decompose user [5634 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v4 = Addr <**container> {~r0} v2
    • v6 = Addr <*uint8> {type."".container} v3
    • v7 = OffPtr <**byte> [0] v2
    • v8 = Store <mem> [8] v7 v6 v1
    • v9 = StaticCall <mem> {runtime.newobject} [16] v8
    • v10 = OffPtr <**container> [8] v2
    • v11 = Load <*container> v10 v9
    • v12 = Zero <mem> [size=64,align=1] v11 v9
    • v13 = VarDef <mem> {~r0} v12
    • v14 = Store <mem> [8] v4 v11 v13
    • v5 = ConstBool <bool> [true]
    • v15 = ConstBool <bool> [false]
  • Ret v14

after opt [37148 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v4 = Addr <**container> {~r0} v2
    • v6 = Addr <*uint8> {type."".container} v3
    • v7 = OffPtr <**byte> [0] v2
    • v8 = Store <mem> [8] v7 v6 v1
    • v9 = StaticCall <mem> {runtime.newobject} [16] v8
    • v10 = OffPtr <**container> [8] v2
    • v11 = Load <*container> v10 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = Store <mem> [8] v4 v11 v13
    • v5 = ConstBool <bool> [true]
    • v15 = ConstBool <bool> [false]
  • Ret v14

after zero arg cse [6971 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v4 = Addr <**container> {~r0} v2
    • v6 = Addr <*uint8> {type."".container} v3
    • v7 = OffPtr <**byte> [0] v2
    • v8 = Store <mem> [8] v7 v6 v1
    • v9 = StaticCall <mem> {runtime.newobject} [16] v8
    • v10 = OffPtr <**container> [8] v2
    • v11 = Load <*container> v10 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = Store <mem> [8] v4 v11 v13
    • v5 = ConstBool <bool> [true]
    • v15 = ConstBool <bool> [false]
  • Ret v14

after opt deadcode [4860 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v4 = Addr <**container> {~r0} v2
    • v6 = Addr <*uint8> {type."".container} v3
    • v7 = OffPtr <**byte> [0] v2
    • v8 = Store <mem> [8] v7 v6 v1
    • v9 = StaticCall <mem> {runtime.newobject} [16] v8
    • v10 = OffPtr <**container> [8] v2
    • v11 = Load <*container> v10 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = Store <mem> [8] v4 v11 v13
  • Ret v14

after generic cse [25114 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v4 = Addr <**container> {~r0} v2
    • v6 = Addr <*uint8> {type."".container} v3
    • v7 = OffPtr <**byte> [0] v2
    • v8 = Store <mem> [8] v7 v6 v1
    • v9 = StaticCall <mem> {runtime.newobject} [16] v8
    • v10 = OffPtr <**container> [8] v2
    • v11 = Load <*container> v10 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = Store <mem> [8] v4 v11 v13
  • Ret v14

after phiopt [220 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v4 = Addr <**container> {~r0} v2
    • v6 = Addr <*uint8> {type."".container} v3
    • v7 = OffPtr <**byte> [0] v2
    • v8 = Store <mem> [8] v7 v6 v1
    • v9 = StaticCall <mem> {runtime.newobject} [16] v8
    • v10 = OffPtr <**container> [8] v2
    • v11 = Load <*container> v10 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = Store <mem> [8] v4 v11 v13
  • Ret v14

after nilcheckelim [2991 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v4 = Addr <**container> {~r0} v2
    • v6 = Addr <*uint8> {type."".container} v3
    • v7 = OffPtr <**byte> [0] v2
    • v8 = Store <mem> [8] v7 v6 v1
    • v9 = StaticCall <mem> {runtime.newobject} [16] v8
    • v10 = OffPtr <**container> [8] v2
    • v11 = Load <*container> v10 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = Store <mem> [8] v4 v11 v13
  • Ret v14

after prove [7727 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v4 = Addr <**container> {~r0} v2
    • v6 = Addr <*uint8> {type."".container} v3
    • v7 = OffPtr <**byte> [0] v2
    • v8 = Store <mem> [8] v7 v6 v1
    • v9 = StaticCall <mem> {runtime.newobject} [16] v8
    • v10 = OffPtr <**container> [8] v2
    • v11 = Load <*container> v10 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = Store <mem> [8] v4 v11 v13
  • Ret v14

after loopbce [2946 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v4 = Addr <**container> {~r0} v2
    • v6 = Addr <*uint8> {type."".container} v3
    • v7 = OffPtr <**byte> [0] v2
    • v8 = Store <mem> [8] v7 v6 v1
    • v9 = StaticCall <mem> {runtime.newobject} [16] v8
    • v10 = OffPtr <**container> [8] v2
    • v11 = Load <*container> v10 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = Store <mem> [8] v4 v11 v13
  • Ret v14

after decompose builtin [8302 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v4 = Addr <**container> {~r0} v2
    • v6 = Addr <*uint8> {type."".container} v3
    • v7 = OffPtr <**byte> [0] v2
    • v8 = Store <mem> [8] v7 v6 v1
    • v9 = StaticCall <mem> {runtime.newobject} [16] v8
    • v10 = OffPtr <**container> [8] v2
    • v11 = Load <*container> v10 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = Store <mem> [8] v4 v11 v13
  • Ret v14

after dec [9510 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v4 = Addr <**container> {~r0} v2
    • v6 = Addr <*uint8> {type."".container} v3
    • v7 = OffPtr <**byte> [0] v2
    • v8 = Store <mem> [8] v7 v6 v1
    • v9 = StaticCall <mem> {runtime.newobject} [16] v8
    • v10 = OffPtr <**container> [8] v2
    • v11 = Load <*container> v10 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = Store <mem> [8] v4 v11 v13
  • Ret v14

after late opt [5564 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v4 = Addr <**container> {~r0} v2
    • v6 = Addr <*uint8> {type."".container} v3
    • v7 = OffPtr <**byte> [0] v2
    • v8 = Store <mem> [8] v7 v6 v1
    • v9 = StaticCall <mem> {runtime.newobject} [16] v8
    • v10 = OffPtr <**container> [8] v2
    • v11 = Load <*container> v10 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = Store <mem> [8] v4 v11 v13
  • Ret v14

after generic deadcode [8374 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v4 = Addr <**container> {~r0} v2
    • v6 = Addr <*uint8> {type."".container} v3
    • v7 = OffPtr <**byte> [0] v2
    • v8 = Store <mem> [8] v7 v6 v1
    • v9 = StaticCall <mem> {runtime.newobject} [16] v8
    • v10 = OffPtr <**container> [8] v2
    • v11 = Load <*container> v10 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = Store <mem> [8] v4 v11 v13
  • Ret v14

after check bce [2894 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v4 = Addr <**container> {~r0} v2
    • v6 = Addr <*uint8> {type."".container} v3
    • v7 = OffPtr <**byte> [0] v2
    • v8 = Store <mem> [8] v7 v6 v1
    • v9 = StaticCall <mem> {runtime.newobject} [16] v8
    • v10 = OffPtr <**container> [8] v2
    • v11 = Load <*container> v10 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = Store <mem> [8] v4 v11 v13
  • Ret v14

after writebarrier [4779 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v4 = Addr <**container> {~r0} v2
    • v6 = Addr <*uint8> {type."".container} v3
    • v7 = OffPtr <**byte> [0] v2
    • v8 = Store <mem> [8] v7 v6 v1
    • v9 = StaticCall <mem> {runtime.newobject} [16] v8
    • v10 = OffPtr <**container> [8] v2
    • v11 = Load <*container> v10 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = Store <mem> [8] v4 v11 v13
  • Ret v14

after fuse [661 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v4 = Addr <**container> {~r0} v2
    • v6 = Addr <*uint8> {type."".container} v3
    • v7 = OffPtr <**byte> [0] v2
    • v8 = Store <mem> [8] v7 v6 v1
    • v9 = StaticCall <mem> {runtime.newobject} [16] v8
    • v10 = OffPtr <**container> [8] v2
    • v11 = Load <*container> v10 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = Store <mem> [8] v4 v11 v13
  • Ret v14

after dse [8732 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v4 = Addr <**container> {~r0} v2
    • v6 = Addr <*uint8> {type."".container} v3
    • v7 = OffPtr <**byte> [0] v2
    • v8 = Store <mem> [8] v7 v6 v1
    • v9 = StaticCall <mem> {runtime.newobject} [16] v8
    • v10 = OffPtr <**container> [8] v2
    • v11 = Load <*container> v10 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = Store <mem> [8] v4 v11 v13
  • Ret v14

after tighten [16916 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v4 = Addr <**container> {~r0} v2
    • v6 = Addr <*uint8> {type."".container} v3
    • v7 = OffPtr <**byte> [0] v2
    • v8 = Store <mem> [8] v7 v6 v1
    • v9 = StaticCall <mem> {runtime.newobject} [16] v8
    • v10 = OffPtr <**container> [8] v2
    • v11 = Load <*container> v10 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = Store <mem> [8] v4 v11 v13
  • Ret v14

after lower [39543 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v4 = LEAQ <**container> {~r0} v2
    • v6 = LEAQ <*uint8> {type."".container} v3
    • v8 = MOVQstore <mem> v2 v6 v1
    • v9 = CALLstatic <mem> {runtime.newobject} [16] v8
    • v10 = ADDQconst <**container> [8] v2
    • v11 = MOVQload <*container> [8] v2 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = MOVQstore <mem> {~r0} v2 v11 v13
  • Ret v14

after lowered cse [8320 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v4 = LEAQ <**container> {~r0} v2
    • v6 = LEAQ <*uint8> {type."".container} v3
    • v8 = MOVQstore <mem> v2 v6 v1
    • v9 = CALLstatic <mem> {runtime.newobject} [16] v8
    • v10 = ADDQconst <**container> [8] v2
    • v11 = MOVQload <*container> [8] v2 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = MOVQstore <mem> {~r0} v2 v11 v13
  • Ret v14

after lowered deadcode [3618 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v6 = LEAQ <*uint8> {type."".container} v3
    • v8 = MOVQstore <mem> v2 v6 v1
    • v9 = CALLstatic <mem> {runtime.newobject} [16] v8
    • v11 = MOVQload <*container> [8] v2 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = MOVQstore <mem> {~r0} v2 v11 v13
  • Ret v14

after checkLower [551 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v6 = LEAQ <*uint8> {type."".container} v3
    • v8 = MOVQstore <mem> v2 v6 v1
    • v9 = CALLstatic <mem> {runtime.newobject} [16] v8
    • v11 = MOVQload <*container> [8] v2 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = MOVQstore <mem> {~r0} v2 v11 v13
  • Ret v14

after late phielim [628 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v6 = LEAQ <*uint8> {type."".container} v3
    • v8 = MOVQstore <mem> v2 v6 v1
    • v9 = CALLstatic <mem> {runtime.newobject} [16] v8
    • v11 = MOVQload <*container> [8] v2 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = MOVQstore <mem> {~r0} v2 v11 v13
  • Ret v14

after late copyelim [728 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v6 = LEAQ <*uint8> {type."".container} v3
    • v8 = MOVQstore <mem> v2 v6 v1
    • v9 = CALLstatic <mem> {runtime.newobject} [16] v8
    • v11 = MOVQload <*container> [8] v2 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = MOVQstore <mem> {~r0} v2 v11 v13
  • Ret v14

after phi tighten [215 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v6 = LEAQ <*uint8> {type."".container} v3
    • v8 = MOVQstore <mem> v2 v6 v1
    • v9 = CALLstatic <mem> {runtime.newobject} [16] v8
    • v11 = MOVQload <*container> [8] v2 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = MOVQstore <mem> {~r0} v2 v11 v13
  • Ret v14

after late deadcode [2521 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v6 = LEAQ <*uint8> {type."".container} v3
    • v8 = MOVQstore <mem> v2 v6 v1
    • v9 = CALLstatic <mem> {runtime.newobject} [16] v8
    • v11 = MOVQload <*container> [8] v2 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = MOVQstore <mem> {~r0} v2 v11 v13
  • Ret v14

after critical [603 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v6 = LEAQ <*uint8> {type."".container} v3
    • v8 = MOVQstore <mem> v2 v6 v1
    • v9 = CALLstatic <mem> {runtime.newobject} [16] v8
    • v11 = MOVQload <*container> [8] v2 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = MOVQstore <mem> {~r0} v2 v11 v13
  • Ret v14

after likelyadjust [682 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v6 = LEAQ <*uint8> {type."".container} v3
    • v8 = MOVQstore <mem> v2 v6 v1
    • v9 = CALLstatic <mem> {runtime.newobject} [16] v8
    • v11 = MOVQload <*container> [8] v2 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = MOVQstore <mem> {~r0} v2 v11 v13
  • Ret v14

after layout [1257 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v6 = LEAQ <*uint8> {type."".container} v3
    • v8 = MOVQstore <mem> v2 v6 v1
    • v9 = CALLstatic <mem> {runtime.newobject} [16] v8
    • v11 = MOVQload <*container> [8] v2 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = MOVQstore <mem> {~r0} v2 v11 v13
  • Ret v14

after schedule [22776 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v6 = LEAQ <*uint8> {type."".container} v3
    • v8 = MOVQstore <mem> v2 v6 v1
    • v9 = CALLstatic <mem> {runtime.newobject} [16] v8
    • v11 = MOVQload <*container> [8] v2 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = MOVQstore <mem> {~r0} v2 v11 v13
  • Ret v14

after late nilcheck [1948 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v6 = LEAQ <*uint8> {type."".container} v3
    • v8 = MOVQstore <mem> v2 v6 v1
    • v9 = CALLstatic <mem> {runtime.newobject} [16] v8
    • v11 = MOVQload <*container> [8] v2 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = MOVQstore <mem> {~r0} v2 v11 v13
  • Ret v14

after flagalloc [3187 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr>
    • v3 = SB <uintptr>
    • v6 = LEAQ <*uint8> {type."".container} v3
    • v8 = MOVQstore <mem> v2 v6 v1
    • v9 = CALLstatic <mem> {runtime.newobject} [16] v8
    • v11 = MOVQload <*container> [8] v2 v9
    • v13 = VarDef <mem> {~r0} v9
    • v14 = MOVQstore <mem> {~r0} v2 v11 v13
  • Ret v14

after regalloc [62444 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr> : SP
    • v3 = SB <uintptr> : SB
    • v10 = LEAQ <*uint8> {type."".container} v3 : AX
    • v8 = MOVQstore <mem> v2 v10 v1
    • v9 = CALLstatic <mem> {runtime.newobject} [16] v8
    • v11 = MOVQload <*container> [8] v2 v9 : AX
    • v13 = VarDef <mem> {~r0} v9
    • v14 = MOVQstore <mem> {~r0} v2 v11 v13
  • Ret v14

after stackframe [5306 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr> : SP
    • v3 = SB <uintptr> : SB
    • v10 = LEAQ <*uint8> {type."".container} v3 : AX
    • v8 = MOVQstore <mem> v2 v10 v1
    • v9 = CALLstatic <mem> {runtime.newobject} [16] v8
    • v11 = MOVQload <*container> [8] v2 v9 : AX
    • v13 = VarDef <mem> {~r0} v9
    • v14 = MOVQstore <mem> {~r0} v2 v11 v13
  • Ret v14

after trim [3018 ns]

  • b1:
    • v1 = InitMem <mem>
    • v2 = SP <uintptr> : SP
    • v3 = SB <uintptr> : SB
    • v10 = LEAQ <*uint8> {type."".container} v3 : AX
    • v8 = MOVQstore <mem> v2 v10 v1
    • v9 = CALLstatic <mem> {runtime.newobject} [16] v8
    • v11 = MOVQload <*container> [8] v2 v9 : AX
    • v13 = VarDef <mem> {~r0} v9
    • v14 = MOVQstore <mem> {~r0} v2 v11 v13
  • Ret v14

genssa

00000 (alloc_overhead.go:7) TEXT "".MakeContainer(SB)
00001 (alloc_overhead.go:7) FUNCDATA $0, "".gcargs·0(SB)
00002 (alloc_overhead.go:7) FUNCDATA $1, "".gclocals·1(SB)
00003 (alloc_overhead.go:7) TYPE ~r0(FP), type.*"".container(SB)
v10
00004 (alloc_overhead.go:8) LEAQ type."".container(SB), AX
v8
00005 (alloc_overhead.go:8) MOVQ AX, (SP)
v9
00006 (alloc_overhead.go:8) CALL runtime.newobject(SB)
v11
00007 (alloc_overhead.go:8) MOVQ 8(SP), AX
v13
00008 (alloc_overhead.go:9) VARDEF "".~r0(FP)
v14
00009 (alloc_overhead.go:9) MOVQ AX, "".~r0(FP)
b1
00010 (alloc_overhead.go:9) RET
00011 (<unknown line number>) END