Skip to content
  • Eric Wong's avatar
    ec475ab3
    proc.c (rb_proc_alloc): inline and move to vm.c · ec475ab3
    Eric Wong authored
    * proc.c (rb_proc_alloc): inline and move to vm.c
      (rb_proc_wrap): new wrapper function used by rb_proc_alloc
      (proc_dup): simplify alloc + copy + wrap operation
      [ruby-core:64994]
    
    * vm.c (rb_proc_alloc): new inline function
      (rb_vm_make_proc): call rb_proc_alloc
    
    * vm_core.h: remove rb_proc_alloc, add rb_proc_wrap
    
    * benchmark/bm_vm2_newlambda.rb: short test to show difference
    
    First we allocate and populate an rb_proc_t struct inline to avoid
    unnecessary zeroing of the large struct.  Inlining speeds up callers as
    this takes many parameters to ensure correctness.  We then call the new
    rb_proc_wrap function to create the object.
    
    rb_proc_wrap - wraps a rb_proc_t pointer as a Ruby object, but
    we only use it inside rb_proc_alloc.  We must call this before
    the compiler may clobber VALUE parameters passed to rb_proc_alloc.
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47562 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    ec475ab3
    proc.c (rb_proc_alloc): inline and move to vm.c
    Eric Wong authored
    * proc.c (rb_proc_alloc): inline and move to vm.c
      (rb_proc_wrap): new wrapper function used by rb_proc_alloc
      (proc_dup): simplify alloc + copy + wrap operation
      [ruby-core:64994]
    
    * vm.c (rb_proc_alloc): new inline function
      (rb_vm_make_proc): call rb_proc_alloc
    
    * vm_core.h: remove rb_proc_alloc, add rb_proc_wrap
    
    * benchmark/bm_vm2_newlambda.rb: short test to show difference
    
    First we allocate and populate an rb_proc_t struct inline to avoid
    unnecessary zeroing of the large struct.  Inlining speeds up callers as
    this takes many parameters to ensure correctness.  We then call the new
    rb_proc_wrap function to create the object.
    
    rb_proc_wrap - wraps a rb_proc_t pointer as a Ruby object, but
    we only use it inside rb_proc_alloc.  We must call this before
    the compiler may clobber VALUE parameters passed to rb_proc_alloc.
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47562 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Loading