llgo/ssa: pyCall; demo: _pydemo/callpy

This commit is contained in:
xushiwei
2024-05-11 23:38:21 +08:00
parent a2d7a8c978
commit 94a7ee024a
12 changed files with 214 additions and 25 deletions

View File

@@ -1176,7 +1176,6 @@ func (b Builder) InlineCall(fn Expr, args ...Expr) (ret Expr) {
// t4 = t3()
// t7 = invoke t5.Println(...t6)
func (b Builder) Call(fn Expr, args ...Expr) (ret Expr) {
prog := b.Prog
if debugInstr {
var b bytes.Buffer
name := fn.impl.Name()
@@ -1191,11 +1190,16 @@ func (b Builder) Call(fn Expr, args ...Expr) (ret Expr) {
}
log.Println(b.String())
}
var kind = fn.kind
if kind == vkPyFunc {
return b.pyCall(fn, args)
}
var ll llvm.Type
var data Expr
var sig *types.Signature
var prog = b.Prog
var raw = fn.raw.Type
switch fn.kind {
switch kind {
case vkClosure:
data = b.Field(fn, 1)
fn = b.Field(fn, 0)