* compile.c (iseq_peephole_optimize): peephole optimization for
branchnil jumps.
* compile.c (iseq_compile_each): generate save navigation operator
code.
* insns.def (branchnil): new opcode to pop the tos and branch if
it is nil.
* parse.y (NEW_QCALL, call_op, parser_yylex): parse token '.?'.
[Feature #11537]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52214 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/ruby-runner.c.in: wrapper to set dynamic loading path
environment variable. /bin/sh on Mac OS X 10.11 (El Capitan)
clears DYLD_LIBRARY_PATH.
it must:
- do nothing even if current directory is not present
- do not set other environment variables, e.g. PWD, SHLVL, etc
- do not open other FDs, e.g. pipes for timer thread
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52008 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/unicode_norm_gen.tmpl: pragma needs the end marker too,
not only the beginning marker.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51972 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
get rid of many .freeze commands by using frozen_string_literal
pragma.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51971 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/verconf.h.tmpl: load rbconfig.rb into a separate
namespace get rid of conflict with the default RbConfig, to run
with BASERUBY.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51754 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk ($(arch)-fake.rb): read from STDIN instead of creating
version.i, to get rid of conflict with tool/update-deps.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51419 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/sizes.c.tmpl: extract RUBY_DEFINT to define sizes of
types checked by configure.in, and fix size of intptr_t in
universal binary.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51056 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
and x86_64 ABI.
* template/sizes.c.tmpl: Relax a pattern for types.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50920 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/fake.rb.in: scan MKSTR and MKINT from version.c and
then extract the value for them from version.i.
* version.c (Init_version): use MKINT as the marker.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50833 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/fake.rb.in: expanded macro result may have spaces
between tokens. [ruby-dev:49047] [Bug #11243]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50816 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/fake.rb.in (builddir): expand __FILE__ first which may
contain symblic links.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50279 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/fake.rb.in: suppress "useless use of a literal in void
context" warning.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50278 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/fake.rb.in (top_srcdir): expand for the case @srcdir@
is not a relative path.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49945 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/fake.rb.in: add RUBY_PATCHLEVEL and include it in
RUBY_DESCRIPTION.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49885 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk (fake.rb): generate from same template on all
platforms including win32.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49884 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk (test-rubyspec): use fake script to set header
directories.
* template/fake.rb.in (RUBYOPT): set -r option to propagate to
forked processes.
* tool/fake.rb (prehook): set rubyarchhdrdir too.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49758 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/prelude.c.tmpl (Prelude#translate): support for
require_relative and comments followed by #.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48708 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/prelude.c.tmpl: no code if no prelude code is given.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48605 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
It is not used now.
* common.mk: prelude.c and golf_prelude.c doesn't depend on rbconfig.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48566 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/prelude.c.tmpl (Prelude#translate): strip VPATH prefix
from prelude names, so that srcdir diffrences do not make the
generated code diffrent.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48490 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/prelude.c.tmpl: move from tool/compile_prelude.rb and
expand by generic_erb.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48373 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/unicode_norm_gen.tmpl (UnicodeNormalize): embed the
version of Unicode data files used to generate.
* test/test_unicode_normalize.rb (TestUnicodeNormalize): use the
embedded version to load the test data.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48357 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/unicode_norm_gen.tmpl: expand kompatible_table so that
recursive expansion is not needed at runtime.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48311 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/unicode_norm_gen.tmpl: use generic_erb.rb to update if
changed and manage timestamp, so that source tree on read-only
filesystem works.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48129 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/fake.rb.in: fix make install failure due to MSYS path
with mingw on MSYS environment.
[ruby-core:64965] [Bug #10230]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47774 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/fake.rb.in (top_srcdir): use absolute path to resolve
symbolic links in srcdir.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47459 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* symbol.c (op_tbl): remove non-regular symbols.
* symbol.c (global_symbols): start from the next of the preserved
ID.
* symbol.c: (rb_id2str): op_tbl does not exceed tLAST_OP_ID.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46790 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/fake.rb.in (File::ALT_SEPARATOR): override
ALT_SEPARATOR if different, not only a backslash.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46713 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
See this ticket about Symbol GC.
* include/ruby/ruby.h:
Declare few functions.
* rb_sym2id: almost same as old SYM2ID but support dynamic symbols.
* rb_id2sym: almost same as old ID2SYM but support dynamic symbols.
* rb_sym2str: almost same as `rb_id2str(SYM2ID(sym))` but not
pin down a dynamic symbol.
Declare a new struct.
* struct RSymbol: represents a dynamic symbol as object in
Ruby's heaps.
Add few macros.
* STATIC_SYM_P: check a static symbol.
* DYNAMIC_SYM_P: check a dynamic symbol.
* RSYMBOL: cast to RSymbol
* gc.c: declare RSymbol. support T_SYMBOL.
* internal.h: Declare few functions.
* rb_gc_free_dsymbol: free up a dynamic symbol. GC call this
function at a sweep phase.
* rb_str_dynamic_intern: convert a string to a dynamic symbol.
* rb_check_id_without_pindown: not pinning function.
* rb_sym2id_without_pindown: ditto.
* rb_check_id_cstr_without_pindown: ditto.
* string.c (Init_String): String#intern and String#to_sym use
rb_str_dynamic_intern.
* template/id.h.tmpl: use LSB of ID as a flag for determining a
static symbol, so we shift left other ruby_id_types.
* string.c: use rb_sym2str instead `rb_id2str(SYM2ID(sym))` to
avoid pinning.
* load.c: use xx_without_pindown function at creating temporary ID
to avoid pinning.
* object.c: ditto.
* sprintf.c: ditto.
* struct.c: ditto.
* thread.c: ditto.
* variable.c: ditto.
* vm_method.c: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45426 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/verconf.h.tmpl: rename from .in since this is an erb
template file, but not for config.status.
* common.mk (verconf.h): rename the dependent.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44446 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/encdb.h.tmpl: remove stale ENCIDX macros which never been
used, ENCINDEX enums is used.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43364 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* .gdbinit (rp_id): show ID type.
* template/id.h.tmpl (ruby_id_types): make enum for debugger.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42985 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/verconf.h.in: generate verconf.h from the template and
rbconfig.rb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40779 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* configure.in (rubysitearchprefix): sitearchdir and vendorarchdir
should use sitearch, not arch. [ruby-dev:46964] [Bug #7823]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39202 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* defs/id.def: support for other scope IDs,
ID_{INSTANCE,GLOBAL,CONST,CLASS}.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38521 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk, defs/id.def, template/id.c.tmpl: generate id.c as well as id.h.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38192 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/id.h.tmpl (attr_ids): remove Bitblt and Answer which are no
longer predefined.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38185 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/id.h.tmpl (preserved_ids): "empty?" is not an attribute name.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38155 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
HTML_ALIGN_MEMBERS lines. They have been obsolete in
Doxygen version 1.8.2.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37095 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/id.h.tmpl, tool/id2token.rb: make id.h independent from
parse.h, and make parse.c dependent on it instead.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36864 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
check if generated pc file is valid.
* template/ruby.pc.in (DEFFILE): need for mingw.
* template/ruby.pc.in (LIBRUBY): fix the order.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29643 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
(OFFSET to IC). This IC must be same as corresponding
getinlinecache instruction's IC operand.
This change is for a little performance improvement
(getting IC directly) and is for the AOT compilation development.
* compile.c, iseq.c, insns.def: Change the approach to handling inline
cahce (IC) type operand to enable the above change.
This change also affects ISeq#to_a method. The inline cache operand
will be dumped by fixnum, the index of inline cache, in other words,
inline cache identity.
* template/insns_info.inc.tmpl, tool/instruction.rb: No need to count
inline cache size (insn_iclen()).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26759 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* template/known_errors.inc.tmpl: generate defined_error() and
undefined_error() instead of set_syserr.
* error.c (Init_syserr): define defined_error() and undefined_error()
to follow the above change.
(rb_strerrno): defined.
* thread_pthread.c: show error message and errno macro name with
rb_bug.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25893 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* id.h: removed. Because this file is generated automatically.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24770 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
from version.h for cross-compiling.
* template/fake.rb.in (RUBY_VERSION, RUBY_DESCRIPTION): use above.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24602 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* encoding.c (rb_enc_set_base): Add for setting base encoding
with their names. this is internal function.
* template/encdb.h.tmpl: specify ENC_SET_BASE for second
encodings in each encoding files.
* enc/encdb.c (rb_enc_set_base): add a declaration.
(ENC_SET_BASE): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24383 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* configure.in: new checking for dot and doxygen.
* template/Doxyfile.template: merged with Doxyfile.in.
configured some options.
* common.mk (capi): use $(DOXYGEN) instead of "doxygen".
(Doxyfile): removed a duplicate entry in the dependency.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23895 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
vm_insnhelper.h (BOP): ISO C forbids comma at end of enumerator
list.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20591 b2dd03c8-39d4-4d8f-98ff-823fe69b080e