left_descriptor = left.__type_descriptor;
- if (((uintptr_t) left_descriptor & reflectFlags) != 0
- || ((uintptr_t) right.__type_descriptor & reflectFlags) != 0)
- runtime_panicstring ("invalid interface value");
-
if (left_descriptor == NULL && right.__type_descriptor == NULL)
return 0;
if (left_descriptor == NULL || right.__type_descriptor == NULL)
const struct __go_type_descriptor *left_descriptor;
left_descriptor = left.__type_descriptor;
- if (((uintptr_t) left_descriptor & reflectFlags) != 0)
- runtime_panicstring ("invalid interface value");
if (left_descriptor == NULL)
return 1;
if (!__go_type_descriptors_equal (left_descriptor, right_descriptor))
{
const struct __go_type_descriptor *left_descriptor;
- if (((uintptr_t) right.__type_descriptor & reflectFlags) != 0)
- runtime_panicstring ("invalid interface value");
if (left.__methods == NULL && right.__type_descriptor == NULL)
return 0;
if (left.__methods == NULL || right.__type_descriptor == NULL)
v2 = (const struct __go_empty_interface *) vv2;
v1_descriptor = v1->__type_descriptor;
v2_descriptor = v2->__type_descriptor;
- if (((uintptr_t) v1_descriptor & reflectFlags) != 0
- || ((uintptr_t) v2_descriptor & reflectFlags) != 0)
- runtime_panicstring ("invalid interface value");
if (v1_descriptor == NULL || v2_descriptor == NULL)
return v1_descriptor == v2_descriptor;
if (!__go_type_descriptors_equal (v1_descriptor, v2_descriptor))
struct __go_open_array __fields;
};
-/* If an empty interface has these bits set in its type pointer, it
- was copied from a reflect.Value and is not a valid empty
- interface. */
-
-enum
-{
- reflectFlags = 3,
-};
-
/* Whether a type descriptor is a pointer. */
static inline _Bool
// Convert an empty interface to an empty interface.
func ifaceE2E2(e empty_interface) (ret empty_interface, ok bool) {
- if(((uintptr_t)e.__type_descriptor&reflectFlags) != 0)
- runtime_panicstring("invalid interface value");
ret = e;
ok = ret.__type_descriptor != nil;
}
// Convert an empty interface to a non-empty interface.
func ifaceE2I2(inter *descriptor, e empty_interface) (ret interface, ok bool) {
- if(((uintptr_t)e.__type_descriptor&reflectFlags) != 0)
- runtime_panicstring("invalid interface value");
if (e.__type_descriptor == nil) {
ret.__methods = nil;
ret.__object = nil;
// Convert an empty interface to a pointer type.
func ifaceE2T2P(inter *descriptor, e empty_interface) (ret *void, ok bool) {
- if(((uintptr_t)e.__type_descriptor&reflectFlags) != 0)
- runtime_panicstring("invalid interface value");
if (!__go_type_descriptors_equal(inter, e.__type_descriptor)) {
ret = nil;
ok = 0;
// Convert an empty interface to a non-pointer type.
func ifaceE2T2(inter *descriptor, e empty_interface, ret *void) (ok bool) {
- if(((uintptr_t)e.__type_descriptor&reflectFlags) != 0)
- runtime_panicstring("invalid interface value");
if (!__go_type_descriptors_equal(inter, e.__type_descriptor)) {
__builtin_memset(ret, 0, inter->__size);
ok = 0;
const Type *t;
Eface err;
- if(((uintptr)e.__type_descriptor&reflectFlags) != 0)
- runtime_throw("invalid interface value");
t = e.__type_descriptor;
if(t == nil) {
// explicit conversions require non-nil interface value.