summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <bram@vim.org>2014-02-05 22:41:15 +0100
committerBram Moolenaar <bram@vim.org>2014-02-05 22:41:15 +0100
commitf2cf07e85d03fae3273b02e4472f5dd9330147a8 (patch)
treee89a33b20f567b52ae7b00da87d72df78ca8d0ce
parent80f8a3ebf72c8da12d69f4685359cb0b826441f9 (diff)
downloadvim-f2cf07e85d03fae3273b02e4472f5dd9330147a8.tar.gz
updated for version 7.4.168v7.4.168v7-4-168
Problem: Can't compile with Ruby 2.1.0. Solution: Add support for new GC. (Kohei Suzuki)
-rw-r--r--src/if_ruby.c20
-rw-r--r--src/version.c2
2 files changed, 22 insertions, 0 deletions
diff --git a/src/if_ruby.c b/src/if_ruby.c
index 44fd5ee4..9343ec8b 100644
--- a/src/if_ruby.c
+++ b/src/if_ruby.c
@@ -96,6 +96,12 @@
# define rb_num2int rb_num2int_stub
#endif
+# if defined(DYNAMIC_RUBY_VER) && DYNAMIC_RUBY_VER >= 21
+/* Ruby 2.1 adds new GC called RGenGC and RARRAY_PTR uses
+ * rb_gc_writebarrier_unprotect_promoted if USE_RGENGC */
+# define rb_gc_writebarrier_unprotect_promoted rb_gc_writebarrier_unprotect_promoted_stub
+# endif
+
#include <ruby.h>
#ifdef RUBY19_OR_LATER
# include <ruby/encoding.h>
@@ -373,6 +379,10 @@ static VALUE (*dll_rb_require) (const char*);
static void* (*ruby_process_options)(int, char**);
# endif
+# if defined(USE_RGENGC) && USE_RGENGC
+static void (*dll_rb_gc_writebarrier_unprotect_promoted)(VALUE);
+# endif
+
# if defined(RUBY19_OR_LATER) && !defined(PROTO)
SIGNED_VALUE rb_num2long_stub(VALUE x)
{
@@ -406,6 +416,13 @@ VALUE rb_num2ulong(VALUE x)
# endif
# endif
+# if defined(USE_RGENGC) && USE_RGENGC
+void rb_gc_writebarrier_unprotect_promoted_stub(VALUE obj)
+{
+ return dll_rb_gc_writebarrier_unprotect_promoted(obj);
+}
+# endif
+
static HINSTANCE hinstRuby = NULL; /* Instance of ruby.dll */
/*
@@ -521,6 +538,9 @@ static struct
# endif
{"ruby_init_stack", (RUBY_PROC*)&dll_ruby_init_stack},
# endif
+# if defined(USE_RGENGC) && USE_RGENGC
+ {"rb_gc_writebarrier_unprotect_promoted", (RUBY_PROC*)&dll_rb_gc_writebarrier_unprotect_promoted},
+# endif
{"", NULL},
};
diff --git a/src/version.c b/src/version.c
index 81639c9b..8ebab00e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -739,6 +739,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 168,
+/**/
167,
/**/
166,