| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27729 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
added. Unlinked method entries are collected to
vm->unlinked_method_entry_list. On the GC timing, mark all method
entries which are on all living threads. Only non-marked method
entries are collected. This hack prevents releasing living method
entry.
[Performance Consideration] Since this Method Entry GC (MEGC)
doesn't occuer frequently, MEGC will not be a performance bottleneck.
However, to traverse living method entries, every control frame push
needs to clear cfp->me field. This will be a performance issue
(because pushing control frame is occurred frequently).
Bug #2777 [ruby-dev:40457]
* cont.c (fiber_init): init cfp->me.
* gc.c (garbage_collect): kick rb_sweep_method_entry().
* method.h (rb_method_entry_t): add a mark field.
* vm.c (invoke_block_from_c): set passed me.
* vm.c (rb_thread_mark): mark cfp->me.
* vm_core.h (rb_thread_t): add a field passed_me.
* vm_core.h (rb_vm_t): add a field unlinked_method_entry_list.
* vm_insnhelper.c (vm_push_frame): clear cfp->me at all times.
* vm_insnhelper.c (vm_call_bmethod): pass me.
* bootstraptest/test_method.rb: add a test.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27634 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
|
|
|
|
|
| |
rb_method_entry_t.
rb_add_method_me() -> rb_method_entry_set().
rb_get_method_entry() -> rb_method_entry_without_cache().
rb_gc_mark_method_entry() -> rb_mark_method_entry().
* class.c, proc.c: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27620 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
| |
rb_method_definition_t to prevent memory leak. see
[ruby-dev:41021].
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27421 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
|
|
| |
of methods. This is because cfp->me uses the rb_method_entry
which is freed by redefinition of remove_method. Note that
reusing may cause another problem when the usage is changed.
[ruby-core:27320] [ruby-core:29464]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27393 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
| |
a patch from Masaya TARUI in [Bug #3108]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27281 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
| |
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27030 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[Feature #2084]
* NEWS: follow above.
* vm_method.c (rb_add_method): save attr's location.
* gc.c (mark_method_entry): mark attr's location.
* method.h (rb_method_definition_t): add member to save attr's location.
* vm_eval.c (vm_call0): follow above.
* vm_insnhelper.c (vm_call_method): ditto.
* vm_method.c (rb_method_definition_eq): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27016 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
|
|
| |
* vm_method.c (rb_add_method_cfunc): invalid initializer for C89
* compile.c (iseq_insns_unification): int might be smaller than int*
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26359 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
| |
source method. [ruby-dev:39760]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26255 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
| |
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25930 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
|
| |
1.instance_eval { undef to_s } causes SEGV before this fix.
* test/ruby/test_undef.rb: new tests for undef.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25831 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
|
|
| |
1.instance_eval { alias to_string to_s } causes SEGV before this
fix.
* test/ruby/test_alias.rb (test_special_const_alias): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25826 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
| |
always with two arguments. [ruby-core:26090]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25381 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
| |
based on the patch from Nikolai Lugovoi. [ruby-core:25949]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25274 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
#respond_to_missing? for not implemented methods.
[ruby-core:25909]
* vm_method.c (rb_method_boundp): returns exceptional value 2 for
not-implemented methods when called from #respond_to? (specifies
by new contant NOEX_RESPONDS).
* method.h (enum): new constant NOEX_RESPONDS added.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25234 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
| |
undef.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25206 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
| |
overwritten method was defined. [ruby-dev:39400]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25169 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
| |
not equal to null definition.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25148 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
| |
same definition. [ruby-dev:39397]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25147 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
| |
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25146 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
| |
b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
| |
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25115 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
| |
block/proc should be equal. [ruby-core:25755] [ruby-core:24791]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25107 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
| |
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25088 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
| |
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25087 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
| |
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25086 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
| |
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25085 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
|
|
|
| |
behavior for #respond_to?
* vm_method.c (basic_obj_respond_to): calls #respond_to_missing
method if overridden, to check responsiveness of methods
implemented by #method_missing.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25054 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
|
|
| |
thread.c, vm.c, vm_core.h, vm_dump.c, vm_eval.c,
vm_insnhelper.c, vm_method.c, template/insns_info.inc.tmpl,
tool/instruction.rb: fixed types.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25030 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
| |
method.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24883 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
| |
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24873 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
| |
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24871 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
| |
undefined.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24870 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
| |
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24868 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
| |
hook after definition. [ruby-core:25536]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24867 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
|
|
| |
to deal aliases. [ruby-dev:39165]
* proc.c (struct METHOD): contains rb_method_entry_t copy.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24691 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
| |
* numeric.c (num_sadded): fix for non-ascii method name.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24684 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
| |
properly. [ruby-core:24789]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24421 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
|
|
| |
* vm_method.c (rb_add_method): avoid C++ comment
* vm_insnhelper.c (vm_call_cfunc): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24242 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
| |
[ruby-dev:38824]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24201 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
|
| |
* test/ruby/test_alias.rb: add a test.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24145 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
| |
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24134 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
method management. This change affect some VM control stack structure.
* vm.c, vm_insnhelper.c, vm_method.c, vm_eval.c: ditto. and make some
refactoring.
* insns.def, class.c, eval.c, proc.c, vm_dump.c : ditto.
* vm_core.h, compile.c (iseq_specialized_instruction): remove
VM_CALL_SEND_BIT. use another optimization tech for Kernel#send.
* node.h: remove unused node types.
* ext/objspace/objspace.c (count_nodes): ditto.
* gc.c: add mark/free functions for method entry.
* include/ruby/intern.h: remove decl of
rb_define_notimplement_method_id(). nobody can use it
because noex is not opend.
* iseq.c (iseq_mark): fix to check ic_method is available.
* iseq.c (rb_iseq_disasm): fix to use rb_method_get_iseq().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24128 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
|
| |
minor grammatical errors in warnings. a patch from Run Paint
Run Run at [ruby-core:24141].
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23958 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
| |
mark-object.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23957 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
| |
[ruby-dev:38498]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23491 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(NORMAL_HEAPS_USED): new macro.
(LONGLIFE_ALLOCATE_HEAPS_MIN): ditto.
(add_longlife_heaps_slot): new function.
(rb_newobj_from_longlife_heap): ditto.
(rb_newobj_longlife): ditto.
(rb_node_newnode_longlife): ditto.
(rb_gc_write_barrier): ditto.
(remembered_set_recycle): ditto.
(rb_gc_mark_remembered_set): ditto.
(clear_mark_longlife_heaps): ditto.
(gc_sweep_for_longlife): ditto.
(assign_heap_slot): new argumnent to longlife heaps slot.
(add_freelist): ditto.
(gc_sweep): avoid lonlife heap slot. set longlife_collection
flag at add heap.
(rb_gc_force_recycle): avoid mark object and remembered_set
object.
(garbage_collect): add longlife collection.
(rb_gc_start): invoke longlife collection.
(gc_profile_record_get): for longlife collction profile.
(gc_profile_result): ditto.
* include/ruby/intern.h (rb_gc_write_barrier): declared.
* include/ruby/ruby.h (FL_REMEMBERED_SET): renamed from FL_RESERVED.
* debug.c (FL_REMEMBERED_SET): ditto.
* insns.def (setinlinecache): insert write barrier.
* vm_insnhelper.c (vm_method_search): ditto.
* set_relation (set_relation): use longlife object.
* vm.c (vm_define_method): ditto.
* vm_core.h (NEW_INLINE_CACHE_ENTRY): ditto.
* vm_method.c (rb_add_method): ditto.
* class.c (rb_add_method): ditto.
* node.h (NEW_NODE_LONGLIFE): new macro.
(rb_node_newnode_longlife): declared.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23421 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
| |
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23253 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* vm_method.c (Init_eval_method): suppress a warning.
* io.c (rb_io_fsync): use rb_f_notimplement if not implemented.
(rb_io_close_on_exec_p): ditto.
(rb_io_set_close_on_exec): ditto.
(rb_io_fcntl): ditto.
(rb_f_syscall): ditto.
* dir.c (dir_tell): ditto.
(dir_seek): ditto.
(dir_s_chroot): ditto.
* process.c (proc_getpgrp): ditto.
(proc_setpgrp): ditto.
(proc_getpgid): ditto.
(proc_setpgid): ditto.
(proc_setsid): ditto.
(proc_getpriority): ditto.
(proc_setpriority): ditto.
(proc_getrlimit): ditto.
(proc_setrlimit): ditto.
(p_sys_setuid): ditto.
(p_sys_setruid): ditto.
(p_sys_seteuid): ditto.
(p_sys_setreuid): ditto.
(p_sys_setresuid): ditto.
(p_sys_setgid): ditto.
(p_sys_setrgid): ditto.
(p_sys_setegid): ditto.
(p_sys_setregid): ditto.
(p_sys_setreuid): ditto.
(p_sys_setresgid): ditto.
(p_sys_issetugid): ditto.
(proc_getgroups): ditto.
(proc_setgroups): ditto.
(proc_initgroups): ditto.
(proc_daemon): ditto.
(rb_proc_times): ditto.
* file.c (rb_file_s_lchown): ditto.
(rb_file_s_link): ditto.
(rb_file_s_symlink): ditto.
(rb_file_s_readlink): ditto.
(rb_file_s_truncate): ditto.
(rb_file_truncate): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23197 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|