diff options
Diffstat (limited to 'libc/libio/libioP.h')
-rw-r--r-- | libc/libio/libioP.h | 70 |
1 files changed, 14 insertions, 56 deletions
diff --git a/libc/libio/libioP.h b/libc/libio/libioP.h index f55a84ba2..9bbf2a741 100644 --- a/libc/libio/libioP.h +++ b/libc/libio/libioP.h @@ -113,34 +113,18 @@ extern "C" { # define _IO_vtable_offset(THIS) 0 #endif #define _IO_WIDE_JUMPS_FUNC(THIS) _IO_WIDE_JUMPS(THIS) -#ifdef _G_USING_THUNKS -# define JUMP_FIELD(TYPE, NAME) TYPE NAME -# define JUMP0(FUNC, THIS) (_IO_JUMPS_FUNC(THIS)->FUNC) (THIS) -# define JUMP1(FUNC, THIS, X1) (_IO_JUMPS_FUNC(THIS)->FUNC) (THIS, X1) -# define JUMP2(FUNC, THIS, X1, X2) (_IO_JUMPS_FUNC(THIS)->FUNC) (THIS, X1, X2) -# define JUMP3(FUNC, THIS, X1,X2,X3) (_IO_JUMPS_FUNC(THIS)->FUNC) (THIS, X1,X2, X3) -# define JUMP_INIT(NAME, VALUE) VALUE -# define JUMP_INIT_DUMMY JUMP_INIT(dummy, 0), JUMP_INIT (dummy2, 0) - -# define WJUMP0(FUNC, THIS) (_IO_WIDE_JUMPS_FUNC(THIS)->FUNC) (THIS) -# define WJUMP1(FUNC, THIS, X1) (_IO_WIDE_JUMPS_FUNC(THIS)->FUNC) (THIS, X1) -# define WJUMP2(FUNC, THIS, X1, X2) (_IO_WIDE_JUMPS_FUNC(THIS)->FUNC) (THIS, X1, X2) -# define WJUMP3(FUNC, THIS, X1,X2,X3) (_IO_WIDE_JUMPS_FUNC(THIS)->FUNC) (THIS, X1,X2, X3) -#else -/* These macros will change when we re-implement vtables to use "thunks"! */ -# define JUMP_FIELD(TYPE, NAME) struct { short delta1, delta2; TYPE pfn; } NAME -# define JUMP0(FUNC, THIS) _IO_JUMPS_FUNC(THIS)->FUNC.pfn (THIS) -# define JUMP1(FUNC, THIS, X1) _IO_JUMPS_FUNC(THIS)->FUNC.pfn (THIS, X1) -# define JUMP2(FUNC, THIS, X1, X2) _IO_JUMPS_FUNC(THIS)->FUNC.pfn (THIS, X1, X2) -# define JUMP3(FUNC, THIS, X1,X2,X3) _IO_JUMPS_FUNC(THIS)->FUNC.pfn (THIS, X1,X2,X3) -# define JUMP_INIT(NAME, VALUE) {0, 0, VALUE} -# define JUMP_INIT_DUMMY JUMP_INIT(dummy, 0) - -# define WJUMP0(FUNC, THIS) _IO_WIDE_JUMPS_FUNC(THIS)->FUNC.pfn (THIS) -# define WJUMP1(FUNC, THIS, X1) _IO_WIDE_JUMPS_FUNC(THIS)->FUNC.pfn (THIS, X1) -# define WJUMP2(FUNC, THIS, X1, X2) _IO_WIDE_JUMPS_FUNC(THIS)->FUNC.pfn (THIS, X1, X2) -# define WJUMP3(FUNC, THIS, X1,X2,X3) _IO_WIDE_JUMPS_FUNC(THIS)->FUNC.pfn (THIS, X1,X2,X3) -#endif +#define JUMP_FIELD(TYPE, NAME) TYPE NAME +#define JUMP0(FUNC, THIS) (_IO_JUMPS_FUNC(THIS)->FUNC) (THIS) +#define JUMP1(FUNC, THIS, X1) (_IO_JUMPS_FUNC(THIS)->FUNC) (THIS, X1) +#define JUMP2(FUNC, THIS, X1, X2) (_IO_JUMPS_FUNC(THIS)->FUNC) (THIS, X1, X2) +#define JUMP3(FUNC, THIS, X1,X2,X3) (_IO_JUMPS_FUNC(THIS)->FUNC) (THIS, X1,X2, X3) +#define JUMP_INIT(NAME, VALUE) VALUE +#define JUMP_INIT_DUMMY JUMP_INIT(dummy, 0), JUMP_INIT (dummy2, 0) + +#define WJUMP0(FUNC, THIS) (_IO_WIDE_JUMPS_FUNC(THIS)->FUNC) (THIS) +#define WJUMP1(FUNC, THIS, X1) (_IO_WIDE_JUMPS_FUNC(THIS)->FUNC) (THIS, X1) +#define WJUMP2(FUNC, THIS, X1, X2) (_IO_WIDE_JUMPS_FUNC(THIS)->FUNC) (THIS, X1, X2) +#define WJUMP3(FUNC, THIS, X1,X2,X3) (_IO_WIDE_JUMPS_FUNC(THIS)->FUNC) (THIS, X1,X2, X3) /* The 'finish' function does any final cleaning up of an _IO_FILE object. It does not delete (free) it, but does everything else to finalize it. @@ -302,10 +286,8 @@ typedef void (*_IO_imbue_t) (_IO_FILE *, void *); struct _IO_jump_t { - JUMP_FIELD(_G_size_t, __dummy); -#ifdef _G_USING_THUNKS - JUMP_FIELD(_G_size_t, __dummy2); -#endif + JUMP_FIELD(size_t, __dummy); + JUMP_FIELD(size_t, __dummy2); JUMP_FIELD(_IO_finish_t, __finish); JUMP_FIELD(_IO_overflow_t, __overflow); JUMP_FIELD(_IO_underflow_t, __underflow); @@ -878,30 +860,6 @@ extern int _IO_vscanf (const char *, _IO_va_list) __THROW; # endif #endif -/* VTABLE_LABEL defines NAME as of the CLASS class. - CNLENGTH is strlen(#CLASS). */ -#ifdef __GNUC__ -# if _G_VTABLE_LABEL_HAS_LENGTH -# define VTABLE_LABEL(NAME, CLASS, CNLENGTH) \ - extern char NAME[] asm (_G_VTABLE_LABEL_PREFIX #CNLENGTH #CLASS); -# else -# define VTABLE_LABEL(NAME, CLASS, CNLENGTH) \ - extern char NAME[] asm (_G_VTABLE_LABEL_PREFIX #CLASS); -# endif -#endif /* __GNUC__ */ - -#if !defined(builtinbuf_vtable) && defined(__cplusplus) -# ifdef __GNUC__ -VTABLE_LABEL(builtinbuf_vtable, builtinbuf, 10) -# else -# if _G_VTABLE_LABEL_HAS_LENGTH -# define builtinbuf_vtable _G_VTABLE_LABEL_PREFIX_ID##10builtinbuf -# else -# define builtinbuf_vtable _G_VTABLE_LABEL_PREFIX_ID##builtinbuf -# endif -# endif -#endif /* !defined(builtinbuf_vtable) && defined(__cplusplus) */ - #define _IO_va_start(args, last) va_start(args, last) extern struct _IO_fake_stdiobuf _IO_stdin_buf, _IO_stdout_buf, _IO_stderr_buf; |