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

ruby-changes:59161

From: Yusuke <ko1@a...>
Date: Tue, 10 Dec 2019 19:41:22 +0900 (JST)
Subject: [ruby-changes:59161] 60c53ff6ee (master): vm_core.h (iseq_unique_id): prefer uintptr_t instead of unsigned long

https://git.ruby-lang.org/ruby.git/commit/?id=60c53ff6ee

From 60c53ff6ee1eed054fc3d78ad6c06cbfc56900d6 Mon Sep 17 00:00:00 2001
From: Yusuke Endoh <mame@r...>
Date: Tue, 10 Dec 2019 17:10:23 +0900
Subject: vm_core.h (iseq_unique_id): prefer uintptr_t instead of unsigned long

It produced a warning about type cast in LLP64 (i.e., windows).

diff --git a/iseq.c b/iseq.c
index 4298130..f5f8437 100644
--- a/iseq.c
+++ b/iseq.c
@@ -427,7 +427,7 @@ rb_iseq_memsize(const rb_iseq_t *iseq) https://github.com/ruby/ruby/blob/trunk/iseq.c#L427
     return size;
 }
 
-static unsigned long fresh_iseq_unique_id = 0; /* -- Remove In 3.0 -- */
+static uintptr_t fresh_iseq_unique_id = 0; /* -- Remove In 3.0 -- */
 
 struct rb_iseq_constant_body *
 rb_iseq_constant_body_alloc(void)
diff --git a/vm_args.c b/vm_args.c
index c6c1118..6c105f0 100644
--- a/vm_args.c
+++ b/vm_args.c
@@ -597,38 +597,38 @@ static VALUE rb_warn_check(const rb_execution_context_t * const ec, const rb_ise https://github.com/ruby/ruby/blob/trunk/vm_args.c#L597
 {
     if (!iseq) return 0;
 
-    const void *const callee = (void *)(iseq->body->iseq_unique_id * 2);
+    const st_data_t callee = (st_data_t)(iseq->body->iseq_unique_id * 2);
 
     const rb_control_frame_t * const cfp = rb_vm_get_ruby_level_next_cfp(ec, ec->cfp);
 
     if (!cfp) return 0;
 
-    const void *const caller = cfp->pc;
+    const st_data_t caller = (st_data_t)cfp->pc;
 
     if (!caller_to_callees) {
         caller_to_callees = st_init_numtable();
     }
 
     st_data_t val;
-    if (st_lookup(caller_to_callees, (st_data_t) caller, &val)) {
+    if (st_lookup(caller_to_callees, caller, &val)) {
         st_table *callees;
 
         if (val & 1) {
             val &= ~(st_data_t)1;
-            if (val == (st_data_t) callee) return 1; /* already warned */
+            if (val == callee) return 1; /* already warned */
 
             callees = st_init_numtable();
             st_insert(callees, val, 1);
         }
         else {
             callees = (st_table *) val;
-            if (st_is_member(callees, (st_data_t) callee)) return 1; /* already warned */
+            if (st_is_member(callees, callee)) return 1; /* already warned */
         }
-        st_insert(callees, (st_data_t) callee, 1);
-        st_insert(caller_to_callees, (st_data_t) caller, (st_data_t) callees);
+        st_insert(callees, callee, 1);
+        st_insert(caller_to_callees, caller, (st_data_t) callees);
     }
     else {
-        st_insert(caller_to_callees, (st_data_t) caller, ((st_data_t) callee) | 1);
+        st_insert(caller_to_callees, caller, callee | 1);
     }
 
     return 0; /* not warned yet for the pair of caller and callee */
diff --git a/vm_core.h b/vm_core.h
index 4b1b9e4..365f6fb 100644
--- a/vm_core.h
+++ b/vm_core.h
@@ -448,7 +448,7 @@ struct rb_iseq_constant_body { https://github.com/ruby/ruby/blob/trunk/vm_core.h#L448
     struct rb_mjit_unit *jit_unit;
 #endif
 
-    unsigned long iseq_unique_id; /* -- Remove In 3.0 -- */
+    uintptr_t iseq_unique_id; /* -- Remove In 3.0 -- */
 };
 
 /* T_IMEMO/iseq */
-- 
cgit v0.10.2


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

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