[#64517] Fw: Re: Ruby and Rails to become Apache Incubator Project — Tetsuya Kitahata <kitahata@99.alumni.u-tokyo.ac.jp>

What do you think? >> Ruby developers

13 messages 2014/08/23

[#64615] [ruby-trunk - Feature #10181] [Open] New method File.openat() — oss-ruby-lang@...

Issue #10181 has been reported by Technorama Ltd..

10 messages 2014/08/28
[#64616] Re: [ruby-trunk - Feature #10181] [Open] New method File.openat() — Eric Wong <normalperson@...> 2014/08/28

I like this feature.

[#64671] Fwd: [ruby-changes:35240] normal:r47322 (trunk): symbol.c (rb_sym2id): do not return garbage object — SASADA Koichi <ko1@...>

Why this fix solve your problem?

9 messages 2014/08/30
[#64672] Re: Fwd: [ruby-changes:35240] normal:r47322 (trunk): symbol.c (rb_sym2id): do not return garbage object — SASADA Koichi <ko1@...> 2014/08/30

(2014/08/30 8:50), SASADA Koichi wrote:

[ruby-core:64224] [ruby-trunk - Feature #10038] [Assigned] Extend ObjectSpace.dump to expose buffer addresses for String and Array

From: shibata.hiroshi@...
Date: 2014-08-06 04:10:47 UTC
List: ruby-core #64224
Issue #10038 has been updated by Hiroshi SHIBATA.

Status changed from Open to Assigned

----------------------------------------
Feature #10038: Extend ObjectSpace.dump to expose buffer addresses for String and Array
https://bugs.ruby-lang.org/issues/10038#change-48218

* Author: Koichi Sasada
* Status: Assigned
* Priority: Normal
* Assignee: Aman Gupta
* Category: ext
* Target version: current: 2.2.0
----------------------------------------
ObjectSpace.dump() expose internal information in JSON.
How about to expose buffer addresses for String and Array?

```diff
Index: ext/objspace/objspace_dump.c
===================================================================
--- ext/objspace/objspace_dump.c	(revision 46821)
+++ ext/objspace/objspace_dump.c	(working copy)
@@ -178,12 +178,16 @@ dump_object(VALUE obj, struct dump_confi
 	    dump_append(dc, ", \"broken\":true");
 	if (FL_TEST(obj, RSTRING_FSTR))
 	    dump_append(dc, ", \"fstring\":true");
-	if (STR_SHARED_P(obj))
+
+	if (STR_SHARED_P(obj)) {
 	    dump_append(dc, ", \"shared\":true");
+	}
 	else {
 	    dump_append(dc, ", \"bytesize\":%ld", RSTRING_LEN(obj));
-	    if (!STR_EMBED_P(obj) && !STR_SHARED_P(obj) && (long)rb_str_capacity(obj) != RSTRING_LEN(obj))
+	    if (!STR_EMBED_P(obj) && !STR_SHARED_P(obj) && (long)rb_str_capacity(obj) != RSTRING_LEN(obj)) {
 		dump_append(dc, ", \"capacity\":%ld", rb_str_capacity(obj));
+		dump_append(dc, ", \"ptr\":\"%p\"", RSTRING_PTR(obj));
+	    }
 
 	    if (is_ascii_string(obj)) {
 		dump_append(dc, ", \"value\":");
@@ -205,8 +209,14 @@ dump_object(VALUE obj, struct dump_confi
 	dump_append(dc, ", \"length\":%ld", RARRAY_LEN(obj));
 	if (RARRAY_LEN(obj) > 0 && FL_TEST(obj, ELTS_SHARED))
 	    dump_append(dc, ", \"shared\":true");
-	if (RARRAY_LEN(obj) > 0 && FL_TEST(obj, RARRAY_EMBED_FLAG))
+	if (RARRAY_LEN(obj) > 0) {
+	    if (FL_TEST(obj, RARRAY_EMBED_FLAG)) {
 	    dump_append(dc, ", \"embedded\":true");
+	    }
+	    else {
+		dump_append(dc, ", \"ptr\":\"%p\"", RARRAY_PTR(obj));
+	    }
+	}
 	break;
 
       case T_CLASS:
```

With this hack, we can know the real memory address of them and cooperate with other native tools.

BTW, ObjectSpace.dump() should support T_SYMBOL.




-- 
https://bugs.ruby-lang.org/

In This Thread

Prev Next