From 050dd10d6f8933268ed0fd211eb5bcc8ad49f678 Mon Sep 17 00:00:00 2001 From: ko1 Date: Mon, 27 May 2013 10:01:45 +0000 Subject: * ext/objspace/objspace.c: support ObjectSpace.trace_object_allocations. Read the following test to know HOWTO. This feature is a sample of RUBY_INTERNAL_EVENT. * test/objspace/test_objspace.rb: add a test. * ext/objspace/object_tracing.c: ditto. * gc.c (rb_gc_count): add. THis function returns GC count. * internal.h: add decl. of rb_gc_count(). Same as `GC.count'. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40957 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/objspace/test_objspace.rb | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'test/objspace') diff --git a/test/objspace/test_objspace.rb b/test/objspace/test_objspace.rb index 8a8d7ce8ea..11e69bd7e8 100644 --- a/test/objspace/test_objspace.rb +++ b/test/objspace/test_objspace.rb @@ -108,4 +108,22 @@ class TestObjSpace < Test::Unit::TestCase } eom end + + def test_traceobject + o0 = Object.new + ObjectSpace.trace_object_allocations{ + o1 = Object.new; line1 = __LINE__ + o2 = "a"+"b" ; line2 = __LINE__ + o3 = [1, 2] ; line3 = __LINE__ + + assert_equal(nil, ObjectSpace.allocation_sourcefile(o0)) + assert_equal(nil, ObjectSpace.allocation_sourceline(o0)) + assert_equal(__FILE__, ObjectSpace.allocation_sourcefile(o1)) + assert_equal(line1, ObjectSpace.allocation_sourceline(o1)) + assert_equal(__FILE__, ObjectSpace.allocation_sourcefile(o2)) + assert_equal(line2, ObjectSpace.allocation_sourceline(o2)) + assert_equal(__FILE__, ObjectSpace.allocation_sourcefile(o3)) + assert_equal(line3, ObjectSpace.allocation_sourceline(o3)) + } + end end -- cgit v1.2.3