ruby-changes:14694
From: nobu <ko1@a...>
Date: Wed, 3 Feb 2010 11:39:40 +0900 (JST)
Subject: [ruby-changes:14694] Ruby:r26548 (trunk): * ext/dl/{closure,function}.c: removed C99 features and warnings.
nobu 2010-02-03 11:39:18 +0900 (Wed, 03 Feb 2010) New Revision: 26548 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=26548 Log: * ext/dl/{closure,function}.c: removed C99 features and warnings. Modified files: trunk/ChangeLog trunk/ext/dl/closure.c trunk/ext/dl/function.c Index: ChangeLog =================================================================== --- ChangeLog (revision 26547) +++ ChangeLog (revision 26548) @@ -1,3 +1,7 @@ +Wed Feb 3 11:38:44 2010 Nobuyoshi Nakada <nobu@r...> + + * ext/dl/{closure,function}.c: removed C99 features and warnings. + Wed Feb 3 10:12:09 2010 Aaron Patterson <tenderlove@r...> * ext/dl/function.c: DL::Function now uses libffi @@ -17,7 +21,7 @@ * ext/dl/lib/dl/callback.rb: Converting internal callbacks to use DL::Closure - + * ext/dl/lib/dl/closure.rb: Ruby parts of the new DL::Closure object * ext/dl/lib/dl/import.rb: More conversion to use DL::Closure object @@ -171,7 +175,7 @@ denote that #to_i raises FloatDomainError for Inf and NaN. * ext/bigdecimal/bigdecimal.c (BigDecimal_to_i): fast #to_i using - BigDecimal_split(). + BigDecimal_split(). * bignum.c (conv_digit): use faster ISDIGIT() assuming ASCII. @@ -403,7 +407,7 @@ WIN32OLE.ole_uninitialize to use in win32ole.rb. You must not use these methods. - * ext/win32ole/lib/win32ole.rb: add win32ole.rb + * ext/win32ole/lib/win32ole.rb: add win32ole.rb re-define Thread#initialize (fix ruby-core:27634) Sat Jan 23 00:25:19 2010 Yusuke Endoh <mame@t...> @@ -419,7 +423,7 @@ Fri Jan 22 23:54:04 2010 Yusuke Endoh <mame@t...> * test/ruby/test_array.rb: add a test for Array#rotate, rotate!. - + * test/ruby/test_dir.rb, test/ruby/test_fnmatch.rb: add some tests (for coverage of dir.c). @@ -427,7 +431,7 @@ * test/ruby/test_enumerator.rb: add some tests for Enumerator#inspect, Enumerator::Generator and Yielder. - + * test/ruby/test_env.rb: add a test for ENV#index. * test/ruby/test_exception.rb: add some tests (for coverage of @@ -453,7 +457,7 @@ Fri Jan 22 21:05:34 2010 Tanaka Akira <akr@f...> - * time.c (time_mload): add submicro into vtm.subsecx. [ruby-dev:40133] + * time.c (time_mload): add submicro into vtm.subsecx. [ruby-dev:40133] Fri Jan 22 14:26:36 2010 Nobuyoshi Nakada <nobu@r...> @@ -622,7 +626,7 @@ * object.c (rb_class_initialize): Make sure BasicObject doesn't get initialized twice [ruby-core:27577] - + * class.c (rb_class_init_copy): ditto Wed Jan 13 06:54:44 2010 Nobuyoshi Nakada <nobu@r...> @@ -859,7 +863,7 @@ * variable.c (rb_class2name_without_alloc): new utility function. - * tool/rbinstall.rb (install?(:ext, :arch, :'ext-arch')): installs + * tool/rbinstall.rb (install?(:ext, :arch, :'ext-arch')): installs dtrace.d if necessary. * thread_pthread.c (add_signal_thread_list): probe "raise". @@ -901,12 +905,12 @@ (MINIDTRACE_OBJ): ditto. (GOLFDTRACE_OBJ): ditto. (LIBRUBY_DTRACE_OBJ): ditto. - (RUBY_DTRACE_POSTPROCESS): new macro. checks whether the dtrace on + (RUBY_DTRACE_POSTPROCESS): new macro. checks whether the dtrace on the system needs postprocessing. (RUBY_DTRACE_BSD_BROKEN): new macro. checks whether the dtrace supports USDT. - * Makefile.in: + * Makefile.in: (DTRACE): new variable. name of dtrace(1). (TRACING_MODEL): new variable. name of the chosen tracing mechanism. (DTRACE_OBJ): same as the one in configure.in. @@ -917,16 +921,16 @@ (trace_none.h): new target for TRACING_MODEL=none (RUBY_H_INCLUDES): appended a header for tracing. (distclean-local): also removes preprocessed version of dtrace.d - ($(LIBRUBY_A)): needs $(LIBRUBY_DTRACE_OBJ) if dtrace needs + ($(LIBRUBY_A)): needs $(LIBRUBY_DTRACE_OBJ) if dtrace needs postprocessing. ($(PROGRAM)): ditto. (golf): ditto. (miniruby): ditto. - ($(arch_hdrdir)/ruby/dtrace.d): new target. preprocessed version + ($(arch_hdrdir)/ruby/dtrace.d): new target. preprocessed version of defs/dtrace.d. generated if necessary. ($(arch_hdrdir)/ruby/trace_dtrace.h): new target. definition of probes. - ($(LIBRUBY_DTRACE_OBJ)): new target. generated if dtrace needs + ($(LIBRUBY_DTRACE_OBJ)): new target. generated if dtrace needs postprocessing. ($(DTRACE_OBJ)): ditto. ($(MINIDTRACE_OBJ)): ditto. @@ -1110,7 +1114,7 @@ Sun Dec 27 09:41:54 2009 Yuki Sonoda (Yugui) <yugui@y...> * tool/rbinstall.rb (install?(:local, :comm, :bin, :'bin-comm')): - Makes it vim friendly. __END__ in a heredoc is confusing with + Makes it vim friendly. __END__ in a heredoc is confusing with the script end for vim. Sun Dec 27 09:13:55 2009 Yuki Sonoda (Yugui) <yugui@y...> Index: ext/dl/function.c =================================================================== --- ext/dl/function.c (revision 26547) +++ ext/dl/function.c (revision 26548) @@ -11,34 +11,37 @@ typedef union { - unsigned char uchar; // ffi_type_uchar - signed char schar; // ffi_type_schar - unsigned short ushort; // ffi_type_sshort - signed short sshort; // ffi_type_ushort - unsigned int uint; // ffi_type_uint - signed int sint; // ffi_type_sint - unsigned long ulong; // ffi_type_ulong - signed long slong; // ffi_type_slong - float ffloat; // ffi_type_float - double ddouble; // ffi_type_double + unsigned char uchar; /* ffi_type_uchar */ + signed char schar; /* ffi_type_schar */ + unsigned short ushort; /* ffi_type_sshort */ + signed short sshort; /* ffi_type_ushort */ + unsigned int uint; /* ffi_type_uint */ + signed int sint; /* ffi_type_sint */ + unsigned long ulong; /* ffi_type_ulong */ + signed long slong; /* ffi_type_slong */ + float ffloat; /* ffi_type_float */ + double ddouble; /* ffi_type_double */ #if HAVE_LONG_LONG - unsigned LONG_LONG long_long; // ffi_type_uint64 + unsigned LONG_LONG long_long; /* ffi_type_uint64 */ #endif - void * pointer; // ffi_type_pointer + void * pointer; /* ffi_type_pointer */ } dl_generic; static void -dlfunction_free(ffi_cif *ptr) +dlfunction_free(void *p) { - if(ptr->arg_types) xfree(ptr->arg_types); + ffi_cif *ptr = p; + if (ptr->arg_types) xfree(ptr->arg_types); xfree(ptr); } static size_t -dlfunction_memsize(ffi_cif *ptr) +dlfunction_memsize(const void *p) { + /* const */ffi_cif *ptr = (ffi_cif *)p; size_t size = 0; - if(ptr) { + + if (ptr) { size += sizeof(*ptr); size += ffi_raw_size(ptr); } @@ -63,26 +66,27 @@ { ffi_cif * cif; ffi_type **arg_types; + ffi_status result; + int i; TypedData_Get_Struct(self, ffi_cif, &dlfunction_data_type, cif); arg_types = xcalloc(RARRAY_LEN(args) + 1, sizeof(ffi_type *)); - int i; - for(i = 0; i < RARRAY_LEN(args); i++) { + for (i = 0; i < RARRAY_LEN(args); i++) { int type = NUM2INT(RARRAY_PTR(args)[i]); arg_types[i] = DL2FFI_TYPE(type); } arg_types[RARRAY_LEN(args)] = NULL; - ffi_status result = ffi_prep_cif( + result = ffi_prep_cif ( cif, NUM2INT(abi), RARRAY_LEN(args), DL2FFI_TYPE(NUM2INT(ret_type)), arg_types); - if(result) + if (result) rb_raise(rb_eRuntimeError, "error creating CIF %d", result); return self; @@ -93,41 +97,41 @@ { int signed_p = 1; - if(dl_type < 0) { + if (dl_type < 0) { dl_type = -1 * dl_type; signed_p = 0; } - switch(dl_type) { - case DLTYPE_VOID: - break; - case DLTYPE_VOIDP: - dst->pointer = NUM2PTR(rb_Integer(src)); - break; - case DLTYPE_CHAR: - case DLTYPE_SHORT: - case DLTYPE_INT: - dst->sint = NUM2INT(src); - break; - case DLTYPE_LONG: - if(signed_p) - dst->slong = NUM2LONG(src); - else - dst->ulong = NUM2LONG(src); - break; + switch (dl_type) { + case DLTYPE_VOID: + break; + case DLTYPE_VOIDP: + dst->pointer = NUM2PTR(rb_Integer(src)); + break; + case DLTYPE_CHAR: + case DLTYPE_SHORT: + case DLTYPE_INT: + dst->sint = NUM2INT(src); + break; + case DLTYPE_LONG: + if (signed_p) + dst->slong = NUM2LONG(src); + else + dst->ulong = NUM2LONG(src); + break; #if HAVE_LONG_LONG - case DLTYPE_LONG_LONG: - dst->long_long = rb_big2ull(src); - break; + case DLTYPE_LONG_LONG: + dst->long_long = rb_big2ull(src); + break; #endif - case DLTYPE_FLOAT: - dst->ffloat = NUM2DBL(src); - break; - case DLTYPE_DOUBLE: - dst->ddouble = NUM2DBL(src); - break; - default: - rb_raise(rb_eRuntimeError, "unknown type %d", dl_type); + case DLTYPE_FLOAT: + dst->ffloat = (float)NUM2DBL(src); + break; + case DLTYPE_DOUBLE: + dst->ddouble = NUM2DBL(src); + break; + default: + rb_raise(rb_eRuntimeError, "unknown type %d", dl_type); } } @@ -137,34 +141,34 @@ int signed_p = 1; int dl_type = NUM2INT(rettype); - if(dl_type < 0) { + if (dl_type < 0) { dl_type = -1 * dl_type; signed_p = 0; } - switch(dl_type) { - case DLTYPE_VOID: - return Qnil; - case DLTYPE_VOIDP: - return rb_dlptr_new((void *)retval.pointer, 0, NULL); - case DLTYPE_CHAR: - case DLTYPE_SHORT: - case DLTYPE_INT: - return INT2NUM(retval.sint); - case DLTYPE_LONG: - if(signed_p) return LONG2NUM(retval.slong); - return LONG2NUM(retval.ulong); + switch (dl_type) { + case DLTYPE_VOID: + return Qnil; + case DLTYPE_VOIDP: + return rb_dlptr_new((void *)retval.pointer, 0, NULL); + case DLTYPE_CHAR: + case DLTYPE_SHORT: + case DLTYPE_INT: + return INT2NUM(retval.sint); + case DLTYPE_LONG: + if (signed_p) return LONG2NUM(retval.slong); + return LONG2NUM(retval.ulong); #if HAVE_LONG_LONG - case DLTYPE_LONG_LONG: - return rb_ll2inum(retval.long_long); - break; + case DLTYPE_LONG_LONG: + return rb_ll2inum(retval.long_long); + break; #endif - case DLTYPE_FLOAT: - return rb_float_new(retval.ffloat); - case DLTYPE_DOUBLE: - return rb_float_new(retval.ddouble); - default: - rb_raise(rb_eRuntimeError, "unknown type %d", dl_type); + case DLTYPE_FLOAT: + return rb_float_new(retval.ffloat); + case DLTYPE_DOUBLE: + return rb_float_new(retval.ddouble); + default: + rb_raise(rb_eRuntimeError, "unknown type %d", dl_type); } } @@ -176,17 +180,18 @@ dl_generic *generic_args; void **values; void * fun_ptr; + VALUE cfunc, types; + int i; TypedData_Get_Struct(self, ffi_cif, &dlfunction_data_type, cif); values = xcalloc((size_t)argc + 1, (size_t)sizeof(void *)); generic_args = xcalloc((size_t)argc, (size_t)sizeof(dl_generic)); - VALUE cfunc = rb_iv_get(self, "@cfunc"); - VALUE types = rb_iv_get(self, "@args"); + cfunc = rb_iv_get(self, "@cfunc"); + types = rb_iv_get(self, "@args"); - int i; - for(i = 0; i < argc; i++) { + for (i = 0; i < argc; i++) { VALUE dl_type = RARRAY_PTR(types)[i]; VALUE src = rb_funcall(self, rb_intern("ruby2ffi"), Index: ext/dl/closure.c =================================================================== --- ext/dl/closure.c (revision 26547) +++ ext/dl/closure.c (revision 26548) @@ -27,7 +27,7 @@ munmap(cls->pcl, sizeof(cls->pcl)); #endif xfree(cls->cif); - if(cls->argv) xfree(cls->argv); + if (cls->argv) xfree(cls->argv); xfree(cls); } @@ -35,9 +35,9 @@ dlclosure_memsize(const void * ptr) { dl_closure * cls = (dl_closure *)ptr; + size_t size = 0; - size_t size = 0; - if(ptr) { + if (ptr) { size += sizeof(*cls); size += ffi_raw_size(cls->cif); size += sizeof(*cls->argv); @@ -59,73 +59,74 @@ VALUE ctype = rb_iv_get(self, "@ctype"); int argc = RARRAY_LEN(rbargs); VALUE *params = xcalloc(argc, sizeof(VALUE *)); + VALUE ret; + int i, dl_type; - int i; - for(i = 0; i < argc; i++) { - int dl_type = NUM2INT(RARRAY_PTR(rbargs)[i]); - switch(dl_type) { - case DLTYPE_VOID: - argc = 0; - break; - case DLTYPE_INT: - params[i] = INT2NUM(*(int *)args[i]); - break; - case DLTYPE_VOIDP: - params[i] = rb_dlptr_new(*(void **)args[i], 0, NULL); - break; - case DLTYPE_LONG: - params[i] = LONG2NUM(*(long *)args[i]); - break; - case DLTYPE_CHAR: - params[i] = INT2NUM(*(char *)args[i]); - break; - case DLTYPE_DOUBLE: - params[i] = rb_float_new(*(double *)args[i]); - break; - case DLTYPE_FLOAT: - params[i] = rb_float_new(*(float *)args[i]); - break; + for (i = 0; i < argc; i++) { + dl_type = NUM2INT(RARRAY_PTR(rbargs)[i]); + switch (dl_type) { + case DLTYPE_VOID: + argc = 0; + break; + case DLTYPE_INT: + params[i] = INT2NUM(*(int *)args[i]); + break; + case DLTYPE_VOIDP: + params[i] = rb_dlptr_new(*(void **)args[i], 0, NULL); + break; + case DLTYPE_LONG: + params[i] = LONG2NUM(*(long *)args[i]); + break; + case DLTYPE_CHAR: + params[i] = INT2NUM(*(char *)args[i]); + break; + case DLTYPE_DOUBLE: + params[i] = rb_float_new(*(double *)args[i]); + break; + case DLTYPE_FLOAT: + params[i] = rb_float_new(*(float *)args[i]); + break; #if HAVE_LONG_LONG - case DLTYPE_LONG_LONG: - params[i] = rb_ull2inum(*(unsigned LONG_LONG *)args[i]); - break; + case DLTYPE_LONG_LONG: + params[i] = rb_ull2inum(*(unsigned LONG_LONG *)args[i]); + break; #endif - default: - rb_raise(rb_eRuntimeError, "closure args: %d", dl_type); + default: + rb_raise(rb_eRuntimeError, "closure args: %d", dl_type); } } - VALUE ret = rb_funcall2(self, rb_intern("call"), argc, params); + ret = rb_funcall2(self, rb_intern("call"), argc, params); - int dl_type = NUM2INT(ctype); - switch(dl_type) { - case DLTYPE_VOID: - break; - case DLTYPE_LONG: - *(long *)resp = NUM2LONG(ret); - break; - case DLTYPE_CHAR: - *(char *)resp = NUM2INT(ret); - break; - case DLTYPE_VOIDP: - *(void **)resp = NUM2PTR(ret); - break; - case DLTYPE_INT: - *(int *)resp = NUM2INT(ret); - break; - case DLTYPE_DOUBLE: - *(double *)resp = NUM2DBL(ret); - break; - case DLTYPE_FLOAT: - *(float *)resp = NUM2DBL(ret); - break; + dl_type = NUM2INT(ctype); + switch (dl_type) { + case DLTYPE_VOID: + break; + case DLTYPE_LONG: + *(long *)resp = NUM2LONG(ret); + break; + case DLTYPE_CHAR: + *(char *)resp = NUM2INT(ret); + break; + case DLTYPE_VOIDP: + *(void **)resp = NUM2PTR(ret); + break; + case DLTYPE_INT: + *(int *)resp = NUM2INT(ret); + break; + case DLTYPE_DOUBLE: + *(double *)resp = NUM2DBL(ret); + break; + case DLTYPE_FLOAT: + *(float *)resp = (float)NUM2DBL(ret); + break; #if HAVE_LONG_LONG - case DLTYPE_LONG_LONG: - *(unsigned LONG_LONG *)resp = rb_big2ull(ret); - break; + case DLTYPE_LONG_LONG: + *(unsigned LONG_LONG *)resp = rb_big2ull(ret); + break; #endif - default: - rb_raise(rb_eRuntimeError, "closure retval: %d", dl_type); + default: + rb_raise(rb_eRuntimeError, "closure retval: %d", dl_type); } xfree(params); } @@ -155,22 +156,22 @@ VALUE ret; VALUE args; VALUE abi; - dl_closure * cl; ffi_cif * cif; ffi_closure *pcl; + ffi_status result; + int i, argc; - if(2 == rb_scan_args(rbargc, argv, "21", &ret, &args, &abi)) + if (2 == rb_scan_args(rbargc, argv, "21", &ret, &args, &abi)) abi = INT2NUM(FFI_DEFAULT_ABI); - int i; - int argc = RARRAY_LEN(args); + argc = RARRAY_LEN(args); TypedData_Get_Struct(self, dl_closure, &dlclosure_data_type, cl); cl->argv = (ffi_type **)xcalloc(argc + 1, sizeof(ffi_type *)); - for(i = 0; i < argc; i++) { + for (i = 0; i < argc; i++) { int dltype = NUM2INT(RARRAY_PTR(args)[i]); cl->argv[i] = DL2FFI_TYPE(dltype); } @@ -182,11 +183,11 @@ cif = cl->cif; pcl = cl->pcl; - ffi_status result = ffi_prep_cif(cif, NUM2INT(abi), argc, + result = ffi_prep_cif(cif, NUM2INT(abi), argc, DL2FFI_TYPE(NUM2INT(ret)), cl->argv); - if(FFI_OK != result) + if (FFI_OK != result) rb_raise(rb_eRuntimeError, "error prepping CIF %d", result); #ifdef USE_NEW_CLOSURE_API @@ -198,7 +199,7 @@ mprotect(pcl, sizeof(pcl), PROT_READ | PROT_EXEC); #endif - if(FFI_OK != result) + if (FFI_OK != result) rb_raise(rb_eRuntimeError, "error prepping closure %d", result); return self; @@ -208,10 +209,11 @@ rb_dlclosure_to_i(VALUE self) { dl_closure * cl; + void *code; TypedData_Get_Struct(self, dl_closure, &dlclosure_data_type, cl); - void * code = cl->code; + code = cl->code; return PTR2NUM(code); } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/