mirror of git://gcc.gnu.org/git/gcc.git
reflect: Fix build for systems that do not define ffi_go_closure.
From-SVN: r219831
This commit is contained in:
parent
342a33940d
commit
b077669c47
|
|
@ -63,7 +63,7 @@ func MakeFunc(typ Type, fn func(args []Value) (results []Value)) Value {
|
||||||
method: -1,
|
method: -1,
|
||||||
}
|
}
|
||||||
|
|
||||||
makeFuncFFI(ftyp, impl)
|
makeFuncFFI(ftyp, unsafe.Pointer(impl))
|
||||||
|
|
||||||
return Value{t, unsafe.Pointer(&impl), flag(Func) | flagIndir}
|
return Value{t, unsafe.Pointer(&impl), flag(Func) | flagIndir}
|
||||||
}
|
}
|
||||||
|
|
@ -102,7 +102,7 @@ func makeMethodValue(op string, v Value) Value {
|
||||||
rcvr: rcvr,
|
rcvr: rcvr,
|
||||||
}
|
}
|
||||||
|
|
||||||
makeFuncFFI(ftyp, fv)
|
makeFuncFFI(ftyp, unsafe.Pointer(fv))
|
||||||
|
|
||||||
return Value{ft, unsafe.Pointer(&fv), v.flag&flagRO | flag(Func) | flagIndir}
|
return Value{ft, unsafe.Pointer(&fv), v.flag&flagRO | flag(Func) | flagIndir}
|
||||||
}
|
}
|
||||||
|
|
@ -128,7 +128,7 @@ func makeValueMethod(v Value) Value {
|
||||||
rcvr: v,
|
rcvr: v,
|
||||||
}
|
}
|
||||||
|
|
||||||
makeFuncFFI(ftyp, impl)
|
makeFuncFFI(ftyp, unsafe.Pointer(impl))
|
||||||
|
|
||||||
return Value{t, unsafe.Pointer(&impl), v.flag&flagRO | flag(Func) | flagIndir}
|
return Value{t, unsafe.Pointer(&impl), v.flag&flagRO | flag(Func) | flagIndir}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import (
|
||||||
|
|
||||||
// The makeFuncFFI function, written in C, fills in an FFI closure.
|
// The makeFuncFFI function, written in C, fills in an FFI closure.
|
||||||
// It arranges for ffiCall to be invoked directly from FFI.
|
// It arranges for ffiCall to be invoked directly from FFI.
|
||||||
func makeFuncFFI(ftyp *funcType, impl *makeFuncImpl)
|
func makeFuncFFI(ftyp *funcType, impl unsafe.Pointer)
|
||||||
|
|
||||||
// FFICallbackGo implements the Go side of the libffi callback.
|
// FFICallbackGo implements the Go side of the libffi callback.
|
||||||
// It is exported so that C code can call it.
|
// It is exported so that C code can call it.
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
/* Declare C functions with the names used to call from Go. */
|
/* Declare C functions with the names used to call from Go. */
|
||||||
|
|
||||||
void makeFuncFFI(const struct __go_func_type *ftyp, ffi_go_closure *impl)
|
void makeFuncFFI(const struct __go_func_type *ftyp, void *impl)
|
||||||
__asm__ (GOSYM_PREFIX "reflect.makeFuncFFI");
|
__asm__ (GOSYM_PREFIX "reflect.makeFuncFFI");
|
||||||
|
|
||||||
#ifdef USE_LIBFFI_CLOSURES
|
#ifdef USE_LIBFFI_CLOSURES
|
||||||
|
|
@ -70,7 +70,7 @@ ffi_callback (ffi_cif* cif __attribute__ ((unused)), void *results,
|
||||||
/* Allocate an FFI closure and arrange to call ffi_callback. */
|
/* Allocate an FFI closure and arrange to call ffi_callback. */
|
||||||
|
|
||||||
void
|
void
|
||||||
makeFuncFFI(const struct __go_func_type *ftyp, ffi_go_closure *impl)
|
makeFuncFFI(const struct __go_func_type *ftyp, void *impl)
|
||||||
{
|
{
|
||||||
ffi_cif *cif;
|
ffi_cif *cif;
|
||||||
|
|
||||||
|
|
@ -83,7 +83,7 @@ makeFuncFFI(const struct __go_func_type *ftyp, ffi_go_closure *impl)
|
||||||
#else /* !defined(USE_LIBFFI_CLOSURES) */
|
#else /* !defined(USE_LIBFFI_CLOSURES) */
|
||||||
|
|
||||||
void
|
void
|
||||||
makeFuncFFI(const struct __go_func_type *ftyp, ffi_go_closure *impl)
|
makeFuncFFI(const struct __go_func_type *ftyp, void *impl)
|
||||||
{
|
{
|
||||||
runtime_panicstring ("libgo built without FFI does not support "
|
runtime_panicstring ("libgo built without FFI does not support "
|
||||||
"reflect.MakeFunc");
|
"reflect.MakeFunc");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue