Fix map delete go codegen Change-Id: Ifaf9a64dc7bf52b659422aab74b8e6ee1e688197
diff --git a/gfxapi/gles/replay_writer.go b/gfxapi/gles/replay_writer.go index 44930dc..adc6ac5 100644 --- a/gfxapi/gles/replay_writer.go +++ b/gfxapi/gles/replay_writer.go
@@ -705,7 +705,7 @@ ctx := GetContext_15_result // Contextʳ a := ϟa.Arrays.Slice(uint64(int32(0)), uint64(ϟa.Count), ϟs) // VertexArrayIdˢ for i := int32(int32(0)); i < ϟa.Count; i++ { - ctx.Instances.VertexArrays[a.Index(uint64(i), ϟs).replayRead(ϟa, ϟs, ϟd, ϟl, ϟb)] = (*VertexArray)(nil) + delete(ctx.Instances.VertexArrays, a.Index(uint64(i), ϟs).replayRead(ϟa, ϟs, ϟd, ϟl, ϟb)) } ϟb.Push(value.S32(ϟa.Count)) ϟb.Push(ϟa.Arrays.value()) @@ -2300,7 +2300,7 @@ GetContext_62_result := context // Contextʳ ctx := GetContext_62_result // Contextʳ for i := int32(int32(0)); i < ϟa.Count; i++ { - ctx.Instances.Textures[t.Index(uint64(i), ϟs).replayRead(ϟa, ϟs, ϟd, ϟl, ϟb)] = (*Texture)(nil) + delete(ctx.Instances.Textures, t.Index(uint64(i), ϟs).replayRead(ϟa, ϟs, ϟd, ϟl, ϟb)) } ϟb.Push(value.S32(ϟa.Count)) ϟb.Push(ϟa.Textures.value()) @@ -2733,7 +2733,7 @@ GetContext_70_result := context // Contextʳ ctx := GetContext_70_result // Contextʳ for i := int32(int32(0)); i < ϟa.Count; i++ { - ctx.Instances.Framebuffers[f.Index(uint64(i), ϟs).replayRead(ϟa, ϟs, ϟd, ϟl, ϟb)] = (*Framebuffer)(nil) + delete(ctx.Instances.Framebuffers, f.Index(uint64(i), ϟs).replayRead(ϟa, ϟs, ϟd, ϟl, ϟb)) } ϟb.Push(value.S32(ϟa.Count)) ϟb.Push(ϟa.Framebuffers.value()) @@ -2850,7 +2850,7 @@ GetContext_75_result := context // Contextʳ ctx := GetContext_75_result // Contextʳ for i := int32(int32(0)); i < ϟa.Count; i++ { - ctx.Instances.Renderbuffers[r.Index(uint64(i), ϟs).replayRead(ϟa, ϟs, ϟd, ϟl, ϟb)] = (*Renderbuffer)(nil) + delete(ctx.Instances.Renderbuffers, r.Index(uint64(i), ϟs).replayRead(ϟa, ϟs, ϟd, ϟl, ϟb)) } ϟb.Push(value.S32(ϟa.Count)) ϟb.Push(ϟa.Renderbuffers.value()) @@ -3026,7 +3026,7 @@ GetContext_81_result := context // Contextʳ ctx := GetContext_81_result // Contextʳ for i := int32(int32(0)); i < ϟa.Count; i++ { - ctx.Instances.Buffers[b.Index(uint64(i), ϟs).replayRead(ϟa, ϟs, ϟd, ϟl, ϟb)] = (*Buffer)(nil) + delete(ctx.Instances.Buffers, b.Index(uint64(i), ϟs).replayRead(ϟa, ϟs, ϟd, ϟl, ϟb)) } ϟb.Push(value.S32(ϟa.Count)) ϟb.Push(ϟa.Buffers.value()) @@ -3128,7 +3128,7 @@ ctx := GetContext_85_result // Contextʳ s := ctx.Instances.Shaders.Get(ϟa.Shader) // Shaderʳ s.Deletable = true - ctx.Instances.Shaders[ϟa.Shader] = (*Shader)(nil) + delete(ctx.Instances.Shaders, ϟa.Shader) if key, remap := ϟa.Shader.remap(ϟa, ϟs); remap { loadRemap(ϟb, key, protocol.TypeUint32, ϟa.Shader.value(ϟb, ϟa, ϟs)) } else { @@ -3363,7 +3363,7 @@ context := ϟc.Contexts.Get(ϟc.CurrentThread) // Contextʳ GetContext_93_result := context // Contextʳ ctx := GetContext_93_result // Contextʳ - ctx.Instances.Programs[ϟa.Program] = (*Program)(nil) + delete(ctx.Instances.Programs, ϟa.Program) if key, remap := ϟa.Program.remap(ϟa, ϟs); remap { loadRemap(ϟb, key, protocol.TypeUint32, ϟa.Program.value(ϟb, ϟa, ϟs)) } else { @@ -3412,7 +3412,7 @@ ctx := GetContext_95_result // Contextʳ p := ctx.Instances.Programs.Get(ϟa.Program) // Programʳ s := ctx.Instances.Shaders.Get(ϟa.Shader) // Shaderʳ - p.Shaders[s.Type] = ShaderId(uint32(0)) + delete(p.Shaders, s.Type) if key, remap := ϟa.Program.remap(ϟa, ϟs); remap { loadRemap(ϟb, key, protocol.TypeUint32, ϟa.Program.value(ϟb, ϟa, ϟs)) } else { @@ -4708,7 +4708,7 @@ GetContext_131_result := context // Contextʳ ctx := GetContext_131_result // Contextʳ for i := int32(int32(0)); i < ϟa.Count; i++ { - ctx.Instances.Queries[q.Index(uint64(i), ϟs).replayRead(ϟa, ϟs, ϟd, ϟl, ϟb)] = (*Query)(nil) + delete(ctx.Instances.Queries, q.Index(uint64(i), ϟs).replayRead(ϟa, ϟs, ϟd, ϟl, ϟb)) } ϟb.Push(value.S32(ϟa.Count)) ϟb.Push(ϟa.Queries.value()) @@ -4930,7 +4930,7 @@ ctx := GetContext_135_result // Contextʳ a := ϟa.Arrays.Slice(uint64(uint32(0)), uint64(ϟa.Count), ϟs) // VertexArrayIdˢ for i := uint32(uint32(0)); i < ϟa.Count; i++ { - ctx.Instances.VertexArrays[a.Index(uint64(i), ϟs).replayRead(ϟa, ϟs, ϟd, ϟl, ϟb)] = (*VertexArray)(nil) + delete(ctx.Instances.VertexArrays, a.Index(uint64(i), ϟs).replayRead(ϟa, ϟs, ϟd, ϟl, ϟb)) } ϟb.Push(value.U32(ϟa.Count)) ϟb.Push(ϟa.Arrays.value()) @@ -5040,7 +5040,7 @@ GetContext_137_result := context // Contextʳ ctx := GetContext_137_result // Contextʳ for i := int32(int32(0)); i < ϟa.Count; i++ { - ctx.Instances.Queries[q.Index(uint64(i), ϟs).replayRead(ϟa, ϟs, ϟd, ϟl, ϟb)] = (*Query)(nil) + delete(ctx.Instances.Queries, q.Index(uint64(i), ϟs).replayRead(ϟa, ϟs, ϟd, ϟl, ϟb)) } ϟb.Push(value.S32(ϟa.Count)) ϟb.Push(ϟa.Queries.value())
diff --git a/gfxapi/gles/state_mutator.go b/gfxapi/gles/state_mutator.go index ab1fe29..8036812 100644 --- a/gfxapi/gles/state_mutator.go +++ b/gfxapi/gles/state_mutator.go
@@ -930,7 +930,7 @@ ctx := GetContext_15_result // Contextʳ a := ϟa.Arrays.Slice(uint64(int32(0)), uint64(ϟa.Count), ϟs) // VertexArrayIdˢ for i := int32(int32(0)); i < ϟa.Count; i++ { - ctx.Instances.VertexArrays[a.Index(uint64(i), ϟs).Read(ϟs, ϟd, ϟl)] = (*VertexArray)(nil) + delete(ctx.Instances.VertexArrays, a.Index(uint64(i), ϟs).Read(ϟs, ϟd, ϟl)) } ϟa.observations.ApplyWrites(ϟs.Memory[memory.ApplicationPool]) _, _, _, _ = context, GetContext_15_result, ctx, a @@ -1994,7 +1994,7 @@ GetContext_62_result := context // Contextʳ ctx := GetContext_62_result // Contextʳ for i := int32(int32(0)); i < ϟa.Count; i++ { - ctx.Instances.Textures[t.Index(uint64(i), ϟs).Read(ϟs, ϟd, ϟl)] = (*Texture)(nil) + delete(ctx.Instances.Textures, t.Index(uint64(i), ϟs).Read(ϟs, ϟd, ϟl)) } ϟa.observations.ApplyWrites(ϟs.Memory[memory.ApplicationPool]) _, _, _, _ = t, context, GetContext_62_result, ctx @@ -2306,7 +2306,7 @@ GetContext_70_result := context // Contextʳ ctx := GetContext_70_result // Contextʳ for i := int32(int32(0)); i < ϟa.Count; i++ { - ctx.Instances.Framebuffers[f.Index(uint64(i), ϟs).Read(ϟs, ϟd, ϟl)] = (*Framebuffer)(nil) + delete(ctx.Instances.Framebuffers, f.Index(uint64(i), ϟs).Read(ϟs, ϟd, ϟl)) } ϟa.observations.ApplyWrites(ϟs.Memory[memory.ApplicationPool]) _, _, _, _ = f, context, GetContext_70_result, ctx @@ -2390,7 +2390,7 @@ GetContext_75_result := context // Contextʳ ctx := GetContext_75_result // Contextʳ for i := int32(int32(0)); i < ϟa.Count; i++ { - ctx.Instances.Renderbuffers[r.Index(uint64(i), ϟs).Read(ϟs, ϟd, ϟl)] = (*Renderbuffer)(nil) + delete(ctx.Instances.Renderbuffers, r.Index(uint64(i), ϟs).Read(ϟs, ϟd, ϟl)) } ϟa.observations.ApplyWrites(ϟs.Memory[memory.ApplicationPool]) _, _, _, _ = r, context, GetContext_75_result, ctx @@ -2520,7 +2520,7 @@ GetContext_81_result := context // Contextʳ ctx := GetContext_81_result // Contextʳ for i := int32(int32(0)); i < ϟa.Count; i++ { - ctx.Instances.Buffers[b.Index(uint64(i), ϟs).Read(ϟs, ϟd, ϟl)] = (*Buffer)(nil) + delete(ctx.Instances.Buffers, b.Index(uint64(i), ϟs).Read(ϟs, ϟd, ϟl)) } ϟa.observations.ApplyWrites(ϟs.Memory[memory.ApplicationPool]) _, _, _, _ = b, context, GetContext_81_result, ctx @@ -2592,7 +2592,7 @@ ctx := GetContext_85_result // Contextʳ s := ctx.Instances.Shaders.Get(ϟa.Shader) // Shaderʳ s.Deletable = true - ctx.Instances.Shaders[ϟa.Shader] = (*Shader)(nil) + delete(ctx.Instances.Shaders, ϟa.Shader) ϟa.observations.ApplyWrites(ϟs.Memory[memory.ApplicationPool]) _, _, _, _ = context, GetContext_85_result, ctx, s return nil @@ -2745,7 +2745,7 @@ context := ϟc.Contexts.Get(ϟc.CurrentThread) // Contextʳ GetContext_93_result := context // Contextʳ ctx := GetContext_93_result // Contextʳ - ctx.Instances.Programs[ϟa.Program] = (*Program)(nil) + delete(ctx.Instances.Programs, ϟa.Program) ϟa.observations.ApplyWrites(ϟs.Memory[memory.ApplicationPool]) _, _, _ = context, GetContext_93_result, ctx return nil @@ -2773,7 +2773,7 @@ ctx := GetContext_95_result // Contextʳ p := ctx.Instances.Programs.Get(ϟa.Program) // Programʳ s := ctx.Instances.Shaders.Get(ϟa.Shader) // Shaderʳ - p.Shaders[s.Type] = ShaderId(uint32(0)) + delete(p.Shaders, s.Type) ϟa.observations.ApplyWrites(ϟs.Memory[memory.ApplicationPool]) _, _, _, _, _ = context, GetContext_95_result, ctx, p, s return nil @@ -3784,7 +3784,7 @@ GetContext_131_result := context // Contextʳ ctx := GetContext_131_result // Contextʳ for i := int32(int32(0)); i < ϟa.Count; i++ { - ctx.Instances.Queries[q.Index(uint64(i), ϟs).Read(ϟs, ϟd, ϟl)] = (*Query)(nil) + delete(ctx.Instances.Queries, q.Index(uint64(i), ϟs).Read(ϟs, ϟd, ϟl)) } ϟa.observations.ApplyWrites(ϟs.Memory[memory.ApplicationPool]) _, _, _, _ = q, context, GetContext_131_result, ctx @@ -3910,7 +3910,7 @@ ctx := GetContext_135_result // Contextʳ a := ϟa.Arrays.Slice(uint64(uint32(0)), uint64(ϟa.Count), ϟs) // VertexArrayIdˢ for i := uint32(uint32(0)); i < ϟa.Count; i++ { - ctx.Instances.VertexArrays[a.Index(uint64(i), ϟs).Read(ϟs, ϟd, ϟl)] = (*VertexArray)(nil) + delete(ctx.Instances.VertexArrays, a.Index(uint64(i), ϟs).Read(ϟs, ϟd, ϟl)) } ϟa.observations.ApplyWrites(ϟs.Memory[memory.ApplicationPool]) _, _, _, _ = context, GetContext_135_result, ctx, a @@ -3977,7 +3977,7 @@ GetContext_137_result := context // Contextʳ ctx := GetContext_137_result // Contextʳ for i := int32(int32(0)); i < ϟa.Count; i++ { - ctx.Instances.Queries[q.Index(uint64(i), ϟs).Read(ϟs, ϟd, ϟl)] = (*Query)(nil) + delete(ctx.Instances.Queries, q.Index(uint64(i), ϟs).Read(ϟs, ϟd, ϟl)) } ϟa.observations.ApplyWrites(ϟs.Memory[memory.ApplicationPool]) _, _, _, _ = q, context, GetContext_137_result, ctx
diff --git a/gfxapi/templates/go_common.tmpl b/gfxapi/templates/go_common.tmpl index e2600d8..f8c49f2 100644 --- a/gfxapi/templates/go_common.tmpl +++ b/gfxapi/templates/go_common.tmpl
@@ -457,8 +457,15 @@ */}} {{define "Go.MapAssign"}} {{AssertType $ "MapAssign"}} - {{if eq $.Operator "="}}{{Template "Go.Read" $.To.Map}}[{{Template "Go.Read" $.To.Index}}] = {{Template "Go.Read" $.Value}} - {{else}}{{Error "Unsupported MapAssign operator %s" $.Operator}}{{end}} + {{if eq $.Operator "="}} + {{if IsNull $.Value}} + delete({{Template "Go.Read" $.To.Map}}, {{Template "Go.Read" $.To.Index}}) + {{else}} + {{Template "Go.Read" $.To.Map}}[{{Template "Go.Read" $.To.Index}}] = {{Template "Go.Read" $.Value}} + {{end}} + {{else}} + {{Error "Unsupported MapAssign operator %s" $.Operator}} + {{end}} {{end}}