ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/IO-AIO/AIO.xs
(Generate patch)

Comparing IO-AIO/AIO.xs (file contents):
Revision 1.125 by root, Thu Jun 19 09:05:43 2008 UTC vs.
Revision 1.127 by root, Tue Sep 30 13:17:32 2008 UTC

80# define SvVAL64 SvIV 80# define SvVAL64 SvIV
81#else 81#else
82# define SvVAL64 SvNV 82# define SvVAL64 SvNV
83#endif 83#endif
84 84
85/*****************************************************************************/
86
87#if __GNUC__ >= 3
88# define expect(expr,value) __builtin_expect ((expr),(value))
89#else
90# define expect(expr,value) (expr)
91#endif
92
93#define expect_false(expr) expect ((expr) != 0, 0)
94#define expect_true(expr) expect ((expr) != 0, 1)
95
96/*****************************************************************************/
97
85static HV *stash; 98static HV *stash;
86typedef SV SV8; /* byte-sv, used for argument-checking */ 99typedef SV SV8; /* byte-sv, used for argument-checking */
87 100
88#define AIO_REQ_KLASS "IO::AIO::REQ" 101#define AIO_REQ_KLASS "IO::AIO::REQ"
89#define AIO_GRP_KLASS "IO::AIO::GRP" 102#define AIO_GRP_KLASS "IO::AIO::GRP"
181 194
182static void req_submit (eio_req *req) 195static void req_submit (eio_req *req)
183{ 196{
184 eio_submit (req); 197 eio_submit (req);
185 198
186 if (on_next_submit) 199 if (expect_false (on_next_submit))
187 { 200 {
188 dSP; 201 dSP;
189 SV *cb = sv_2mortal (on_next_submit); 202 SV *cb = sv_2mortal (on_next_submit);
190 203
191 on_next_submit = 0; 204 on_next_submit = 0;
464 \ 477 \
465 req->callback = newSVsv (callback); \ 478 req->callback = newSVsv (callback); \
466 req->pri = req_pri 479 req->pri = req_pri
467 480
468#define REQ_SEND \ 481#define REQ_SEND \
482 PUTBACK; \
469 req_submit (req); \ 483 req_submit (req); \
484 SPAGAIN; \
470 \ 485 \
471 if (GIMME_V != G_VOID) \ 486 if (GIMME_V != G_VOID) \
472 XPUSHs (req_sv (req, AIO_REQ_KLASS)); 487 XPUSHs (req_sv (req, AIO_REQ_KLASS));
473 488
474MODULE = IO::AIO PACKAGE = IO::AIO 489MODULE = IO::AIO PACKAGE = IO::AIO
894{ 909{
895 dREQ; 910 dREQ;
896 911
897 req->type = EIO_GROUP; 912 req->type = EIO_GROUP;
898 913
899 eio_submit (req); 914 req_submit (req);
900 XPUSHs (req_sv (req, AIO_GRP_KLASS)); 915 XPUSHs (req_sv (req, AIO_GRP_KLASS));
901} 916}
902 917
903void 918void
904aio_nop (SV *callback=&PL_sv_undef) 919aio_nop (SV *callback=&PL_sv_undef)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines