Age | Commit message (Collapse) | Author |
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60560 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_insnhelper.c (rb_vm_bh_to_procval): constify 1st param (ec).
* vm_args.c (args_setup_block_parameter): accepts (const) `ec`.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60559 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_dump.c: `th` -> `ec` (and constify) for:
* control_frame_dump
* rb_vmdebug_stack_dump_raw
* rb_vmdebug_debug_print_register
* rb_vmdebug_debug_print_pre
* rb_vmdebug_debug_print_post
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60546 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* eval_error.c (rb_threadptr_error_print): renamed to
rb_ec_error_print() and it accepts `ec`.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60545 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_core.h (EXEC_EVENT_HOOK): accepts `ec` instead of `th`.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60539 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_core.h (rb_trace_arg_t): introduce `ec` field instead of `th`.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60538 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* cont.c (rb_context_struct): move rb_context_t::thread_ptr to
rb_execution_context_t::thread_ptr.
* cont.c (rb_fiberptr_thread_ptr): removed.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60537 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_eval.c (rb_vm_call): accepts `ec` instead of `th`.
* proc.c: catch up this fix.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60520 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm.c (rb_vm_make_binding): accepts (const) `ec` instead of `th`.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60514 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm.c (rb_thread_method_id_and_class): rename to
rb_ec_frame_method_id_and_class() and accepts `ec` instead of `th`.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60513 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm.c (rb_vm_get_binding_creatable_next_cfp): accepts `ec` instead of `th`.
* vm.c (rb_vm_stack_to_heap): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60508 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm.c (rb_vm_rewind_cfp): accepts `ec` instead of `th`.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60507 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_core.h: move rb_thread_t::passed_block_handler to
rb_execution_context_t::passed_block_handler.
Also move rb_thread_t::passed_bmethod_me to
rb_execution_context_t::passed_bmethod_me.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60503 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_core.h (rb_insn_func_t): accepts `ec` instead of `th`.
* vm_insnhelper.c (rb_vm_opt_struct_aref): ditto.
* vm_insnhelper.c (rb_vm_opt_struct_aset): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60492 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60479 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm.c: the following functions accept `ec` instead of `th`.
* invoke_block
* invoke_bmethod
* invoke_iseq_block_from_c
* invoke_block_from_c_bh
* check_block_handler
* vm_yield_with_cref
* vm_yield
* vm_yield_with_block
* vm_yield_force_blockarg
* invoke_block_from_c_proc
* vm_invoke_proc
* vm_invoke_bmethod
* rb_vm_invoke_proc
* vm_insnhelper.c: ditto.
* vm_yield_with_cfunc
* vm_yield_with_symbol
* vm_callee_setup_block_arg
* vm_yield_setup_args
* vm_invoke_iseq_block
* vm_invoke_symbol_block
* vm_invoke_ifunc_block
* vm_invoke_block
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60476 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_core.h (vm_call_handler): fix to accept `ec` instead of `th`.
* vm_args.c: the following functions accept `ec` instead of `th`.
* raise_argument_error
* argument_arity_error
* argument_kw_error
* setup_parameters_complex
* vm_eval.c: ditto.
* vm_call0
* vm_call0_cfunc_with_frame
* vm_call0_cfunc
* vm_call0_body
* vm_insnhelper.c: ditto
* vm_call_iseq_setup_tailcall_0start
* vm_call_iseq_setup_normal_0start
* vm_callee_setup_arg
* vm_call_iseq_setup
* vm_call_iseq_setup_2
* vm_call_iseq_setup_normal
* vm_call_iseq_setup_tailcall
* vm_cfp_consistent_p
* vm_call_cfunc_with_frame
* vm_call_cfunc
* vm_call_ivar
* vm_call_attrset
* vm_call_bmethod_body
* vm_call_bmethod
* vm_call_opt_send
* vm_call_opt_call
* vm_call_method_missing
* vm_call_zsuper
* current_method_entry
* vm_call_method_each_type
* vm_call_method_nome
* vm_call_method
* vm_call_general
* vm_call_super_method
* tool/mk_call_iseq_optimized.rb: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60468 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* proc.c: move declaration of rb_vm_bh_to_procval() to vm_core.h.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60462 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60454 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* eval_intern.h:
introduce EC_*_TAG() macros instead of TH_*_TAG() macros.
* TH_PUSH_TAG() -> EC_PUSH_TAG()
* TH_POP_TAG() -> EC_POP_TAG()
* TH_TMPPOP_TAG() -> EC_TMPPOP_TAG()
* TH_REPUSH_TAG() -> EC_REPUSH_TAG()
* TH_EXEC_TAG() -> EC_EXEC_TAG()
* TH_JUMP_TAG() -> EC_JUMP_TAG()
rb_threadptr_tag_state() , rb_ec_tag_jump() also accept `ec` instead of `th`.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60450 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_insnhelper.c (vm_pop_frame): accepts `ec` instead of `th`.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60448 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm.c (vm_make_env_object): accepts `ec`.
* vm.c (rb_vm_get_ruby_level_next_cfp): ditto.
* vm.c (rb_vm_make_proc): ditto.
* vm.c (rb_vm_make_proc_lambda): ditto.
* vm_core.h: some macros accept ec instead of th
(and make them inline functions):
* RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW
* RUBY_VM_END_CONTROL_FRAME
* RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P
* eval.c (frame_func_id): constify for the first parameter.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60441 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
to represent execution context [Feature #14038]
* vm_core.h (rb_thread_t): rb_thread_t::ec is now a pointer.
There are many code using `th` to represent execution context
(such as cfp, VM stack and so on). To access `ec`, they need to
use `th->ec->...` (adding one indirection) so that we need to
replace them by passing `ec` instead of `th`.
* vm_core.h (GET_EC()): introduced to access current ec. Also
remove `ruby_current_thread` global variable.
* cont.c (rb_context_t): introduce rb_context_t::thread_ptr instead of
rb_context_t::thread_value.
* cont.c (ec_set_vm_stack): added to update vm_stack explicitly.
* cont.c (ec_switch): added to switch ec explicitly.
* cont.c (rb_fiber_close): added to terminate fibers explicitly.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60440 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
[Feature #14045]
* insns.def (getblockparam, setblockparam): add special access
instructions for block parameters.
getblockparam checks VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM and
if it is not set this instruction creates a Proc object from
a given blcok and set VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM.
setblockparam is similar to setlocal, but set
VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM.
* compile.c: use get/setblockparm instead get/setlocal instructions.
Note that they are used for method local block parameters (def m(&b)),
not for block local method parameters (iter{|&b|).
* proc.c (get_local_variable_ptr): creates Proc object for
Binding#local_variable_get/set.
* safe.c (safe_setter): we need to create Proc objects for postponed
block parameters when $SAFE is changed.
* vm_args.c (args_setup_block_parameter): used only for block local blcok
parameters.
* vm_args.c (vm_caller_setup_arg_block): if called with
VM_CALL_ARGS_BLOCKARG_BLOCKPARAM flag then passed block values should be
a block handler.
* test/ruby/test_optimization.rb: add tests.
* benchmark/bm_vm1_blockparam*: added.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60397 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
Because NaCl and PNaCl are already sunset status.
see https://bugs.chromium.org/p/chromium/issues/detail?id=239656#c160
configure.ac: Patch for this file was provided by @nobu.
[Feature #14041][ruby-core:83497][fix GH-1726]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60374 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
vm_insnhelper.h: ditto.
All changes are for reducing changes required to introduce JIT compiler.
Unlike functions that can be inlined by header, those variables should
be shared with JIT-ed code. This will help reducing cost of rebase
against upstream.
[close GH-1720]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60231 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59837 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* cont.c (rb_context_t): introduce saved_ec instaad of saved_thread.
We only need to transfer ec data (not all of thread data).
Introduce `thread_value` field to point creation thread.
To acccess this field, `cont_thread_value()` is introduced.
* vm.c (rb_execution_context_mark): remove `static` and use it
from cont.c (use this function instead of `rb_thread_mark`).
* vm_insnhelper.c (rb_vm_push_frame): accept ec instead of th.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59831 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_core.h: move rb_thread_t::machine to rb_execution_context_t::machine.
* vm_core.h, gc.c (rb_gc_mark_machine_stack): accept ec instead of th.
it enables to call this func from rb_execution_context_mark() in vm.c.
* cont.c (fiber_setcontext): catch up this fix.
fiber_restore_thread() restores machine stack information too.
* gc.c: catch up structure layout changes.
* thread.c: ditto.
* thread_pthread.c: ditto.
* thread_win32.c: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59825 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_core.h (rb_thread_t::fiber): move fiber field to
rb_execution_context_t::fiber.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59776 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59754 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
To prepare new measuring targets: branch and method coverages.
So far, iseq->coverage was an array of counts executed for line coverage.
Now, it is a three-element array for each measuring target,
whose first element is an array for line coverage.
The second element is planned for branch coverage, and the third will be
for method coverage.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59738 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_core.h (ruby_special_exceptions): rename sysstack_gc as
stackfatal.
* eval.c (Init_eval): modified the message for stackfatal error as
"critical region".
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59627 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_insnhelper.c (rb_threadptr_stack_overflow): rb_fatal is not
available during GC. raise the preallocated fatal error.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59618 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_core.h (VM_UNREACHABLE): tell unreachable if possible.
suppress an invalid-noreturn warning at rb_fiber_start.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59568 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_core.h: Ruby processes run with two stacks, a machine stack and a
VM stack. To make it clear, this fix renames
rb_execution_context_t::stack(_size) to vm_stack(_size).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59563 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* compile.c (compile_array_keyword_arg): set keyword splat flag if
explicitly splatted. [ruby-core:68124] [Bug #10856]
* vm_args.c (setup_parameters_complex): try keyword hash splat if
given.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59519 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_core.h (vm_call_flag_bits): define VM_CALL flags by using
enum constants.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59518 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_core.h (rb_vm_struct): separate trap_list cmd and safe to
each arrays, to shrink the size.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59434 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
These caused numerous CI failures I haven't been able to
reproduce [ruby-core:82102]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59364 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
The same hash keys may be loaded from tainted data sources
frequently (e.g. parsing headers from socket or loading
YAML data from a file). If a non-tainted fstring already
exists (because the application expects the hash key),
cache and deduplicate the tainted version in the new
tainted_frozen_strings table.
For non-embedded strings, this also allows sharing with the
underlying malloc-ed data.
* vm_core.h (rb_vm_struct): add tainted_frozen_strings
* vm.c (ruby_vm_destruct): free tainted_frozen_strings
(Init_vm_objects): initialize tainted_frozen_strings
(rb_vm_tfstring_table): accessor for tainted_frozen_strings
* internal.h: declare rb_fstring_existing, rb_vm_tfstring_table
* hash.c (fstring_existing_str): remove (moved to string.c)
(hash_aset_str): use rb_fstring_existing
* string.c (rb_fstring_existing): new, based on fstring_existing_str
(tainted_fstr_update): new
(rb_fstring_existing0): new, based on fstring_existing_str
(rb_tainted_fstring_existing): new, special case for tainted strings
(rb_str_free): delete from tainted_frozen_strings table
* test/ruby/test_optimization.rb (test_hash_reuse_fstring): new test
[ruby-core:82012] [Bug #13737]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59354 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59317 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_core.h (rb_thread.h): move errinfo and trace_arg to
rb_execution_context_t.
* cont.c (fiber_switch, rb_cont_call): do not restore "trace_arg" here.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59199 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_core.h (rb_thread_t): move root_lep, root_svar and ensure_list
to rb_execution_context_t.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59195 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59193 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_core.h (rb_thread_ptr): added to replace GetThreadPtr() macro.
* thread.c (in some functions: use "target_th" instead of "th" to make clear
that it is not a current thread.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59192 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_core.h (rb_thread_t): move storages to rb_execution_context_t.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59190 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_core.h (rb_thread_t): move several fields which are copied at cont.c
to rb_execution_context_t.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59177 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_core.h (rb_vm_tag): move jmpbuf which should be stored at the
last in TH_PUSH_TAG, between tag and state so ensure to be
accessible. reapplied r40806.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59160 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
|
* vm_core.h (rb_thread_t::tag_state): move to "rb_vm_tag::state".
Lifetime of "state" should be same as current tag.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59159 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|