* ext/objspace/objspace.c: ObjectSpace.memsize_of(obj) returns
with sizeof(RVALUE). [Bug #8984] * gc.c (obj_memsize_of): ditto. * NEWS: add a NEWS entry. * test/objspace/test_objspace.rb: catch up this fix. * test/ruby/test_file_exhaustive.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48846 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
020fcc95fe
commit
85b42fe17b
13
ChangeLog
13
ChangeLog
@ -1,3 +1,16 @@
|
|||||||
|
Mon Dec 15 17:51:28 2014 Koichi Sasada <ko1@atdot.net>
|
||||||
|
|
||||||
|
* ext/objspace/objspace.c: ObjectSpace.memsize_of(obj) returns
|
||||||
|
with sizeof(RVALUE). [Bug #8984]
|
||||||
|
|
||||||
|
* gc.c (obj_memsize_of): ditto.
|
||||||
|
|
||||||
|
* NEWS: add a NEWS entry.
|
||||||
|
|
||||||
|
* test/objspace/test_objspace.rb: catch up this fix.
|
||||||
|
|
||||||
|
* test/ruby/test_file_exhaustive.rb: ditto.
|
||||||
|
|
||||||
Mon Dec 15 16:19:23 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Mon Dec 15 16:19:23 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* string.c (rb_enc_str_coderange): dummy wchar, non-endianness
|
* string.c (rb_enc_str_coderange): dummy wchar, non-endianness
|
||||||
|
4
NEWS
4
NEWS
@ -243,6 +243,10 @@ with all sufficient information, see the ChangeLog file.
|
|||||||
* Logger
|
* Logger
|
||||||
* Logger::Application is extracted to logger-application gem. It's unmaintain code.
|
* Logger::Application is extracted to logger-application gem. It's unmaintain code.
|
||||||
|
|
||||||
|
* ObjectSpace (after requiring "objspace")
|
||||||
|
* ObjectSpace.memsize_of(obj) returns a size includes sizeof(RVALUE).
|
||||||
|
[Bug #8984]
|
||||||
|
|
||||||
* Prime
|
* Prime
|
||||||
* incompatible changes:
|
* incompatible changes:
|
||||||
* Prime.prime? now returns false for negative numbers. This method
|
* Prime.prime? now returns false for negative numbers. This method
|
||||||
|
@ -30,6 +30,9 @@
|
|||||||
* correct.
|
* correct.
|
||||||
*
|
*
|
||||||
* This method is only expected to work with C Ruby.
|
* This method is only expected to work with C Ruby.
|
||||||
|
*
|
||||||
|
* From Ruby 2.2, memsize_of(obj) returns a memory size includes
|
||||||
|
* sizeof(RVALUE).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
|
2
gc.c
2
gc.c
@ -2941,7 +2941,7 @@ obj_memsize_of(VALUE obj, int use_all_types)
|
|||||||
BUILTIN_TYPE(obj), (void*)obj);
|
BUILTIN_TYPE(obj), (void*)obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
return size;
|
return size + sizeof(RVALUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t
|
size_t
|
||||||
|
@ -28,7 +28,8 @@ class TestObjSpace < Test::Unit::TestCase
|
|||||||
b = a.dup
|
b = a.dup
|
||||||
c = nil
|
c = nil
|
||||||
ObjectSpace.each_object(String) {|x| break c = x if x == a and x.frozen?}
|
ObjectSpace.each_object(String) {|x| break c = x if x == a and x.frozen?}
|
||||||
assert_equal([0, 0, 26], [a, b, c].map {|x| ObjectSpace.memsize_of(x)})
|
rv_size = GC::INTERNAL_CONSTANTS[:RVALUE_SIZE]
|
||||||
|
assert_equal([rv_size, rv_size, 26 + rv_size], [a, b, c].map {|x| ObjectSpace.memsize_of(x)})
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_argf_memsize
|
def test_argf_memsize
|
||||||
|
@ -461,9 +461,9 @@ class TestFileExhaustive < Test::Unit::TestCase
|
|||||||
bug9934 = '[ruby-core:63114] [Bug #9934]'
|
bug9934 = '[ruby-core:63114] [Bug #9934]'
|
||||||
require "objspace"
|
require "objspace"
|
||||||
path = File.expand_path("/foo")
|
path = File.expand_path("/foo")
|
||||||
assert_operator(ObjectSpace.memsize_of(path), :<=, path.bytesize, bug9934)
|
assert_operator(ObjectSpace.memsize_of(path), :<=, path.bytesize + GC::INTERNAL_CONSTANTS[:RVALUE_SIZE], bug9934)
|
||||||
path = File.expand_path("/a"*25)
|
path = File.expand_path("/a"*25)
|
||||||
assert_equal(path.bytesize+1, ObjectSpace.memsize_of(path), bug9934)
|
assert_equal(path.bytesize+1 + GC::INTERNAL_CONSTANTS[:RVALUE_SIZE], ObjectSpace.memsize_of(path), bug9934)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_expand_path_encoding
|
def test_expand_path_encoding
|
||||||
|
Loading…
x
Reference in New Issue
Block a user