Project

General

Profile

« Previous | Next » 

Revision 28a1c4f3

Added by tarui (Masaya Tarui) over 10 years ago

  • cont.c : Introdule ensure rollback mechanism. Please see below.

      * internal.h (ruby_register_rollback_func_for_ensure): catch up above change.
        Add rollback mechanism API.
    
      * vm_core.h (typedef struct rb_vm_struct): catch up above change.
        Introdule ensure-rollback relation table.
    
      * vm_core.h (typedef struct rb_thread_struct): catch up above change.
        Introdule ensure stack.
    
      * eval.c (rb_ensure): catch up above change.
        Introdule ensure stack.
    
      * hash.c : New function for rollback ensure, and register it to
        ensure-rollback relation table. [ruby-dev:47803] [Bug #9105]
    
      Ensure Rollback Mechanism:
      A rollback's function is a function to rollback a state before ensure's
      function execution.
      When the jump of callcc is across the scope of rb_ensure,
      ensure's functions and rollback's functions are executed appropriately
      for keeping consistency.
    
      Current API is unstable, and only internal use.
    
      ruby_register_rollback_func_for_ensure(ensure_func,rollback_func)
      This API create relation ensure's function to rollback's function.
      By registered rollback's function, it is executed When jumpping into
      corresponding rb_ensure scope.
    

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