From 980a5379304ad5ee2e01445c8449998479680efc Mon Sep 17 00:00:00 2001 From: xushiwei Date: Sat, 25 May 2024 11:57:09 +0800 Subject: [PATCH] iface: todo --- internal/runtime/c/c.go | 6 +++ internal/runtime/llgo_autogen.lla | Bin 10149 -> 9698 bytes internal/runtime/runtime2.go | 10 ++--- internal/runtime/z_eface.go | 70 ------------------------------ internal/runtime/z_print.go | 2 +- internal/runtime/z_type.go | 38 +++++++++++++++- 6 files changed, 49 insertions(+), 77 deletions(-) delete mode 100644 internal/runtime/z_eface.go diff --git a/internal/runtime/c/c.go b/internal/runtime/c/c.go index c26c8748..eb502d92 100644 --- a/internal/runtime/c/c.go +++ b/internal/runtime/c/c.go @@ -74,3 +74,9 @@ func Printf(format *Char, __llgo_va_list ...any) Int //go:linkname Fprintf C.fprintf func Fprintf(fp FilePtr, format *Char, __llgo_va_list ...any) Int + +//go:linkname Fwrite C.fwrite +func Fwrite(data Pointer, size, count uintptr, fp FilePtr) uintptr + +//go:linkname Fputc C.fputc +func Fputc(c Int, fp FilePtr) Int diff --git a/internal/runtime/llgo_autogen.lla b/internal/runtime/llgo_autogen.lla index 4187e81956bb7f991ceeb9c948779cc503d4087b..bd66305d92a2041ce558dbe7d8481c4d1d84f1b4 100644 GIT binary patch literal 9698 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 U=6{ca|7RNismFgL7Z}+80#Om9Gynhq literal 10149 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 v??0vv0^&b74x%LJf2{uxNeA% diff --git a/internal/runtime/runtime2.go b/internal/runtime/runtime2.go index 027c408f..69d80ae1 100644 --- a/internal/runtime/runtime2.go +++ b/internal/runtime/runtime2.go @@ -13,11 +13,6 @@ type eface struct { data unsafe.Pointer } -/* -func efaceOf(ep *any) *eface { - return (*eface)(unsafe.Pointer(ep)) -} - type iface struct { tab *itab data unsafe.Pointer @@ -35,6 +30,11 @@ type itab struct { fun [1]uintptr // variable sized. fun[0]==0 means _type does not implement inter. } +/* +func efaceOf(ep *any) *eface { + return (*eface)(unsafe.Pointer(ep)) +} + func MakeInterface(inter *InterfaceType, typ *Type, data unsafe.Pointer) Interface { tab := &itab{inter: inter, _type: typ, hash: 0, fun: [1]uintptr{0}} return Interface{ diff --git a/internal/runtime/z_eface.go b/internal/runtime/z_eface.go deleted file mode 100644 index a0f96d03..00000000 --- a/internal/runtime/z_eface.go +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2024 The GoPlus Authors (goplus.org). All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package runtime - -import ( - "unsafe" - - "github.com/goplus/llgo/internal/abi" -) - -type Eface = eface - -// ----------------------------------------------------------------------------- - -func MakeAnyIntptr(typ *Type, data uintptr) Eface { - return eface{ - _type: typ, data: unsafe.Pointer(data), - } -} - -func MakeAnyString(data string) Eface { - typ := basicTypes[abi.String] - return eface{ - _type: typ, data: unsafe.Pointer(&data), - } -} - -func I2Int(v Eface, t *Type) uintptr { - if v._type == t { - return uintptr(v.data) - } - panic("I2Int: type mismatch") -} - -func CheckI2Int(v Eface, t *Type) (uintptr, bool) { - if v._type == t { - return uintptr(v.data), true - } - return 0, false -} - -func I2String(v Eface) string { - if v._type.Kind() == abi.String { - return *(*string)(v.data) - } - panic("I2String: type mismatch") -} - -func CheckI2String(v Eface) (string, bool) { - if v._type.Kind() == abi.String { - return *(*string)(v.data), true - } - return "", false -} - -// ----------------------------------------------------------------------------- diff --git a/internal/runtime/z_print.go b/internal/runtime/z_print.go index 7aeca7f3..27a47ac7 100644 --- a/internal/runtime/z_print.go +++ b/internal/runtime/z_print.go @@ -7,7 +7,7 @@ package runtime import ( "unsafe" - "github.com/goplus/llgo/c" + "github.com/goplus/llgo/internal/runtime/c" ) func PrintByte(v byte) { diff --git a/internal/runtime/z_type.go b/internal/runtime/z_type.go index e28dd638..93eb6420 100644 --- a/internal/runtime/z_type.go +++ b/internal/runtime/z_type.go @@ -22,11 +22,47 @@ import ( "github.com/goplus/llgo/internal/abi" ) -// ----------------------------------------------------------------------------- +type ( + Eface = eface + Iface = iface + Itab = itab +) type Kind = abi.Kind type Type = abi.Type +type InterfaceType = abi.InterfaceType + +// ----------------------------------------------------------------------------- + +// Interface returns an interface type. +func Interface(pkgPath string) *Type { + // TODO(xsw): pkgPath + // npkg := abi.NewName(pkgPath, "", false, false) + ret := &abi.InterfaceType{ + Type: Type{ + Size_: unsafe.Sizeof(eface{}), + Hash: uint32(abi.Interface), // TODO(xsw): hash + Kind_: uint8(abi.Interface), + }, + //PkgPath: npkg, + Methods: nil, + } + return &ret.Type +} + +// NewItab returns a new itab. +func NewItab(inter *InterfaceType, typ *Type) *Itab { + return &itab{ + inter: inter, + _type: typ, + hash: typ.Hash, + //fun: nil, TODO(xsw) + } +} + +// ----------------------------------------------------------------------------- + func Basic(kind Kind) *Type { return basicTypes[kind] }