SPVM-Resource-Coro

 view release on metacpan or  search on metacpan

coro_fix.patch  view on Meta::CPAN

diff --git b/lib/SPVM/Resource/Coro.native/include/coro.h a/lib/SPVM/Resource/Coro.native/include/coro.h
index a90e366..ca39f2c 100644
--- b/lib/SPVM/Resource/Coro.native/include/coro.h
+++ a/lib/SPVM/Resource/Coro.native/include/coro.h
@@ -312,11 +312,11 @@ void coro_stack_free (struct coro_stack *stack);
     && !defined CORO_SJLJ    && !defined CORO_LINUX \
     && !defined CORO_IRIX    && !defined CORO_ASM \
     && !defined CORO_PTHREAD && !defined CORO_FIBER
-# if defined WINDOWS && (defined __i386__ || (__x86_64__ || defined _M_IX86 || defined _M_AMD64)
+# if defined WINDOWS && (defined __i386__ || (__x86_64__ || defined _M_IX86 || defined _M_AMD64))
 #  define CORO_ASM 1
 # elif defined WINDOWS || defined _WIN32
 #  define CORO_LOSER 1 /* you don't win with windoze */
-# elif __linux && (__i386__ || (__x86_64__ && !__ILP32__) /*|| (__arm__ && __ARM_ARCH == 7)), not working */
+# elif __linux && (__i386__ || (__x86_64__ && !__ILP32__)) /*|| (__arm__ && __ARM_ARCH == 7)), not working */
 #  define CORO_ASM 1
 # elif defined HAVE_UCONTEXT_H
 #  define CORO_UCONTEXT 1
@@ -384,7 +384,7 @@ struct coro_context
   coro_jmp_buf env;
 };
 
-# define coro_transfer(p,n) do { if (!coro_setjmp ((p)->env)) coro_longjmp ((n)->env); } while (0)
+# define coro_transfer(p,n) do { if (!coro_setjmp (((struct coro_context*)p)->env)) coro_longjmp (((struct coro_context*)n)->env); } while (0)
 # define coro_destroy(ctx) (void *)(ctx)
 
 #elif CORO_ASM
@@ -438,4 +438,3 @@ void coro_destroy (coro_context *ctx);
 #endif
 
 #endif
-
diff --git b/lib/SPVM/Resource/Coro.native/src/coro.c a/lib/SPVM/Resource/Coro.native/src/coro.c
index a4de4c3..cd3a978 100644
--- b/lib/SPVM/Resource/Coro.native/src/coro.c
+++ a/lib/SPVM/Resource/Coro.native/src/coro.c
@@ -90,14 +90,14 @@ coro_init (void)
   coro_transfer (new_coro, create_coro);
 
 #if __GCC_HAVE_DWARF2_CFI_ASM && __amd64
-  /*asm (".cfi_startproc");*/
-  /*asm (".cfi_undefined rip");*/
+  /*__asm__ (".cfi_startproc");*/
+  /*__asm__ (".cfi_undefined rip");*/
 #endif
 
   func ((void *)arg);
 
 #if __GCC_HAVE_DWARF2_CFI_ASM && __amd64
-  /*asm (".cfi_endproc");*/
+  /*__asm__ (".cfi_endproc");*/
 #endif
 
   /* the new coro returned. bad. just abort() for now */
@@ -133,7 +133,7 @@ trampoline (int sig)
     #define CORO_WIN_TIB 1
   #endif
 
-  asm (
+  __asm__ (
        "\t.text\n"
        #if _WIN32 || __CYGWIN__
        "\t.globl _coro_transfer\n"
@@ -797,4 +797,3 @@ coro_stack_free (struct coro_stack *stack)
 }
 
 #endif
-



( run in 0.971 second using v1.01-cache-2.11-cpan-600a1bdf6e4 )