Skip to content

Commit 820aa46

Browse files
committed
Merge remote-tracking branch 'upstream/master' into dev/gc-mmtk
2 parents f9afff4 + ebfe615 commit 820aa46

39 files changed

+455
-147
lines changed

.github/actions/compilers/entrypoint.sh

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -70,14 +70,6 @@ fi
7070

7171
pushd ${builddir}
7272

73-
case "${INPUT_APPEND_CONFIGURE}" in
74-
*--with-shared-gc*)
75-
export RUBY_GC_LIBRARY='librubygc.default.so'
76-
mkdir -p /home/runner/shared-gc
77-
grouped make shared-gc SHARED_GC=default
78-
;;
79-
esac
80-
8173
grouped make showflags
8274
grouped make all
8375
grouped make test

NEWS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ The following default gems are updated.
8080
* RubyGems 3.6.0.dev
8181
* bundler 2.6.0.dev
8282
* erb 4.0.4
83-
* fiddle 1.1.3.dev
83+
* fiddle 1.1.4.dev
8484
* io-console 0.7.2
8585
* irb 1.14.1
8686
* json 2.7.2

benchmark/data/citm_catalog.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1406,7 +1406,7 @@
14061406
"description": null,
14071407
"id": 138586671,
14081408
"logo": "/images/UE0AAAAACEKqLwAAAAlDSVRN",
1409-
"name": "Boris Godounov - M.Moussorgski (version de concert)",
1409+
"name": "Boris Godunov - M.Moussorgski (version de concert)",
14101410
"subTopicIds": [
14111411
337184284,
14121412
337184298,
@@ -50466,4 +50466,4 @@
5046650466
"venueNames": {
5046750467
"PLEYEL_PLEYEL": "Salle Pleyel"
5046850468
}
50469-
}
50469+
}

bootstraptest/test_method.rb

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1374,3 +1374,24 @@ def foo(...)
13741374
foo(:foo, b: :ok)
13751375
foo(*["foo"], b: :ok)
13761376
}
1377+
1378+
assert_equal 'ok', %q{
1379+
Thing = Struct.new(:value)
1380+
1381+
Obj = Thing.new("ok")
1382+
1383+
def delegate(...)
1384+
Obj.value(...)
1385+
end
1386+
1387+
def no_args
1388+
delegate
1389+
end
1390+
1391+
def splat_args(*args)
1392+
delegate(*args)
1393+
end
1394+
1395+
no_args
1396+
splat_args
1397+
}

ext/fiddle/closure.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ const rb_data_type_t closure_data_type = {
6161
.dfree = dealloc,
6262
.dsize = closure_memsize
6363
},
64-
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED,
64+
.flags = FIDDLE_DEFAULT_TYPED_DATA_FLAGS,
6565
};
6666

6767
struct callback_args {
@@ -300,6 +300,7 @@ initialize_body(VALUE user_data)
300300
cl->argv[i] = rb_fiddle_int_to_ffi_type(NUM2INT(arg));
301301
}
302302
cl->argv[argc] = NULL;
303+
OBJ_FREEZE_RAW(normalized_args);
303304

304305
ret = rb_fiddle_type_ensure(ret);
305306
rb_iv_set(data->self, "@ctype", ret);

ext/fiddle/extconf.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# frozen_string_literal: true
22
require 'mkmf'
33

4-
if RUBY_ENGINE == "jruby"
4+
unless RUBY_ENGINE == "ruby"
55
File.write('Makefile', dummy_makefile("").join)
66
return
77
end
@@ -223,6 +223,8 @@ def enable_debug_build_flag(flags)
223223
$LOCAL_LIBS.prepend("#{libffi.a} ").strip! # to exts.mk
224224
$INCFLAGS.gsub!(/-I#{libffi.dir}/, '-I$(LIBFFI_DIR)')
225225
end
226+
227+
have_func("rb_str_to_interned_str")
226228
create_makefile 'fiddle' do |conf|
227229
if !libffi
228230
next conf << "LIBFFI_CLEAN = none\n"

ext/fiddle/fiddle.gemspec

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,10 @@ Gem::Specification.new do |spec|
3838
"lib/fiddle.rb",
3939
"lib/fiddle/closure.rb",
4040
"lib/fiddle/cparser.rb",
41+
"lib/fiddle/ffi_backend.rb",
4142
"lib/fiddle/function.rb",
4243
"lib/fiddle/import.rb",
43-
"lib/fiddle/jruby.rb",
4444
"lib/fiddle/pack.rb",
45-
"lib/fiddle/ruby.rb",
4645
"lib/fiddle/struct.rb",
4746
"lib/fiddle/types.rb",
4847
"lib/fiddle/value.rb",

ext/fiddle/fiddle.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,4 +236,14 @@ VALUE rb_fiddle_new_function(VALUE address, VALUE arg_types, VALUE ret_type);
236236
typedef void (*rb_fiddle_freefunc_t)(void*);
237237
VALUE rb_fiddle_ptr_new_wrap(void *ptr, long size, rb_fiddle_freefunc_t func, VALUE wrap0, VALUE wrap1);
238238

239+
enum {
240+
FIDDLE_DEFAULT_TYPED_DATA_FLAGS = (
241+
RUBY_TYPED_FREE_IMMEDIATELY |
242+
RUBY_TYPED_WB_PROTECTED |
243+
#ifdef RUBY_TYPED_FROZEN_SHAREABLE
244+
RUBY_TYPED_FROZEN_SHAREABLE |
245+
#endif
246+
0)
247+
};
248+
239249
#endif

ext/fiddle/function.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ const rb_data_type_t function_data_type = {
5959
.dfree = deallocate,
6060
.dsize = function_memsize
6161
},
62-
.flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED,
62+
.flags = FIDDLE_DEFAULT_TYPED_DATA_FLAGS,
6363
};
6464

6565
static VALUE
@@ -153,6 +153,9 @@ initialize(int argc, VALUE argv[], VALUE self)
153153
rb_get_kwargs(kwargs, kw, 0, kw_max_, args);
154154
if (args[kw_name] != Qundef) {
155155
name = args[kw_name];
156+
#ifdef HAVE_RB_STR_TO_INTERNED_STR
157+
name = rb_str_to_interned_str(name);
158+
#endif
156159
}
157160
if (args[kw_need_gvl] != Qundef) {
158161
need_gvl = args[kw_need_gvl];

ext/fiddle/handle.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ static const rb_data_type_t fiddle_handle_data_type = {
5656
.dfree = fiddle_handle_free,
5757
.dsize = fiddle_handle_memsize
5858
},
59-
.flags = RUBY_TYPED_WB_PROTECTED,
59+
.flags = FIDDLE_DEFAULT_TYPED_DATA_FLAGS & ~RUBY_TYPED_FREE_IMMEDIATELY,
60+
/* keeping while its symbols are referred. */
6061
};
6162

6263
/*

0 commit comments

Comments
 (0)