The simple type unification algorithm suffered from some serious performance and memory problems when used with certain code bases. This adds some crucial optimizations that improve performance drastically.
33 lines
1.2 KiB
Plaintext
33 lines
1.2 KiB
Plaintext
Edge: call:len(var(b)) -> call:fmt.printf(str("len is: %d"), call:len(var(b))) # b
|
|
Edge: call:len(var(b)) -> call:fmt.printf(str("len is: %d"), call:len(var(b))) # b
|
|
Edge: int(-37) -> list(int(13), int(42), int(0), int(-37)) # 3
|
|
Edge: int(0) -> list(int(13), int(42), int(0), int(-37)) # 2
|
|
Edge: int(13) -> list(int(13), int(42), int(0), int(-37)) # 0
|
|
Edge: int(42) -> list(int(13), int(42), int(0), int(-37)) # 1
|
|
Edge: list(int(13), int(42), int(0), int(-37)) -> var(b) # b
|
|
Edge: str("hello") -> var(b) # b
|
|
Edge: str("len is: %d") -> call:fmt.printf(str("len is: %d"), call:len(var(b))) # a
|
|
Edge: str("len is: %d") -> call:fmt.printf(str("len is: %d"), call:len(var(b))) # a
|
|
Edge: str("t1") -> var(a) # a
|
|
Edge: str("t2") -> var(a) # a
|
|
Edge: var(b) -> call:len(var(b)) # 0
|
|
Edge: var(b) -> call:len(var(b)) # 0
|
|
Vertex: call:fmt.printf(str("len is: %d"), call:len(var(b)))
|
|
Vertex: call:fmt.printf(str("len is: %d"), call:len(var(b)))
|
|
Vertex: call:len(var(b))
|
|
Vertex: call:len(var(b))
|
|
Vertex: int(-37)
|
|
Vertex: int(0)
|
|
Vertex: int(13)
|
|
Vertex: int(42)
|
|
Vertex: list(int(13), int(42), int(0), int(-37))
|
|
Vertex: str("hello")
|
|
Vertex: str("len is: %d")
|
|
Vertex: str("len is: %d")
|
|
Vertex: str("t1")
|
|
Vertex: str("t2")
|
|
Vertex: var(a)
|
|
Vertex: var(a)
|
|
Vertex: var(b)
|
|
Vertex: var(b)
|