Project

General

Profile

« Previous | Next » 

Revision 478003f6

Added by ko1 (Koichi Sasada) over 8 years ago

rename absolute_path to realpath internally and introduce pathobj.

  • vm_core.h: rename absolute_path to realpath because it is expected name.
    external APIs (#absolute_path methods) are remained.

  • vm_core.h: remove rb_iseq_location_struct::path and
    rb_iseq_location_struct::absolute_path and introduce pathobj.
    if given path equals to given absolute_path (and most of case
    it is true), pathobj is simply given path String. If it is not same,
    pathobj is Array and pathobj[0] is path and pathobj[1] is realpath.

    This size optimization reduce 8 bytes and
    sizeof(struct rb_iseq_constant_body) is 200 bytes -> 192 bytes
    on 64bit CPU.

    To support this change, the following functions are introduced:

    • pathobj_path() (defined in vm_core.h)
    • pathobj_realpath() (ditto)
    • rb_iseq_path() (decl. in vm_core.h)
    • rb_iseq_realpath() (ditto)
    • rb_iseq_pathobj_new() (ditto)
    • rb_iseq_pathobj_set() (ditto)
  • vm_core.h (rb_binding_t): use pathobj instead of path. If binding
    is given at eval methods, realpath (absolute_path) was caller's
    realpath. However, they should use binding's realpath.

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