README: gc
This commit is contained in:
@@ -173,7 +173,6 @@ Common Go syntax is already supported. Except for the following, which needs to
|
|||||||
* panic (Limited support)
|
* panic (Limited support)
|
||||||
* recover (Not supported yet)
|
* recover (Not supported yet)
|
||||||
* defer (Limited: defer in loops is not supported)
|
* defer (Limited: defer in loops is not supported)
|
||||||
* gc (Not supported yet)
|
|
||||||
* chan (Not supported yet)
|
* chan (Not supported yet)
|
||||||
* generics (Not supported yet)
|
* generics (Not supported yet)
|
||||||
|
|
||||||
@@ -204,6 +203,7 @@ Follow these steps to generate the `llgo` command (its usage is the same as the
|
|||||||
|
|
||||||
```sh
|
```sh
|
||||||
brew update # execute if needed
|
brew update # execute if needed
|
||||||
|
brew install bdw-gc
|
||||||
brew install llvm@17
|
brew install llvm@17
|
||||||
go install -v ./...
|
go install -v ./...
|
||||||
```
|
```
|
||||||
@@ -214,6 +214,7 @@ go install -v ./...
|
|||||||
echo 'deb http://apt.llvm.org/focal/ llvm-toolchain-focal-17 main' | sudo tee /etc/apt/sources.list.d/llvm.list
|
echo 'deb http://apt.llvm.org/focal/ llvm-toolchain-focal-17 main' | sudo tee /etc/apt/sources.list.d/llvm.list
|
||||||
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
||||||
sudo apt-get update # execute if needed
|
sudo apt-get update # execute if needed
|
||||||
|
sudo apt-get install libgc-dev
|
||||||
sudo apt-get install --no-install-recommends llvm-17-dev
|
sudo apt-get install --no-install-recommends llvm-17-dev
|
||||||
go install -v ./...
|
go install -v ./...
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package bdwgc
|
package bdwgc
|
||||||
|
|
||||||
import "C"
|
|
||||||
import (
|
import (
|
||||||
_ "unsafe"
|
_ "unsafe"
|
||||||
|
|
||||||
@@ -28,16 +27,28 @@ func Free(ptr c.Pointer)
|
|||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
//go:linkname RegisterFinalizer C.GC_register_finalizer
|
//go:linkname RegisterFinalizer C.GC_register_finalizer
|
||||||
func RegisterFinalizer(obj c.Pointer, fn func(c.Pointer, c.Pointer), cd c.Pointer, old_fn *func(c.Pointer, c.Pointer), old_cd *c.Pointer) int
|
func RegisterFinalizer(
|
||||||
|
obj c.Pointer,
|
||||||
|
fn func(c.Pointer, c.Pointer), cd c.Pointer,
|
||||||
|
oldFn *func(c.Pointer, c.Pointer), oldCd *c.Pointer)
|
||||||
|
|
||||||
//go:linkname RegisterFinalizerNoOrder C.GC_register_finalizer_no_order
|
//go:linkname RegisterFinalizerNoOrder C.GC_register_finalizer_no_order
|
||||||
func RegisterFinalizerNoOrder(obj c.Pointer, fn func(c.Pointer, c.Pointer), cd c.Pointer, old_fn *func(c.Pointer, c.Pointer), old_cd *c.Pointer) int
|
func RegisterFinalizerNoOrder(
|
||||||
|
obj c.Pointer,
|
||||||
|
fn func(c.Pointer, c.Pointer), cd c.Pointer,
|
||||||
|
oldFn *func(c.Pointer, c.Pointer), oldCd *c.Pointer)
|
||||||
|
|
||||||
//go:linkname RegisterFinalizerIgnoreSelf C.GC_register_finalizer_ignore_self
|
//go:linkname RegisterFinalizerIgnoreSelf C.GC_register_finalizer_ignore_self
|
||||||
func RegisterFinalizerIgnoreSelf(obj c.Pointer, fn func(c.Pointer, c.Pointer), cd c.Pointer, old_fn *func(c.Pointer, c.Pointer), old_cd *c.Pointer) int
|
func RegisterFinalizerIgnoreSelf(
|
||||||
|
obj c.Pointer,
|
||||||
|
fn func(c.Pointer, c.Pointer), cd c.Pointer,
|
||||||
|
oldFn *func(c.Pointer, c.Pointer), oldCd *c.Pointer)
|
||||||
|
|
||||||
//go:linkname RegisterFinalizerUnreachable C.GC_register_finalizer_unreachable
|
//go:linkname RegisterFinalizerUnreachable C.GC_register_finalizer_unreachable
|
||||||
func RegisterFinalizerUnreachable(obj c.Pointer, fn func(c.Pointer, c.Pointer), cd c.Pointer, old_fn *func(c.Pointer, c.Pointer), old_cd *c.Pointer) int
|
func RegisterFinalizerUnreachable(
|
||||||
|
obj c.Pointer,
|
||||||
|
fn func(c.Pointer, c.Pointer), cd c.Pointer,
|
||||||
|
oldFn *func(c.Pointer, c.Pointer), oldCd *c.Pointer)
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -48,7 +59,7 @@ func Enable()
|
|||||||
func Disable()
|
func Disable()
|
||||||
|
|
||||||
//go:linkname IsDisabled C.GC_is_disabled
|
//go:linkname IsDisabled C.GC_is_disabled
|
||||||
func IsDisabled() int
|
func IsDisabled() c.Int
|
||||||
|
|
||||||
//go:linkname Gcollect C.GC_gcollect
|
//go:linkname Gcollect C.GC_gcollect
|
||||||
func Gcollect()
|
func Gcollect()
|
||||||
@@ -62,10 +73,10 @@ func GetMemoryUse() uintptr
|
|||||||
func EnableIncremental()
|
func EnableIncremental()
|
||||||
|
|
||||||
//go:linkname IsIncrementalMode C.GC_is_incremental_mode
|
//go:linkname IsIncrementalMode C.GC_is_incremental_mode
|
||||||
func IsIncrementalMode() int
|
func IsIncrementalMode() c.Int
|
||||||
|
|
||||||
//go:linkname IncrementalProtectionNeeds C.GC_incremental_protection_needs
|
//go:linkname IncrementalProtectionNeeds C.GC_incremental_protection_needs
|
||||||
func IncrementalProtectionNeeds() int
|
func IncrementalProtectionNeeds() c.Int
|
||||||
|
|
||||||
//go:linkname StartIncrementalCollection C.GC_start_incremental_collection
|
//go:linkname StartIncrementalCollection C.GC_start_incremental_collection
|
||||||
func StartIncrementalCollection()
|
func StartIncrementalCollection()
|
||||||
|
|||||||
Reference in New Issue
Block a user