mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
nil/true/false are special literals just like floats, integers, literal strings, and symbols. Optimize when statements with them by using a jump table, too. target 0: a (ruby 2.3.0dev (2015-12-08 trunk 52928) [x86_64-linux]) at "/home/ew/rrrr/b/ruby" target 1: b (ruby 2.3.0dev (2015-12-08 master 52928) [x86_64-linux]) at "/home/ew/ruby/b/ruby" benchmark results: minimum results in each 5 measurements. Execution time (sec) name a b loop_whileloop2 0.102 0.103 vm2_case_lit* 1.657 0.549 Speedup ratio: compare with the result of `a' (greater is better) name b loop_whileloop2 0.988 vm2_case_lit* 3.017 * benchmark/bm_vm2_case_lit.rb: new benchmark * compile.c (case_when_optimizable_literal): add nil/true/false * insns.def (opt_case_dispatch): ditto * vm.c (vm_redefinition_check_flag): ditto * vm.c (vm_init_redefined_flag): ditto * vm_core.h: ditto * object.c (InitVM_Object): define === explicitly for nil/true/false * test/ruby/test_case.rb (test_deoptimize_nil): new test * test/ruby/test_optimization.rb (test_opt_case_dispatch): update (test_eqq): new test [ruby-core:71923] [Feature #11769] Original patch by Aaron Patterson <tenderlove@ruby-lang.org> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52931 b2dd03c8-39d4-4d8f-98ff-823fe69b080e |
||
|---|---|---|
| .. | ||
| enc | ||
| allpairs.rb | ||
| beginmainend.rb | ||
| lbtest.rb | ||
| marshaltestlib.rb | ||
| sentence.rb | ||
| test_alias.rb | ||
| test_argf.rb | ||
| test_arity.rb | ||
| test_array.rb | ||
| test_assignment.rb | ||
| test_autoload.rb | ||
| test_backtrace.rb | ||
| test_basicinstructions.rb | ||
| test_beginendblock.rb | ||
| test_bignum.rb | ||
| test_call.rb | ||
| test_case.rb | ||
| test_class.rb | ||
| test_clone.rb | ||
| test_comparable.rb | ||
| test_complex.rb | ||
| test_complex2.rb | ||
| test_complexrational.rb | ||
| test_condition.rb | ||
| test_const.rb | ||
| test_continuation.rb | ||
| test_defined.rb | ||
| test_dir.rb | ||
| test_dir_m17n.rb | ||
| test_econv.rb | ||
| test_encoding.rb | ||
| test_enum.rb | ||
| test_enumerator.rb | ||
| test_env.rb | ||
| test_eval.rb | ||
| test_exception.rb | ||
| test_extlibs.rb | ||
| test_fiber.rb | ||
| test_file.rb | ||
| test_file_exhaustive.rb | ||
| test_fixnum.rb | ||
| test_flip.rb | ||
| test_float.rb | ||
| test_fnmatch.rb | ||
| test_gc.rb | ||
| test_hash.rb | ||
| test_ifunless.rb | ||
| test_integer.rb | ||
| test_integer_comb.rb | ||
| test_io.rb | ||
| test_io_m17n.rb | ||
| test_iseq.rb | ||
| test_iterator.rb | ||
| test_keyword.rb | ||
| test_lambda.rb | ||
| test_lazy_enumerator.rb | ||
| test_literal.rb | ||
| test_m17n.rb | ||
| test_m17n_comb.rb | ||
| test_marshal.rb | ||
| test_math.rb | ||
| test_metaclass.rb | ||
| test_method.rb | ||
| test_mixed_unicode_escapes.rb | ||
| test_module.rb | ||
| test_not.rb | ||
| test_notimp.rb | ||
| test_numeric.rb | ||
| test_object.rb | ||
| test_objectspace.rb | ||
| test_optimization.rb | ||
| test_pack.rb | ||
| test_parse.rb | ||
| test_path.rb | ||
| test_pipe.rb | ||
| test_primitive.rb | ||
| test_proc.rb | ||
| test_process.rb | ||
| test_rand.rb | ||
| test_range.rb | ||
| test_rational.rb | ||
| test_rational2.rb | ||
| test_readpartial.rb | ||
| test_refinement.rb | ||
| test_regexp.rb | ||
| test_require.rb | ||
| test_rubyoptions.rb | ||
| test_rubyvm.rb | ||
| test_settracefunc.rb | ||
| test_signal.rb | ||
| test_sleep.rb | ||
| test_sprintf.rb | ||
| test_sprintf_comb.rb | ||
| test_string.rb | ||
| test_stringchar.rb | ||
| test_struct.rb | ||
| test_super.rb | ||
| test_symbol.rb | ||
| test_syntax.rb | ||
| test_system.rb | ||
| test_thread.rb | ||
| test_threadgroup.rb | ||
| test_time.rb | ||
| test_time_tz.rb | ||
| test_trace.rb | ||
| test_transcode.rb | ||
| test_undef.rb | ||
| test_unicode_escape.rb | ||
| test_variable.rb | ||
| test_weakmap.rb | ||
| test_whileuntil.rb | ||
| test_yield.rb | ||
| ut_eof.rb | ||