diff options
author | mame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-03-16 17:40:00 +0000 |
---|---|---|
committer | mame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-03-16 17:40:00 +0000 |
commit | 6ff75042db1a68a23a133667b3a97c9ec23c131e (patch) | |
tree | 71b655e989f973dc4f1e2e08a63aeeb776e75956 /vm_eval.c | |
parent | c4fdd64fe03cc5fd99cd6eee10df9b660b46167d (diff) |
* compile.c, iseq.c, ruby.c, vm.c, vm_core.h, vm_eval.c: add absolute
path field into rb_iseq_t. The field contains a string representing
a path to corresponding source file. or nil when the iseq is created
from -e, stdin, eval, etc. This field is used for require_relative.
[ruby-dev:40004]
* load.c (rb_f_require_relative): add C implementation of
require_relative.
* prelude.rb (require_relative): get rid of Ruby implementation of
require_relative.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26959 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_eval.c')
-rw-r--r-- | vm_eval.c | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -1709,6 +1709,16 @@ rb_f_block_given_p(void) } } +VALUE +rb_current_realfilepath(void) +{ + rb_thread_t *th = GET_THREAD(); + rb_control_frame_t *cfp = th->cfp; + cfp = vm_get_ruby_level_caller_cfp(th, RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp)); + if (cfp != 0) return cfp->iseq->filepath; + return Qnil; +} + void Init_vm_eval(void) { |