Browse Source

Be able to print maps to some degree

Print the number of elements, or nil if it is a nil map.
pull/6/head
Ayke van Laethem 6 years ago
parent
commit
42711c11e9
No known key found for this signature in database GPG Key ID: E97FF5335DFDFDED
  1. 2
      compiler.go
  2. 14
      src/runtime/print.go

2
compiler.go

@ -1277,6 +1277,8 @@ func (c *Compiler) parseBuiltin(frame *Frame, args []ssa.Value, callName string)
}
case *types.Interface:
c.builder.CreateCall(c.mod.NamedFunction("runtime.printitf"), []llvm.Value{value}, "")
case *types.Map:
c.builder.CreateCall(c.mod.NamedFunction("runtime.printmap"), []llvm.Value{value}, "")
case *types.Pointer:
ptrValue := c.builder.CreatePtrToInt(value, c.uintptrType, "")
c.builder.CreateCall(c.mod.NamedFunction("runtime.printptr"), []llvm.Value{ptrValue}, "")

14
src/runtime/print.go

@ -102,7 +102,21 @@ func printitf(msg interface{}) {
}
}
func printmap(m *hashmap) {
print("map[")
if m == nil {
print("nil")
} else {
print(m.count)
}
putchar(']')
}
func printptr(ptr uintptr) {
if ptr == 0 {
print("nil")
return
}
putchar('0')
putchar('x')
for i := 0; i < int(unsafe.Sizeof(ptr))*2; i++ {

Loading…
Cancel
Save