[前][次][番号順一覧][スレッド一覧]

ruby-changes:52729

From: k0kubun <ko1@a...>
Date: Sun, 7 Oct 2018 22:35:12 +0900 (JST)
Subject: [ruby-changes:52729] k0kubun:r64941 (trunk): vm_core.h: fix inconsistent prototype declarations

k0kubun	2018-10-07 22:34:59 +0900 (Sun, 07 Oct 2018)

  New Revision: 64941

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=64941

  Log:
    vm_core.h: fix inconsistent prototype declarations
    
    like "error: static declaration of 'xxx' follows non-static declaration".
    r64940 is successfully built on mswin but not built on almost all other environments.
    
    internal.h: ditto
    
    include/ruby/intern.h: MJIT_STATIC is moved to this file since this file
    also needs to use this.
    
    mjit.h: MJIT_STATIC is moved from this.

  Modified files:
    trunk/include/ruby/intern.h
    trunk/internal.h
    trunk/mjit.h
    trunk/vm_core.h
Index: include/ruby/intern.h
===================================================================
--- include/ruby/intern.h	(revision 64940)
+++ include/ruby/intern.h	(revision 64941)
@@ -34,6 +34,18 @@ extern "C" { https://github.com/ruby/ruby/blob/trunk/include/ruby/intern.h#L34
 
 #include "ruby/st.h"
 
+/* On mswin, MJIT header transformation can't be used since cl.exe can't output
+   preprocessed output preserving macros. So this `MJIT_STATIC` is needed
+   to force non-static function to static on MJIT header to avoid symbol conflict.
+   `MJIT_FUNC_EXPORTED` is also changed to `static` on MJIT header for the same reason. */
+#ifdef MJIT_HEADER
+# define MJIT_STATIC static
+# undef MJIT_FUNC_EXPORTED
+# define MJIT_FUNC_EXPORTED static
+#else
+# define MJIT_STATIC
+#endif
+
 RUBY_SYMBOL_EXPORT_BEGIN
 
 /*
@@ -286,7 +298,7 @@ int rb_sourceline(void); https://github.com/ruby/ruby/blob/trunk/include/ruby/intern.h#L298
 const char *rb_sourcefile(void);
 VALUE rb_check_funcall(VALUE, ID, int, const VALUE*);
 
-NORETURN(void rb_error_arity(int, int, int));
+NORETURN(MJIT_STATIC void rb_error_arity(int, int, int));
 static inline int
 rb_check_arity(int argc, int min, int max)
 {
Index: vm_core.h
===================================================================
--- vm_core.h	(revision 64940)
+++ vm_core.h	(revision 64941)
@@ -1578,7 +1578,7 @@ void rb_vm_inc_const_missing_count(void) https://github.com/ruby/ruby/blob/trunk/vm_core.h#L1578
 void rb_vm_gvl_destroy(rb_vm_t *vm);
 VALUE rb_vm_call(rb_execution_context_t *ec, VALUE recv, VALUE id, int argc,
 		 const VALUE *argv, const rb_callable_method_entry_t *me);
-void rb_vm_pop_frame(rb_execution_context_t *ec);
+MJIT_STATIC void rb_vm_pop_frame(rb_execution_context_t *ec);
 
 void rb_thread_start_timer_thread(void);
 void rb_thread_stop_timer_thread(void);
@@ -1618,7 +1618,7 @@ void rb_vm_stack_to_heap(rb_execution_co https://github.com/ruby/ruby/blob/trunk/vm_core.h#L1618
 void ruby_thread_init_stack(rb_thread_t *th);
 int rb_vm_control_frame_id_and_class(const rb_control_frame_t *cfp, ID *idp, ID *called_idp, VALUE *klassp);
 void rb_vm_rewind_cfp(rb_execution_context_t *ec, rb_control_frame_t *cfp);
-VALUE rb_vm_bh_to_procval(const rb_execution_context_t *ec, VALUE block_handler);
+MJIT_STATIC VALUE rb_vm_bh_to_procval(const rb_execution_context_t *ec, VALUE block_handler);
 
 void rb_vm_register_special_exception_str(enum ruby_special_exceptions sp, VALUE exception_class, VALUE mesg);
 
@@ -1629,7 +1629,7 @@ void rb_gc_mark_machine_stack(const rb_e https://github.com/ruby/ruby/blob/trunk/vm_core.h#L1629
 
 void rb_vm_rewrite_cref(rb_cref_t *node, VALUE old_klass, VALUE new_klass, rb_cref_t **new_cref_ptr);
 
-const rb_callable_method_entry_t *rb_vm_frame_method_entry(const rb_control_frame_t *cfp);
+MJIT_STATIC const rb_callable_method_entry_t *rb_vm_frame_method_entry(const rb_control_frame_t *cfp);
 
 #define sysstack_error GET_VM()->special_exceptions[ruby_error_sysstack]
 
Index: mjit.h
===================================================================
--- mjit.h	(revision 64940)
+++ mjit.h	(revision 64941)
@@ -11,18 +11,6 @@ https://github.com/ruby/ruby/blob/trunk/mjit.h#L11
 
 #include "ruby.h"
 
-/* On mswin, MJIT header transformation can't be used since cl.exe can't output
-   preprocessed output preserving macros. So this `MJIT_STATIC` is needed
-   to force non-static function to static on MJIT header to avoid symbol conflict.
-   `MJIT_FUNC_EXPORTED` is also changed to `static` on MJIT header for the same reason. */
-#ifdef MJIT_HEADER
-# define MJIT_STATIC static
-# undef MJIT_FUNC_EXPORTED
-# define MJIT_FUNC_EXPORTED static
-#else
-# define MJIT_STATIC
-#endif
-
 /* Special address values of a function generated from the
    corresponding iseq by MJIT: */
 enum rb_mjit_iseq_func {
Index: internal.h
===================================================================
--- internal.h	(revision 64940)
+++ internal.h	(revision 64941)
@@ -1914,11 +1914,11 @@ void rb_vm_inc_const_missing_count(void) https://github.com/ruby/ruby/blob/trunk/internal.h#L1914
 const void **rb_vm_get_insns_address_table(void);
 VALUE rb_source_location(int *pline);
 const char *rb_source_location_cstr(int *pline);
-void rb_vm_pop_cfunc_frame(void);
+MJIT_STATIC void rb_vm_pop_cfunc_frame(void);
 int rb_vm_add_root_module(ID id, VALUE module);
 void rb_vm_check_redefinition_by_prepend(VALUE klass);
 VALUE rb_yield_refine_block(VALUE refinement, VALUE refinements);
-VALUE ruby_vm_special_exception_copy(VALUE);
+MJIT_STATIC VALUE ruby_vm_special_exception_copy(VALUE);
 PUREFUNC(st_table *rb_vm_fstring_table(void));
 
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]