heap_dump 0.0.19 → 0.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Rakefile CHANGED
@@ -17,8 +17,22 @@ task :test => :compile do
17
17
  aaa
18
18
  end
19
19
 
20
+ class Fiber
21
+ def [](key)
22
+ local_fiber_variables[key]
23
+ end
24
+ def []=(key,value)
25
+ local_fiber_variables[key] = value
26
+ end
27
+ private
28
+ def local_fiber_variables
29
+ @local_fiber_variables ||= {}
30
+ end
31
+ end
32
+ require 'fiber'
20
33
  Fiber.new{
21
34
  fiber_var = :some_fiber_var
35
+ Fiber.current[:some_fiber_ivar] = :ivar_cool_value
22
36
  some_meth
23
37
  Fiber.yield e
24
38
  fiber_var = :some_fiber_var3
@@ -903,7 +903,27 @@ static inline void walk_live_object(VALUE obj, walk_ctx_t *ctx){
903
903
  //RVALUE etc. has file/line info in this case
904
904
  #endif
905
905
 
906
- switch(BUILTIN_TYPE(obj)){ // no need to call TYPE(), as value is on heap
906
+ yg_cstring("class");
907
+ yg_id(rb_class_of(obj));
908
+
909
+ //ivars for !(obj|class|module):
910
+ // if (FL_TEST(obj, FL_EXIVAR) || rb_special_const_p(obj))
911
+ // return generic_ivar_get(obj, id, warn);
912
+
913
+ const int bt_type = BUILTIN_TYPE(obj);
914
+
915
+ // for generic types ivars are held separately in a table
916
+ if(bt_type != T_OBJECT && bt_type != T_CLASS && bt_type != T_MODULE && bt_type != T_ICLASS){
917
+ st_table* generic_tbl = rb_generic_ivar_table(obj);
918
+ if(generic_tbl){
919
+ yg_cstring("generic_ivars");
920
+ yg_map();
921
+ st_foreach(generic_tbl, dump_iv_entry, (st_data_t)ctx);
922
+ yg_map_end();
923
+ }
924
+ }
925
+
926
+ switch(bt_type){ // no need to call TYPE(), as value is on heap
907
927
  case T_NODE:
908
928
  dump_node(RNODE(obj), ctx);
909
929
  break;
@@ -947,8 +967,10 @@ static inline void walk_live_object(VALUE obj, walk_ctx_t *ctx){
947
967
  break;
948
968
 
949
969
  case T_OBJECT:
950
- yg_cstring("class");
951
- yg_id(rb_class_of(obj));
970
+ //yg_cstring("class");
971
+ //yg_id(rb_class_of(obj));
972
+
973
+
952
974
  // yg_cstring("refs"); //ivars
953
975
  // yajl_gen_array_open(ctx->yajl);
954
976
  // {
@@ -1,3 +1,3 @@
1
1
  module HeapDump
2
- VERSION = "0.0.19"
2
+ VERSION = "0.0.20"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heap_dump
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.19
4
+ version: 0.0.20
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-06-12 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ruby-internal
16
- requirement: &70355842922720 !ruby/object:Gem::Requirement
16
+ requirement: &70260603589660 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.8.5
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70355842922720
24
+ version_requirements: *70260603589660
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: yajl-ruby
27
- requirement: &70355842921720 !ruby/object:Gem::Requirement
27
+ requirement: &70260603587520 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '1.1'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70355842921720
35
+ version_requirements: *70260603587520
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake-compiler
38
- requirement: &70355842920780 !ruby/object:Gem::Requirement
38
+ requirement: &70260603586460 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70355842920780
46
+ version_requirements: *70260603586460
47
47
  description: dump ruby 1.9 heap contents
48
48
  email:
49
49
  - vasilyfedoseyev@gmail.com