diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-09-24 08:36:53 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-09-24 08:36:53 +0000 |
commit | 2314b80d4c5ed712308f6b32aa8bf865d8d9ffff (patch) | |
tree | 8a531352ebd8b352e6c1b5cadeeb7d49d28da147 /vm.c | |
parent | 8ac52a95d577d00ed7b783fde8bca5b2b76cb404 (diff) | |
download | ruby-2314b80d4c5ed712308f6b32aa8bf865d8d9ffff.tar.gz |
Feature #7035
* compile.c (defined_expr), insns.def (defined): share single frozen
strings. [EXPERIMENTAL] [ruby-core:47558][Feature #7035]
* iseq.c (rb_iseq_defined_string): make expression strings.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37025 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm.c')
-rw-r--r-- | vm.c | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -1515,6 +1515,9 @@ rb_vm_mark(void *ptr) if (vm->trap_list[i].cmd) rb_gc_mark(vm->trap_list[i].cmd); } + if (vm->defined_strings) { + rb_gc_mark_locations(vm->defined_strings, vm->defined_strings + DEFINED_EXPR); + } } RUBY_MARK_LEAVE("vm"); @@ -1560,7 +1563,12 @@ vm_memsize(const void *ptr) { if (ptr) { const rb_vm_t *vmobj = ptr; - return sizeof(rb_vm_t) + st_memsize(vmobj->living_threads); + size_t size = sizeof(rb_vm_t); + size += st_memsize(vmobj->living_threads); + if (vmobj->defined_strings) { + size += DEFINED_EXPR * sizeof(VALUE); + } + return size; } else { return 0; |