update ssa.Slice

This commit is contained in:
visualfc
2024-05-03 10:30:07 +08:00
parent 85da86a4f1
commit d444123062
8 changed files with 276 additions and 26 deletions

View File

@@ -18,6 +18,8 @@ package runtime
import (
"unsafe"
"github.com/goplus/llgo/internal/runtime/c"
)
// -----------------------------------------------------------------------------
@@ -54,4 +56,18 @@ func SliceData(s Slice) unsafe.Pointer {
return s.data
}
func NewSlice3(base unsafe.Pointer, eltSize, cap, i, j, k int) (s Slice) {
if i < 0 || j < i || k < j || k > cap {
panic("slice index out of bounds")
}
s.len = j - i
s.cap = k - i
if k-i > 0 {
s.data = c.Advance(base, i*eltSize)
} else {
s.data = base
}
return
}
// -----------------------------------------------------------------------------