ko1
5ee9513a71
Lazy Proc allocation for block parameters
...
[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
2017-10-24 11:13:49 +00:00
..
2013-12-19 01:49:59 +00:00
2012-10-15 12:53:12 +00:00
2013-09-22 10:01:22 +00:00
2015-12-14 02:50:01 +00:00
2014-09-08 07:08:56 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2017-01-20 02:27:28 +00:00
2017-01-20 02:27:28 +00:00
2017-01-20 02:27:28 +00:00
2017-01-20 02:27:28 +00:00
2017-01-20 02:27:28 +00:00
2017-01-20 02:27:28 +00:00
2017-01-20 02:27:28 +00:00
2015-01-03 02:27:50 +00:00
2017-09-29 07:43:22 +00:00
2017-09-29 07:43:22 +00:00
2017-09-29 07:43:22 +00:00
2017-04-13 09:25:38 +00:00
2017-04-13 08:09:06 +00:00
2016-09-14 16:00:55 +00:00
2017-10-04 00:04:51 +00:00
2017-05-27 02:47:11 +00:00
2017-10-24 01:20:04 +00:00
2017-10-01 21:19:24 +00:00
2015-07-29 19:54:12 +00:00
2015-07-29 19:54:12 +00:00
2015-07-29 19:54:12 +00:00
2015-03-25 02:20:43 +00:00
2014-03-22 23:34:21 +00:00
2014-03-22 23:34:21 +00:00
2014-10-09 03:44:12 +00:00
2014-10-09 03:44:12 +00:00
2013-11-28 10:50:41 +00:00
2015-01-22 07:48:59 +00:00
2014-03-22 23:34:21 +00:00
2014-03-22 23:34:21 +00:00
2014-03-22 23:34:21 +00:00
2014-03-22 23:34:21 +00:00
2013-11-28 10:50:41 +00:00
2016-09-14 16:00:55 +00:00
2015-12-11 08:23:46 +00:00
2015-12-11 08:23:46 +00:00
2015-12-11 08:23:46 +00:00
2013-04-25 05:03:30 +00:00
2016-09-14 16:00:55 +00:00
2016-09-14 16:00:55 +00:00
2016-09-14 16:00:55 +00:00
2015-11-10 09:22:37 +00:00
2013-11-28 10:50:41 +00:00
2017-04-14 05:19:12 +00:00
2017-01-18 18:23:49 +00:00
2016-12-31 00:41:14 +00:00
2015-11-12 02:00:41 +00:00
2015-07-02 22:22:14 +00:00
2017-05-04 02:13:11 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2015-01-23 08:13:59 +00:00
2015-05-30 00:20:15 +00:00
2015-05-30 00:20:15 +00:00
2015-10-08 21:31:49 +00:00
2015-10-08 21:31:49 +00:00
2014-08-08 11:00:47 +00:00
2013-06-20 07:30:41 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2016-11-29 16:06:54 +00:00
2012-10-15 12:53:12 +00:00
2016-11-29 16:06:54 +00:00
2012-11-21 07:15:03 +00:00
2016-11-29 16:06:54 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2017-10-01 13:44:49 +00:00
2017-08-04 04:25:12 +00:00
2017-08-04 04:25:12 +00:00
2017-04-14 05:19:12 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2017-10-24 11:13:49 +00:00
2017-10-24 11:13:49 +00:00
2017-10-24 11:13:49 +00:00
2017-10-24 11:13:49 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2013-11-06 00:21:05 +00:00
2013-11-06 00:21:05 +00:00
2013-11-06 00:21:05 +00:00
2013-11-06 00:21:05 +00:00
2017-05-04 08:55:54 +00:00
2017-05-04 08:55:54 +00:00
2017-05-04 08:55:54 +00:00
2017-05-04 08:55:54 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2012-10-16 20:37:25 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2015-12-08 01:46:45 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2012-10-16 23:47:51 +00:00
2012-10-15 12:53:12 +00:00
2017-05-08 01:59:12 +00:00
2012-10-17 07:26:58 +00:00
2012-10-16 20:37:25 +00:00
2012-10-15 12:53:12 +00:00
2017-01-08 01:46:10 +00:00
2017-01-08 01:46:10 +00:00
2016-08-30 06:22:30 +00:00
2014-09-12 20:57:45 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2016-09-12 15:40:09 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2015-10-07 11:43:17 +00:00
2014-12-09 15:43:49 +00:00
2014-12-09 15:43:49 +00:00
2014-12-09 15:43:49 +00:00
2015-06-22 20:10:07 +00:00
2015-06-22 20:10:07 +00:00
2015-06-22 20:10:07 +00:00
2014-12-09 15:43:49 +00:00
2014-12-09 15:43:49 +00:00
2015-06-22 20:10:07 +00:00
2015-06-22 20:10:07 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2012-10-15 12:53:12 +00:00
2016-03-09 06:05:53 +00:00
2016-03-09 06:05:53 +00:00
2016-03-09 06:05:53 +00:00
2015-09-29 08:03:12 +00:00
2015-09-29 00:21:10 +00:00
2014-05-10 23:48:51 +00:00
2017-05-02 02:40:46 +00:00
2017-05-02 02:40:46 +00:00
2012-10-15 12:53:12 +00:00
2016-08-30 06:22:30 +00:00
2016-08-30 06:22:30 +00:00
2016-08-30 06:22:30 +00:00
2017-05-04 16:47:17 +00:00
2015-12-14 02:50:01 +00:00
2016-08-30 06:22:30 +00:00
2017-05-02 02:40:46 +00:00
2017-05-02 02:40:46 +00:00
2017-05-02 02:40:46 +00:00
2017-05-02 02:40:46 +00:00
2017-10-21 15:45:32 +00:00
2016-03-09 07:42:32 +00:00
2015-10-08 21:31:49 +00:00
2015-10-08 21:53:48 +00:00
2014-07-11 02:13:09 +00:00
2014-07-11 02:13:09 +00:00