Project

General

Profile

Feature #11599

Updated by nobu (Nobuyoshi Nakada) almost 6 years ago

Hi, 

 *This is my first c code contribution :)* 

 I am helping developing heap-analyzer (github.com/tenderlove/heap-analyzer), and currently the dumps lacks of "type metadata" information, like: 

 
 * Hash entries - the keys and value 
 * Array items - the items of the array 

 
 etc. 

 In the included patch, I have changed the dump of hash to add entries of hash. 
 For example, given the next hash: 

 ~~~ruby 
 ~~~ 
 hash = { 
     int_key: 1, 
     str_key: "This is my string", 
     inner_hash: { b: 2 } 
 } 
 ~~~ 

 The dump result (ObjectSpace.dump(hash)) will be: 

 ~~~json 
 ~~~ 
 { 
     "address": "0x007fbc01110340", 
     "type": "HASH", 
     "class": "0x007fbc0109b400", 
     "size": 3, 
     "entries": [ 
         { 
             "is_key_address": false, 
             "key": ":int_key", 
             "is_value_address": false, 
             "value": "1" 
         }, 
         { 
             "is_key_address": false, 
             "key": ":str_key", 
             "is_value_address": true, 
             "value": "0x007fbc01110390" 
         }, 
         { 
             "is_key_address": false, 
             "key": ":inner_hash", 
             "is_value_address": true, 
             "value": "0x007fbc01110368" 
         } 
     ], 
     "references": [ 
         "0x007fbc01110390", 
         "0x007fbc01110368" 
     ], 
     "memsize": 232, 
     "flags": { 
         "wb_protected": true 
     } 
 } 
 ~~~ 

 As you can see, I have the "entries" array, where each entry contains:    "is_key_address", "is_value_address" - if the key/value are special consts the inspected value will be printed in the "key"/"value" properties, other their address will be print.  


 Hope you will accept the patch (and I can submit another one for arrays), 
 Yosi. 

Back