mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
pull in ncruces/go-sqlite3 v0.20.3 with tetratelabs/wazero v1.8.2 (#3574)
This commit is contained in:
@ -2196,7 +2196,7 @@ func (m *machine) Encode(ctx context.Context) (err error) {
|
||||
}
|
||||
|
||||
// ResolveRelocations implements backend.Machine.
|
||||
func (m *machine) ResolveRelocations(refToBinaryOffset []int, binary []byte, relocations []backend.RelocationInfo, _ []int) {
|
||||
func (m *machine) ResolveRelocations(refToBinaryOffset []int, _ int, binary []byte, relocations []backend.RelocationInfo, _ []int) {
|
||||
for _, r := range relocations {
|
||||
offset := r.Offset
|
||||
calleeFnOffset := refToBinaryOffset[r.FuncRef]
|
||||
|
@ -21,7 +21,7 @@ const (
|
||||
|
||||
// trampolineIslandInterval is the range of the trampoline island.
|
||||
// Half of the range is used for the trampoline island, and the other half is used for the function.
|
||||
trampolineIslandInterval = maxUnconditionalBranchOffset / 2
|
||||
trampolineIslandInterval = (maxUnconditionalBranchOffset - 1) / 2
|
||||
|
||||
// maxNumFunctions explicitly specifies the maximum number of functions that can be allowed in a single executable.
|
||||
maxNumFunctions = trampolineIslandInterval >> 6
|
||||
@ -42,12 +42,13 @@ func (m *machine) CallTrampolineIslandInfo(numFunctions int) (interval, size int
|
||||
// ResolveRelocations implements backend.Machine ResolveRelocations.
|
||||
func (m *machine) ResolveRelocations(
|
||||
refToBinaryOffset []int,
|
||||
importedFns int,
|
||||
executable []byte,
|
||||
relocations []backend.RelocationInfo,
|
||||
callTrampolineIslandOffsets []int,
|
||||
) {
|
||||
for _, islandOffset := range callTrampolineIslandOffsets {
|
||||
encodeCallTrampolineIsland(refToBinaryOffset, islandOffset, executable)
|
||||
encodeCallTrampolineIsland(refToBinaryOffset, importedFns, islandOffset, executable)
|
||||
}
|
||||
|
||||
for _, r := range relocations {
|
||||
@ -71,11 +72,15 @@ func (m *machine) ResolveRelocations(
|
||||
// encodeCallTrampolineIsland encodes a trampoline island for the given functions.
|
||||
// Each island consists of a trampoline instruction sequence for each function.
|
||||
// Each trampoline instruction sequence consists of 4 instructions + 32-bit immediate.
|
||||
func encodeCallTrampolineIsland(refToBinaryOffset []int, islandOffset int, executable []byte) {
|
||||
for i := 0; i < len(refToBinaryOffset); i++ {
|
||||
func encodeCallTrampolineIsland(refToBinaryOffset []int, importedFns int, islandOffset int, executable []byte) {
|
||||
// We skip the imported functions: they don't need trampolines
|
||||
// and are not accounted for.
|
||||
binaryOffsets := refToBinaryOffset[importedFns:]
|
||||
|
||||
for i := 0; i < len(binaryOffsets); i++ {
|
||||
trampolineOffset := islandOffset + trampolineCallSize*i
|
||||
|
||||
fnOffset := refToBinaryOffset[i]
|
||||
fnOffset := binaryOffsets[i]
|
||||
diff := fnOffset - (trampolineOffset + 16)
|
||||
if diff > math.MaxInt32 || diff < math.MinInt32 {
|
||||
// This case even amd64 can't handle. 4GB is too big.
|
||||
|
2
vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/machine.go
generated
vendored
2
vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/machine.go
generated
vendored
@ -77,11 +77,13 @@ type (
|
||||
|
||||
// ResolveRelocations resolves the relocations after emitting machine code.
|
||||
// * refToBinaryOffset: the map from the function reference (ssa.FuncRef) to the executable offset.
|
||||
// * importedFns: the max index of the imported functions at the beginning of refToBinaryOffset
|
||||
// * executable: the binary to resolve the relocations.
|
||||
// * relocations: the relocations to resolve.
|
||||
// * callTrampolineIslandOffsets: the offsets of the trampoline islands in the executable.
|
||||
ResolveRelocations(
|
||||
refToBinaryOffset []int,
|
||||
importedFns int,
|
||||
executable []byte,
|
||||
relocations []RelocationInfo,
|
||||
callTrampolineIslandOffsets []int,
|
||||
|
2
vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/engine.go
generated
vendored
2
vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/engine.go
generated
vendored
@ -314,7 +314,7 @@ func (e *engine) compileModule(ctx context.Context, module *wasm.Module, listene
|
||||
|
||||
// Resolve relocations for local function calls.
|
||||
if len(rels) > 0 {
|
||||
machine.ResolveRelocations(refToBinaryOffset, executable, rels, callTrampolineIslandOffsets)
|
||||
machine.ResolveRelocations(refToBinaryOffset, importedFns, executable, rels, callTrampolineIslandOffsets)
|
||||
}
|
||||
|
||||
if runtime.GOARCH == "arm64" {
|
||||
|
Reference in New Issue
Block a user