MakeContainerNew

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 = VarDef <mem> {~r0} v9
    • v13 = Store <mem> [8] v4 v11 v12
  • Ret v13
  • b2:
    • v14 = Unknown <*container>
    • v15 = Unknown <mem>
    • v16 = VarDef <mem> {~r0} v15
    • v17 = Store <mem> [8] v4 v14 v16
  • Ret v17

after early phielim [644 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 = VarDef <mem> {~r0} v9
    • v13 = Store <mem> [8] v4 v11 v12
  • Ret v13
  • b2:
    • v14 = Unknown <*container>
    • v15 = Unknown <mem>
    • v16 = VarDef <mem> {~r0} v15
    • v17 = Store <mem> [8] v4 v14 v16
  • Ret v17

after early copyelim [455 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 = VarDef <mem> {~r0} v9
    • v13 = Store <mem> [8] v4 v11 v12
  • Ret v13
  • b2:
    • v14 = Unknown <*container>
    • v15 = Unknown <mem>
    • v16 = VarDef <mem> {~r0} v15
    • v17 = Store <mem> [8] v4 v14 v16
  • Ret v17

after early deadcode [4809 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 = VarDef <mem> {~r0} v9
    • v13 = Store <mem> [8] v4 v11 v12
  • Ret v13

after short circuit [2074 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 = VarDef <mem> {~r0} v9
    • v13 = Store <mem> [8] v4 v11 v12
    • v17 = ConstBool <bool> [true]
    • v16 = ConstBool <bool> [false]
  • Ret v13

after decompose user [363 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 = VarDef <mem> {~r0} v9
    • v13 = Store <mem> [8] v4 v11 v12
    • v17 = ConstBool <bool> [true]
    • v16 = ConstBool <bool> [false]
  • Ret v13

after opt [3150 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 = VarDef <mem> {~r0} v9
    • v13 = Store <mem> [8] v4 v11 v12
    • v17 = ConstBool <bool> [true]
    • v16 = ConstBool <bool> [false]
  • Ret v13

after zero arg cse [4124 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 = VarDef <mem> {~r0} v9
    • v13 = Store <mem> [8] v4 v11 v12
    • v17 = ConstBool <bool> [true]
    • v16 = ConstBool <bool> [false]
  • Ret v13

after opt deadcode [3019 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 = VarDef <mem> {~r0} v9
    • v13 = Store <mem> [8] v4 v11 v12
  • Ret v13

after generic cse [12111 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 = VarDef <mem> {~r0} v9
    • v13 = Store <mem> [8] v4 v11 v12
  • Ret v13

after phiopt [217 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 = VarDef <mem> {~r0} v9
    • v13 = Store <mem> [8] v4 v11 v12
  • Ret v13

after nilcheckelim [875 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 = VarDef <mem> {~r0} v9
    • v13 = Store <mem> [8] v4 v11 v12
  • Ret v13

after prove [1663 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 = VarDef <mem> {~r0} v9
    • v13 = Store <mem> [8] v4 v11 v12
  • Ret v13

after loopbce [586 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 = VarDef <mem> {~r0} v9
    • v13 = Store <mem> [8] v4 v11 v12
  • Ret v13

after decompose builtin [255 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 = VarDef <mem> {~r0} v9
    • v13 = Store <mem> [8] v4 v11 v12
  • Ret v13

after dec [1902 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 = VarDef <mem> {~r0} v9
    • v13 = Store <mem> [8] v4 v11 v12
  • Ret v13

after late opt [2050 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 = VarDef <mem> {~r0} v9
    • v13 = Store <mem> [8] v4 v11 v12
  • Ret v13

after generic deadcode [2146 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 = VarDef <mem> {~r0} v9
    • v13 = Store <mem> [8] v4 v11 v12
  • Ret v13

after check bce [178 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 = VarDef <mem> {~r0} v9
    • v13 = Store <mem> [8] v4 v11 v12
  • Ret v13

after writebarrier [288 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 = VarDef <mem> {~r0} v9
    • v13 = Store <mem> [8] v4 v11 v12
  • Ret v13

after fuse [491 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 = VarDef <mem> {~r0} v9
    • v13 = Store <mem> [8] v4 v11 v12
  • Ret v13

after dse [12757 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 = VarDef <mem> {~r0} v9
    • v13 = Store <mem> [8] v4 v11 v12
  • Ret v13

after tighten [11542 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 = VarDef <mem> {~r0} v9
    • v13 = Store <mem> [8] v4 v11 v12
  • Ret v13

after lower [21296 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
    • v12 = VarDef <mem> {~r0} v9
    • v13 = MOVQstore <mem> {~r0} v2 v11 v12
  • Ret v13

after lowered cse [16024 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
    • v12 = VarDef <mem> {~r0} v9
    • v13 = MOVQstore <mem> {~r0} v2 v11 v12
  • Ret v13

after lowered deadcode [8647 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
    • v12 = VarDef <mem> {~r0} v9
    • v13 = MOVQstore <mem> {~r0} v2 v11 v12
  • Ret v13

after checkLower [432 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
    • v12 = VarDef <mem> {~r0} v9
    • v13 = MOVQstore <mem> {~r0} v2 v11 v12
  • Ret v13

after late phielim [555 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
    • v12 = VarDef <mem> {~r0} v9
    • v13 = MOVQstore <mem> {~r0} v2 v11 v12
  • Ret v13

after late copyelim [383 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
    • v12 = VarDef <mem> {~r0} v9
    • v13 = MOVQstore <mem> {~r0} v2 v11 v12
  • Ret v13

after phi tighten [251 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
    • v12 = VarDef <mem> {~r0} v9
    • v13 = MOVQstore <mem> {~r0} v2 v11 v12
  • Ret v13

after late deadcode [2225 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
    • v12 = VarDef <mem> {~r0} v9
    • v13 = MOVQstore <mem> {~r0} v2 v11 v12
  • Ret v13

after critical [570 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
    • v12 = VarDef <mem> {~r0} v9
    • v13 = MOVQstore <mem> {~r0} v2 v11 v12
  • Ret v13

after likelyadjust [815 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
    • v12 = VarDef <mem> {~r0} v9
    • v13 = MOVQstore <mem> {~r0} v2 v11 v12
  • Ret v13

after layout [1606 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
    • v12 = VarDef <mem> {~r0} v9
    • v13 = MOVQstore <mem> {~r0} v2 v11 v12
  • Ret v13

after schedule [12207 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
    • v12 = VarDef <mem> {~r0} v9
    • v13 = MOVQstore <mem> {~r0} v2 v11 v12
  • Ret v13

after late nilcheck [1675 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
    • v12 = VarDef <mem> {~r0} v9
    • v13 = MOVQstore <mem> {~r0} v2 v11 v12
  • Ret v13

after flagalloc [3413 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
    • v12 = VarDef <mem> {~r0} v9
    • v13 = MOVQstore <mem> {~r0} v2 v11 v12
  • Ret v13

after regalloc [28362 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
    • v12 = VarDef <mem> {~r0} v9
    • v13 = MOVQstore <mem> {~r0} v2 v11 v12
  • Ret v13

after stackframe [3191 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
    • v12 = VarDef <mem> {~r0} v9
    • v13 = MOVQstore <mem> {~r0} v2 v11 v12
  • Ret v13

after trim [637 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
    • v12 = VarDef <mem> {~r0} v9
    • v13 = MOVQstore <mem> {~r0} v2 v11 v12
  • Ret v13

genssa

00026 (alloc_overhead.go:16) TEXT "".MakeContainerNew(SB)
00027 (alloc_overhead.go:16) FUNCDATA $0, "".gcargs·4(SB)
00028 (alloc_overhead.go:16) FUNCDATA $1, "".gclocals·5(SB)
00029 (alloc_overhead.go:16) TYPE ~r0(FP), type.*"".container(SB)
v10
00030 (alloc_overhead.go:17) LEAQ type."".container(SB), AX
v8
00031 (alloc_overhead.go:17) MOVQ AX, (SP)
v9
00032 (alloc_overhead.go:17) CALL runtime.newobject(SB)
v11
00033 (alloc_overhead.go:17) MOVQ 8(SP), AX
v12
00034 (alloc_overhead.go:17) VARDEF "".~r0(FP)
v13
00035 (alloc_overhead.go:17) MOVQ AX, "".~r0(FP)
b1
00036 (alloc_overhead.go:17) RET
00037 (<unknown line number>) END