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
No known key found for this signature in database
GPG Key ID: E97FF5335DFDFDED
2 changed files with
16 additions and
0 deletions
-
compiler.go
-
src/runtime/print.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}, "") |
|
|
|
|
|
@ -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++ { |
|
|
|