Commit graph

153 commits

Author SHA1 Message Date
usa
3468cd1ed6 merge revision(s) 38739: [Backport #7671]
* vm_core.h (rb_iseq_t): move flip_cnt from struct iseq_compile_data,
	  because it has same life span as enclosing iseq.  [Bug #7671]
	  [ruby-core:51296]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@38781 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-11 08:13:17 +00:00
usa
398ed65c90 [Backport #7624]
* vm_trace.c (rb_threadptr_exec_event_hooks): added a parameter to pop
  a frame before JUMP_TAG() if exception occurred. This change fix bug
  of Ruby 1.9. [ruby-core:51128] [ruby-trunk - Bug #7624]

* vm_core.h (EXEC_EVENT_HOOK_AND_POP_FRAME): add to use
  `rb_threadptr_exec_event_hooks()' with the pop flag.

* vm.c (vm_exec): use EXEC_EVENT_HOOK_AND_POP_FRAME() while exception
  handling. While exception hadnling, if an exception is raised in
  hooks, need to pop current frame and raise this raised exception by
  hook.

* bootstraptest/test_flow.rb: add a test.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@38778 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-11 08:02:06 +00:00
usa
dfc112202d merge revision(s) 37604:
* ruby_atomic.h: renamed from atomic.h to avoid header file name
	  conflict on Solaris 10. [ruby-dev:46414] [Bug #7287]

	* gc.c, signal.c, vm_core.h, common.mk: reflect the rename from
	  atomic.h to ruby_atomic.h.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@37654 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-14 11:27:00 +00:00
naruse
54952586fd * proc.c (rb_vm_rewrite_dfp_in_errinfo): Fix `unexpected return'
occurs when a proc is called in ensure. [Backport #6460]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@36287 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-03 10:20:49 +00:00
marcandre
52a70d99c6 * vm_core.h: Fix comment about arg_opts of iseq and some typos
* doc/re.rdoc: Rdoc small fixes

* iseq.c: Fix comment

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@34158 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-30 05:56:53 +00:00
ktsj
e57aecbadd * vm.c (rb_vm_rewrite_dfp_in_errinfo): change return type
to suppress a warning.

* vm_core.h: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@33100 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-08-27 12:02:00 +00:00
ktsj
3bffb317d6 * backport r33096 from trunk.
* proc.c (proc_new): force to rewrite errinfo when calling Proc.new in ensure.
  [Bug #5234] [ruby-core:39125]

* vm.c (rb_vm_rewrite_dfp_in_errinfo): new function.

* vm.c (vm_make_env_each): changed accordingly.

* vm_core.h: ditto.

* bootstraptest/test_flow.rb: add tests for above.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@33098 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-08-27 10:14:29 +00:00
nobu
dea63e4ba2 * vm.c (ruby_threadptr_data_type): rename to hide.
[ruby-core:38972]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@32986 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-08-16 09:56:56 +00:00
kosaki
64270d3df2 merge revision(s) 32749:
* vm.c (th_init): preallocate alternative stack.
	  NoMemoryError is better than rb_bug, of course.
	  Patch by Eric Wong. [ruby-core:38572][ruby-core:38594].

	* signal.c (rb_register_sigaltstack): ditto.

	* vm_core.h: moved ALT_STACK_SIZE definition from signal.c.

	* vm.c (thread_free): use xfree() instead of free().


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@32750 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-30 01:58:21 +00:00
mame
43e8a7a3eb * backport r32669 from trunk.
* proc.c (struct METHOD), gc.c (gc_marks), vm_method.c
  (rb_gc_mark_unlinked_live_method_entries): fix SEGV bug.
  rb_method_entry_t was free'd even when the method is still on the
  stack if it is BMETHOD (i.e., Method#call).  This is because
  rb_method_entry_t is embedded in struct METHOD.  This commit
  separates them and marks the live method entries.
  See [ruby-core:38449] in detail.  fix [Bug #5047] [ruby-core:38171]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@32728 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-28 15:50:00 +00:00
kosaki
a119b9d146 * vm_core.h (typedef struct rb_vm_struct): create a new
'inhibit_thread_createion' field.
* thread.c (rb_thread_terminate_all): set inhibit_thread_creation.
* thread.c (thread_s_new): don't permit to create new thread
  if the VM is under destruction. Otherwise evil finalizer code
  can make SEGV. [Bug #4992][ruby-core:37858]

* bootstraptest/test_objectspace.rb: new test for this fix.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32492 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-10 07:46:00 +00:00
kosaki
8741274529 * thread.c (thread_unlock_all_locking_mutexes): rename to
rb_threadptr_unlock_all_locking_mutexes and remove static.
* vm_core.h: add rb_threadptr_unlock_all_locking_mutexes declaration.
* thread.c (thread_start_func_2): adjust the above rename.

* eval.c (ruby_cleanup): call rb_threadptr_unlock_all_locking_mutexes
  again after finalizer. [Bug #4988] [ruby-dev:44049]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32446 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-08 04:40:01 +00:00
ko1
fa4514e4fe * thread.c (rb_threadptr_check_signal): only wake up main thread.
* thread.c (rb_threadptr_execute_interrupts_common): check signal
  deliverly if it is main thread.
  fixes [ruby-dev:44005] [Ruby 1.9 - Bug #4950]
* bootstraptest/test_fork.rb: add a test for above.
* signal.c (rb_get_next_signal): skip if signal_buff is empty.
  (check signal_buff.size first)
* vm_core.h: remove unused variable rb_thread_t::exec_signal.
* thread.c (rb_thread_check_trap_pending): check
  rb_signal_buff_size() because rb_thread_t::exec_signal
  is no longer available.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32345 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-30 22:29:34 +00:00
ko1
d1d5d5e798 * thread_pthread.c: Stop polling in the timer thread when there are
no waiting thread.  If there are 2 or more runnable threads,
  the timer thread does polling.  Avoid polling makes power save
  for several computers (0.2W per a Ruby process, when I measured).
  If outside-event such as signal or Thread#kill was occuerred
  when the timer thread does not do polling, then wake-up
  the timer thread using communication-pipe (the timer thread
  waits this communication-pipe with select(2)).
  The discussion about this modification can be found from the post
  [ruby-core:33456] and other related posts.
  Note that Eric Wong and KOSAKI Motohiro give us the huge
  contributions for this modification.  Thanks.
* thread_pthread.c (rb_thread_wakeup_timer_thread): add a function.
  This function wakes up the timer thread using communication-pipe.
* thread.c (rb_thread_stop_timer_thread): add a parameter which
  specify closing communication-pipe or not.
* thread.c (rb_thread_terminate_all): do not stop timer thread here
  (ruby_cleanup() terminate timer thread).
* signal.c: wake up timer thread using
  rb_thread_wakeup_timer_thread() from signal handler.
* eval.c (ruby_cleanup): use rb_thread_stop_timer_thread(1).
* process.c: use rb_thread_stop_timer_thread(0)
  (reuse communication-pipe).
* thread_win32.c (rb_thread_wakeup_timer_thread): add a dummy
  function.
* vm_core.h: add and fix decl. of functions.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32244 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-27 00:30:41 +00:00
kosaki
ef86308a2c * vm.c, vm_core.h (rb_vm_stack_to_heap): remove const.
It makes compilations warnings.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32167 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-18 12:32:57 +00:00
ko1
4368104146 * vm.c, vm_core.h (rb_vm_stack_to_heap): fix "const" place.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32166 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-18 09:56:01 +00:00
akr
5ed8c08aa0 * eval.c, hash.c, load.c, proc.c, range.c, thread.c, time.c: don't
declare internal functions.

* internal.h, vm_core.h: declare internal functions.

* array.c: include internal.h.

* common.mk: update dependency for array.o.




git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32165 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-18 08:26:19 +00:00
akr
e7996eb3cc * internal.h: declare internal functions here.
* node.h: declare NODE dependent internal functions here.

* iseq.h: declare rb_iseq_t dependent internal functions here.

* vm_core.h: declare rb_thread_t dependent internal functions here.

* bignum.c, class.c, compile.c, complex.c, cont.c, dir.c, encoding.c,
  enumerator.c, error.c, eval.c, file.c, gc.c, hash.c, inits.c, io.c,
  iseq.c, load.c, marshal.c, math.c, numeric.c, object.c, parse.y,
  proc.c, process.c, range.c, rational.c, re.c, ruby.c, string.c,
  thread.c, time.c, transcode.c, variable.c, vm.c,
  tool/compile_prelude.rb: don't declare internal functions declared
  in above headers.  include above headers if required.

  Note that rb_thread_mark() was declared as
  void rb_thread_mark(rb_thread_t *th) in cont.c but defined as
  void rb_thread_mark(void *ptr) in vm.c.  Now it is declared as
  the later in internal.h.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32156 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-17 22:43:38 +00:00
kosaki
bcfc22b10e * thread_pthread.c: rewrite GVL completely.
* thread_win32.c: ditto.
* thread_pthread.h: ditto.
* vm_core.h: ditto.
* thread.c: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32064 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-13 14:14:53 +00:00
ko1
038ef3f05c * vm_core.h, vm_insnhelper.h: move decl. of
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
2011-06-13 11:25:44 +00:00
kosaki
f0041fa0fd * thread.c: remove th->transition_for_lock. It's thread unsafe.
[Bug #4723][ruby-dev:43563]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32022 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-12 06:58:15 +00:00
kosaki
9d4e471cf9 * vm_core.h (RUBY_VM_SET_TIMER_INTERRUPT, RUBY_VM_SET_INTERRUPT,
RUBY_VM_SET_FINALIZER_INTERRUPT): use atomic ops for preventing
  interrupt_flag bit lost.
* thread.c (rb_threadptr_execute_interrupts_rec): ditto.
* vm_core.h (typedef struct rb_thread_struct): change type of
  interrupt_flag to rb_atomic_t.
* atomic.h: move atomic ops definition from signal.c.
* signal.c: remove atomic ops definition.
* common.mk (gc, signal, thread, cont): add to dependency to atomic.h.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32014 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-11 14:27:08 +00:00
akr
87f025da25 * io.c: fix IO.copy_stream interrupt handling.
based on the patch by Eric Wong.  [ruby-core:36156]

* vm_core.h (rb_thread_call_with_gvl): don't declare here.

* thread.c: include internal.h.
  (rb_thread_execute_interrupts): new function.

* internal.h (rb_thread_execute_interrupts): declared.
  (rb_thread_call_with_gvl): declared.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31971 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-09 15:02:46 +00:00
kosaki
3041401404 * vm_core.h (rb_thread_struct): add volatile to
transition_for_lock because it is not protected by lock.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31609 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-17 11:22:50 +00:00
nobu
9d0fbe23b6 * vm_core.h (RUBY_VM_CHECK_INTS_TH): merge a patch by ko1
in [ruby-dev:43373].

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31227 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-04-01 04:19:37 +00:00
nobu
58b325366d * thread.c (rb_thread_io_blocking_region): new function to run
blocking region with GIL released, for fd.
* thread.c (rb_thread_fd_close): implement.  [ruby-core:35203]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30852 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-02-12 05:44:23 +00:00
nobu
0958923530 * vm.c (ruby_thread_data_type): add prefix.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30783 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-02-04 17:08:44 +00:00
kosaki
034540dbc1 * vm_core.h (GetThreadPtr): use TypedData_Get_Struct() instead
CoreDataFromValue() because we need type check. Otherwise,
	  type mismatch can cause segmentation fault crash.
	  [ruby-core:35086] [Ruby 1.9-Bug#4367]

	* vm.c (thread_data_type): remove static.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30781 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-02-04 16:05:40 +00:00
akr
741e778827 * vm_core.h: parenthesize macro arguments.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30622 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-21 15:54:58 +00:00
nobu
f4db8aedc8 * compile.c (setup_args), vm.c (invoke_block_from_c),
vm_insnhelper.c (caller_setup_args): reverted r30241 and r30243
  except for the test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30283 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-20 21:10:24 +00:00
nobu
cd3f980ea2 * compile.c (setup_args), vm.c (invoke_block_from_c),
vm_insnhelper.c (caller_setup_args): fix of r30241. lambda block
  shoud check argument number.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30243 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-18 07:02:35 +00:00
kazu
fe1f0df92b remove a comma at end of enumerator list.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30158 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-10 02:42:06 +00:00
nobu
0987b3cbc6 * vm_core.h (rb_vm_inc_const_missing_count): missing prototype.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30076 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-04 02:08:05 +00:00
shyouhei
51da92ea12 * vm.c (ruby_vm_at_exit): new API. This enables extension libs to
hook a VM termination.  Right now, because the VM we have is
	  process global, most extensions do not deallocate resources and
	  leave them to Operating System's reaping userland processes.  But
	  in a future we plan to have multiple VMs to run simultaneously in
	  a single process (MVM project).  At that stage we can no longer
	  rely on OSes and have to manage every resources to be reclaimed
	  properly.  So it is.  For a forward-compatibility reason this API
	  is introduced now, encouraging you to be as gentle as you can for
	  your resources; that is, tidy up your room.

	* include/ruby/vm.h: ditto.

	* vm_core.h (rb_vm_struct): new field.

	* vm.c (vm_init2): initialize above new field.

	* eval.c (ruby_cleanup): trigger those hooks.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30050 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-12-02 11:06:32 +00:00
nobu
925da00b02 * thread_pthread.c (gvl_release, gvl_init): suppress warnings.
* vm_core.h (rb_vm_gvl_destroy): add prototype.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29958 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-28 05:48:31 +00:00
ko1
450463d5fb * thread.c, vm_core.h: make gvl_acquire/release/init/destruct
APIs to modularize GVL implementation.
* thread_pthread.c, thread_pthread.h: Two GVL implementations.
  (1) Simple locking GVL which is same as existing GVL.
  (2) Wake-up queued threads.  The wake-up order is simple FIFO.
  (We can make several queues to support exact priorities, however
  this causes some issues such as priority inversion and so on.)
  This impl. prevents spin-loop (*1) caused on SMP environemnts.
  *1: Only one Ruby thread acqures GVL again and again.
  Bug #2359 [ruby-core:26694]
* thread_win32.c, thread_win32.h: Using simple lock
  not by CRITICAL_SECTION but by Mutex.
  Bug #3890 [ruby-dev:42315]
* vm.c (ruby_vm_destruct): ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29956 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-27 20:15:59 +00:00
ko1
f6b2490fdb * gc.c, vm.c, vm_core.h: remove USE_VALUE_CACHE option.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29675 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-03 01:01:12 +00:00
nobu
f6003894b9 * compile.c (new_child_iseq): adjust argument types.
* iseq.c (prepare_iseq_build, rb_iseq_new),
  (rb_iseq_new_with_bopt_and_opt, rb_iseq_new_with_opt),
  (rb_iseq_new_with_bopt): ditto.
* compile.c (iseq_set_exception_table): suppress warnings.
* insns.def (putspecialobject, defined): ditto.
* iseq.c (iseq_load): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29651 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-31 13:11:02 +00:00
ko1
b76fd8283a * vm_core.h: some refactoring.
- move decl. of rb_compile_option_struct to iseq.h.
  - define enum iseq_type.
  - define enum vm_special_object_type.
* compile.c: some refactoring.
  - apply above changes.
  - (struct iseq_link_element): change value of type.
  - remove unused decl.
  - fix comment.
  - rename iseq_build_body and iseq_build_exception to
  iseq_build_from_ary_body and iseq_build_from_ary_exception.
* iseq.h: define enum catch_type and enum defined_type.
* insns.def: apply above changes.
* iseq.c: define ISEQ_MAJOR_VERSION and ISEQ_MINOR_VERSION.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29649 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-31 01:42:54 +00:00
nobu
ff6ce776cb * vm_core.h (rb_signal_buff_size, rb_signal_exec): moved
declarations from thread.c.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29432 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-09 20:33:21 +00:00
nobu
046a5818bb * vm_core.h: add missing prototypes.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29413 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-06 00:08:44 +00:00
nobu
097d58a594 * load.c (ruby_init_ext): export for golfers.
* vm_core.h (rb_iseq_eval, rb_iseq_compile_with_option): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29180 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-09-04 01:41:04 +00:00
nobu
a33fdc4ec0 * vm_core.h (rb_{get,set,reset}_coverages): used in coverage.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28978 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-08-14 05:58:19 +00:00
nobu
a4209572de * insns.def, vm_core.h: fixed typo. reported by Rocky Bernstein
<rockyb AT rubyforge.org> at [ruby-core:31596].


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28837 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-08-02 15:53:48 +00:00
nobu
a5e6532c4b * vm_core.h (rb_thread_check_trap_pending): hidden API for tcl/tk wrapper.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28774 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-07-28 12:28:03 +00:00
nobu
062b4d6752 * include/ruby/{intern,io}.h: add missing prototypes.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28710 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-07-22 03:02:40 +00:00
mame
50587316b8 * vm_core.c (rb_thread_struct): add a field for sigaltstack.
* thread_pthread.c (thread_start_func_1): initialize machine stack
  information.

* thread.c (thread_start_func_2): set sigaltstack for each sub thread.
  [ruby-core:24540] [ruby-core:30207]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27789 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-13 16:20:26 +00:00
nobu
04daf205b6 * vm_core.h (rb_vm_get_sourceline): moved from eval_intern.h for
vm_dump.c.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27773 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-13 04:09:26 +00:00
mame
b8571b4285 * vm_eval.c (eval_string_with_cref): propagative filename and line_no
of binding.  [ruby-dev:38767] [ruby-core:28307]

* vm_core.h (rb_binding_t), proc.c: add filename and line_no fields to
  preserve them.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27716 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-09 18:41:51 +00:00
mame
80f7f8d07e * compile.c (iseq_compile_each), vm_insnhelper.c (vm_invoke_block,
vm_throw): allow "return" and "yield" even in singleton class
  definition.  based on a patch from wanabe <s.wanabe AT gmail.com>
  for "return".  [ruby-core:21379] [ruby-dev:40975]

* insns.def (defineclass): ditto (straightforwardly push block ptr,
  instead of dfp ptr with special flag).

* vm_core.h (RUBY_VM_CLASS_SPECIAL_P): ditto (no longer needed).

* proc.c (proc_new): ditto (remove handling for special flag).

* bootstraptest/test_jump.rb: add tests for above.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27714 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-05-09 18:21:39 +00:00