Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Commits on Jun 11, 2012
  1. @ko1

    * vm_core.h: remove lfp (local frame pointer) and rename

    ko1 authored
      dfp (dynamic frame pointer) to ep (environment pointer).
      This change make VM `normal' (similar to other interpreters).
      Before this commit:
      Each frame has two env pointers lfp and dfp.  lfp points
      local environment which is method/class/toplevel frame.
      lfp[0] is block pointer.
      dfp is block local frame. dfp[0] points previous (parent)
      environment pointer.
      lfp == dfp when frame is method/class/toplevel.
      You can get lfp from dfp by traversing previous environment
      pointers.
      After this commit:
      Each frame has only `ep' to point respective enviornoment.
      If there is parent environment, then ep[0] points parent
      envioenment (as dfp).  If there are no more environment,
      then ep[0] points block pointer (as lfp).  We call such ep
      as `LEP' (local EP).  We add some macros to get LEP and to
      detect LEP or not.
      In short, we replace dfp and lfp with ep and LEP.
      rb_block_t and rb_binding_t member `lfp' and `dfp' are removed
      and member `ep' is added.
      rename rb_thread_t's member `local_lfp' and `local_svar' to
      `root_lep' and `root_svar'.
      (VM_EP_PREV_EP(ep)): get previous environment pointer.  This macro
      assume that ep is not LEP.
      (VM_EP_BLOCK_PTR(ep)): get block pointer.  This macro assume
      that ep is LEP.
      (VM_EP_LEP_P(ep)): detect ep is LEP or not.
      (VM_ENVVAL_BLOCK_PTR(ptr)): make block pointer.
      (VM_ENVVAL_BLOCK_PTR_P(v)): detect v is block pointer.
      (VM_ENVVAL_PREV_EP_PTR(ptr)): make prev environment pointer.
      (VM_ENVVAL_PREV_EP_PTR_P(v)): detect v is prev env pointer.
    * vm.c: apply above changes.
      (VM_EP_LEP(ep)): get LEP.
      (VM_CF_LEP(cfp)): get LEP of cfp->ep.
      (VM_CF_PREV_EP(cfp)): utility function VM_EP_PREV_EP(cfp->ep).
      (VM_CF_BLOCK_PTR(cfp)): utility function VM_EP_BLOCK_PTR(cfp->ep).
    * vm.c, vm_eval.c, vm_insnhelper.c, vm_insnhelper.h, insns.def:
      apply above changes.
    * cont.c: ditto.
    * eval.c, eval_intern.h: ditto.
    * proc.c: ditto.
    * thread.c: ditto.
    * vm_dump.c: ditto.
    * vm_exec.h: fix function name (on vm debug mode).
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36030 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Jun 4, 2012
  1. @ko1

    * vm_insnhelper.h: remove magical code "lfp[0] & 0x02".

    ko1 authored
      Current VM doesn't use this bit.
    * vm_core.h (RUBY_VM_GET_BLOCK_PTR): added.
    * eval.c (rb_block_given_p): use RUBY_VM_GET_BLOCK_PTR().
    * vm_eval.c (rb_f_block_given_p): ditto.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35908 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Oct 6, 2011
  1. @znz

    fix typos

    znz authored
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33421 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  2. @nobu

    * vm_eval.c (make_no_method_execption): extract from

    nobu authored
      raise_method_missing().
    * vm_eval.c (send_internal): remove inadvertent symbol creation
      from public_send.  based on a patch by Jeremy Evans <code AT
      jeremyevans.net> in [ruby-core:38576]. [Feature #5112]
    * vm_insnhelper.c (vm_call_method): remove inadvertent symbol
      creation from send and __send__, too.
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33419 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Aug 24, 2011
  1. @ko1

    * vm_insnhelper.h, vm_insnhelper.c, vm.c, vm_method.c, insns.def:

    ko1 authored
      Manage a redefinition of special methods for each classes.
      A patch from Joel Gouly <joel.gouly@gmail.com>.  Thanks!
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33059 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Jun 13, 2011
  1. @ko1

    * vm_core.h, vm_insnhelper.h: move decl. of

    ko1 authored
      ruby_vm_global_state_version and related macros
      from vm_core.h to vm_insnhelper.h.
    * vm.c (vm_clear_all_cache): added.  This function is called
      when ruby_vm_global_state_version overflows.
      TODO: vm_clear_all_inline_method_cache() is only place holder.
      We need to implement it ASAP.
    * vm_method.c (vm_clear_global_method_cache): added.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32056 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Mar 30, 2011
  1. @shugo

    * vm_insnhelper.h (COPY_CREF): should copy

    shugo authored
      the NODE_FL_CREF_PUSHED_BY_EVAL flag to hide constants from
      methods defined by class_eval.  [ruby-dev:43365]
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31215 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Jan 24, 2011
  1. @akr

    * vm_insnhelper.h: parenthesize macro arguments.

    akr authored
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30644 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Jan 11, 2010
  1. @wanabe

    * vm_insnhelper.h (GET_BLOCK_PTR): return 0 when in class frame.

    wanabe authored
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26283 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Sep 6, 2009
  1. @ko1

    * insns.def (opt_*): add IC operands.

    ko1 authored
    * vm_insnhelper.h (CALL_SIMPLE_METHOD): add a version which
      use an inline cache.  USE_IC_FOR_SPECIALIZED_METHOD macro
      switchs the behaviour.  This change also removes
      CALL_SIMPLE_METHOD_IC() macro.
    * tool/instruction.rb: fix elimination process to ignore
      variable "ic".
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24778 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  2. @ko1

    * vm_insnhelper.h (CALL_SIMPLE_METHOD_IC): make a macro

    ko1 authored
      invoke simple method with inline cache entry.
    * insns.def (opt_length, opt_size): fix to use inline method cache.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24771 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  3. @ko1

    * compile.c (iseq_specialized_instruction), insns.def (opt_size):

    ko1 authored
      optimize #size methods (by specialized instruction).
    * id.c, id.h, vm.c, vm_insnhelper.h: ditto.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24769 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Aug 28, 2009
  1. @nobu

    * vm_core.h ({GET,INC}_VM_STATE_VERSION): moved from vm_insnhelper.h.

    nobu authored
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24690 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Aug 12, 2009
  1. @ko1

    * insns.def, vm.c, vm_insnhelper.c, vm_insnhelper.h: check

    ko1 authored
      definition of (classes)#=== for case/when optimization.
      Fix Bug #1376 [ruby-core:23190].
    * string.c (Init_String), bignum.c (Init_Bignum),
      numeric.c (Init_Numeric): define String#===, Symbol#===,
      Bignum#===, Fixnum#===, Float#=== as same as (classes)#==.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24511 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Aug 10, 2009
  1. @authorNari

    * gc.c: reject unused longlife gc.

    authorNari authored
    * debug.c: ditto.
    
    * include/ruby/intern.h: ditto.
    
    * include/ruby/ruby.h: ditto.
    
    * iseq.c: ditto.
    
    * node.h: ditto.
    
    * vm_insnhelper.c: ditto.
    
    * vm_insnhelper.h: ditto.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24490 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Jul 16, 2009
  1. @ko1

    * node.h, vm_core.h, variable.c: rename global_entry to rb_global_entry.

    ko1 authored
    * compile.c, insns.def, iseq.c, vm_insnhelper.h: ditto.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24135 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Jul 15, 2009
  1. @ko1

    * method.h, vm_core.h: add rb_method_entry_t. Remove nodes around

    ko1 authored
      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
Commits on Jul 13, 2009
  1. @ko1

    * insns.def, vm_insnhelper.c (getinstancevariable):

    ko1 authored
      fix to use inline cache.
    * compile.c: fix to skip inline cache entry (IC).  IC is added
      automatically by compiler.
    * insns.def, vm_insnhelper.h: fix IC positions.
    * iseq.c: increment minor_version of ISeq because of above change.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24067 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on May 16, 2009
  1. @authorNari

    * iseq.c (rb_iseq_clone): use longlife object and insert write barrier.

    authorNari authored
    * vm_insnhelper.c (vm_cref_push): ditto.
    
    * vm_insnhelper.h (COPY_CREF): insert write barrier.
    			
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23441 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Jan 15, 2009
  1. @ko1

    * vm.c (rb_vm_inc_const_missing_count, ruby_vm_const_missing_count):

    ko1 authored
      added.
    * vm_insnhelper.h: ditto.
    * variable.c (rb_const_get_0), insns.def: Constants should not be
      cached if const_missing is called.  [ruby-core:21059] [Bug #967]
    * bootstraptest/test_class.rb: add a test.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21536 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Dec 24, 2008
  1. @ko1

    * vm_insnhelper.c (vm_call_method): use class of method defined

    ko1 authored
      instead of receiver's class on bmethod.  fixes [ruby-core:20786]
    * bootstraptest/test_method.rb: add a test for above.
    * vm_insnhelper.c (vm_setup_method): remove unused parameter klass.
    * vm_insnhelper.h (CALL_METHOD): ditto.
    * insns.def, vm_eval.c: ditto.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20967 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Dec 9, 2008
  1. @nobu

    * cont.c (fiber_status), template/insns.inc.tmpl (ruby_vminsn_type),

    nobu authored
      vm_insnhelper.h (BOP): ISO C forbids comma at end of enumerator
      list.
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20591 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Oct 12, 2008
  1. @ko1

    * vm.c, vm_insnhelper.h (ruby_vm_redefined_flag): apply optimization

    ko1 authored
      patch proposed by Paul Brannan.  [ruby-core:19171]
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19762 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Sep 28, 2008
  1. @ko1

    * vm_exec.c (vm_exec_core): add an UNLIKELY() hint.

    ko1 authored
    * vm_insnhelper.h (BASIC_OP_UNREDEFINED_P): add a LIKELY() hint.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19605 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Commits on Sep 23, 2008
  1. @ko1

    * common.mk: clean up

    ko1 authored
      - remove blockinlining.$(OBJEXT) to built
      - make ENCODING_H_INCLDUES variable (include/ruby/encoding.h)
      - make VM_CORE_H_INCLUDES variable (vm_core.h)
      - simplify rules.
      - make depends rule to output depend status using gcc -MM.
    * include/ruby/mvm.h, include/ruby/vm.h: rename mvm.h to vm.h.
    * include/ruby.h: ditto.
    * load.c: add inclusion explicitly.
    * enumerator.c, object.c, parse.y, thread.c, vm_dump.c:
      remove useless inclusion.
    * eval_intern.h: cleanup inclusion.
    * vm_core.h: rb_thread_t should be defined in this file.
    * vm_evalbody.c, vm_exec.c: rename vm_evalbody.c to vm_exec.c.
    * vm.h, vm_exec.h: rename vm.h to vm_exec.h.
    * insnhelper.h, vm_insnhelper.h: rename insnhelper.h to vm_insnhelper.h.
    * vm.c, vm_insnhelper.c, vm_insnhelper.h:
      - rename vm_eval() to vm_exec_core().
      - rename vm_eval_body() to vm_exec().
      - cleanup include order.
    * vm_method.c: fix comment.
    
    
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19466 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Something went wrong with that request. Please try again.