From b121d1730b9a090d4bf064c5c5a636aa98516ea0 Mon Sep 17 00:00:00 2001 From: xushiwei Date: Sat, 25 May 2024 21:43:59 +0800 Subject: [PATCH] NameOff => Name; TypeOff => *Type; TextOff => Text --- internal/abi/llgo_autogen.lla | Bin 5463 -> 5736 bytes internal/abi/type.go | 51 +++++++++++++++++++++++------- internal/runtime/llgo_autogen.lla | Bin 9698 -> 9703 bytes internal/runtime/z_type.go | 12 +++---- 4 files changed, 46 insertions(+), 17 deletions(-) diff --git a/internal/abi/llgo_autogen.lla b/internal/abi/llgo_autogen.lla index 7fed635085121ecda4a72c47e157e2957316114f..f2db6c47c870406a08b3db4d414614c40ae4f95c 100644 GIT binary patch delta 5594 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 delta 5323 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 diff --git a/internal/abi/type.go b/internal/abi/type.go index 21f90142..e7ecaf8f 100644 --- a/internal/abi/type.go +++ b/internal/abi/type.go @@ -45,9 +45,9 @@ type Type struct { // GCData stores the GC type data for the garbage collector. // If the KindGCProg bit is set in kind, GCData is a GC program. // Otherwise it is a ptrmask bitmap. See mbitmap.go for details. - GCData *byte - Str NameOff // string form - PtrToThis TypeOff // type for pointer to this type, may be zero + GCData *byte + Str_ Name // string form + PtrToThis_ *Type // type for pointer to this type, may be nil } // A Kind represents the specific kind of type that a Type represents. @@ -127,12 +127,6 @@ const ( TFlagRegularMemory TFlag = 1 << 3 ) -// NameOff is the offset to a name from moduledata.types. See resolveNameOff in runtime. -type NameOff int32 - -// TypeOff is the offset to a type from moduledata.types. See resolveTypeOff in runtime. -type TypeOff int32 - // ----------------------------------------------------------------------------- // ArrayType represents a fixed array type. @@ -221,10 +215,45 @@ type InterfaceType struct { Methods []Imethod // sorted by hash } +type Text = unsafe.Pointer // TODO(xsw): to be confirmed + +// Method on non-interface type +type Method struct { + Name_ Name // name of method + Mtyp_ *Type // method type (without receiver) + Ifn_ Text // fn used in interface call (one-word receiver) + Tfn_ Text // fn used for normal method call +} + +// UncommonType is present only for defined types or types with methods +// (if T is a defined type, the uncommonTypes for T and *T have methods). +// Using a pointer to this struct reduces the overall size required +// to describe a non-defined type with no methods. +type UncommonType struct { + PkgPath_ Name // import path; empty for built-in types like int, string + Mcount uint16 // number of methods + Xcount uint16 // number of exported methods + Moff uint32 // offset from this uncommontype to [mcount]Method +} + +func (t *UncommonType) Methods() []Method { + if t.Mcount == 0 { + return nil + } + return (*[1 << 16]Method)(addChecked(unsafe.Pointer(t), uintptr(t.Moff), "t.mcount > 0"))[:t.Mcount:t.Mcount] +} + +func (t *UncommonType) ExportedMethods() []Method { + if t.Xcount == 0 { + return nil + } + return (*[1 << 16]Method)(addChecked(unsafe.Pointer(t), uintptr(t.Moff), "t.xcount > 0"))[:t.Xcount:t.Xcount] +} + // Imethod represents a method on an interface type type Imethod struct { - Name NameOff // name of method - Typ TypeOff // .(*FuncType) underneath + Name_ Name // name of method + Typ_ *FuncType // .(*FuncType) underneath } func (t *Type) Kind() Kind { return Kind(t.Kind_ & KindMask) } diff --git a/internal/runtime/llgo_autogen.lla b/internal/runtime/llgo_autogen.lla index bd66305d92a2041ce558dbe7d8481c4d1d84f1b4..0de68c733155dbb4114f6665c33c1f2cacdc84ef 100644 GIT binary patch delta 9185 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 delta 9198 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 E041oZ$^ZZW diff --git a/internal/runtime/z_type.go b/internal/runtime/z_type.go index 93eb6420..99de71c5 100644 --- a/internal/runtime/z_type.go +++ b/internal/runtime/z_type.go @@ -35,6 +35,12 @@ type InterfaceType = abi.InterfaceType // ----------------------------------------------------------------------------- +// Named returns a named type. +func Named(name string, typ *Type) *Type { + ret := *typ // TODO(xsw): named type + return &ret +} + // Interface returns an interface type. func Interface(pkgPath string) *Type { // TODO(xsw): pkgPath @@ -160,10 +166,4 @@ func Pointer(elem *Type) *Type { return &ret.Type } -// Named returns a named type. -func Named(name string, typ *Type) *Type { - ret := *typ // TODO(xsw): named type - return &ret -} - // -----------------------------------------------------------------------------