aboutsummaryrefslogtreecommitdiffstats
path: root/template/prelude.c.tmpl
Commit message (Collapse)AuthorAgeFilesLines
* check isolated Proc more strictlyKoichi Sasada2020-10-291-1/+1
| | | | | Isolated Proc prohibit to access outer local variables, but it was violated by binding and so on, so they should be error.
* template/prelude.c.tmpl: suppress clang-12 warning卜部昌平2020-08-111-0/+6
| | | | | Clang 12 warns "suspicious concatenation of string literals in an array initialization", which is rather annoying than useful in this context.
* tool/prelude.c.tmpl: use RubyVM::CEscape卜部昌平2020-08-111-19/+7
| | | | Do not repeat yourself.
* decouple internal.h headers卜部昌平2019-12-261-2/+3
| | | | | | | | | | | | | | | | | | Saves comitters' daily life by avoid #include-ing everything from internal.h to make each file do so instead. This would significantly speed up incremental builds. We take the following inclusion order in this changeset: 1. "ruby/config.h", where _GNU_SOURCE is defined (must be the very first thing among everything). 2. RUBY_EXTCONF_H if any. 3. Standard C headers, sorted alphabetically. 4. Other system headers, maybe guarded by #ifdef 5. Everything else, sorted alphabetically. Exceptions are those win32-related headers, which tend not be self- containing (headers have inclusion order dependencies).
* use compiled binary for gem_prelude.rb.Koichi Sasada2019-12-111-1/+1
| | | | | `gem_prelude.rb` is not compiled yet. This patch compile it to compiled binary.
* load prelude.rb by builtin features.Koichi Sasada2019-11-151-1/+1
| | | | | | | | | The script in prelude.rb was embed in MRI to load it (eval this script at everyboot). This commit change the loading process of prelude.rb. MRI doesn't eval a script, but load from compiled binary with builtin feature. So that Init_prelude() does not load `prelude.rb` now.
* Embed builtin ruby scripts in miniprelude.cNobuyoshi Nakada2019-11-091-10/+51
| | | | | | Instead of reading from the files by the full-path at runtime. As rbinc files need to be included in distributed tarballs, the full-paths at the packaging are unavailable at compilation times.
* Fixed commit missNobuyoshi Nakada2019-11-091-1/+1
|
* Fixed `#line` directives in miniprelude.cNobuyoshi Nakada2019-11-091-4/+5
|
* template/prelude.c.tmpl: allow UTF-8 charactersnobu2019-04-191-1/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67617 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Disable tailcall optimization [Bug #15303]nobu2018-12-121-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66349 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* reduce copy & pasteshyouhei2018-07-301-6/+4
| | | | | | | | | | | We see several occurrence of "diagnostic push/pop" so why not make them macros. Tested on GCC8 / Clang 6. Note that ruby.h is intentionally left untouched because we don't want to introduce new public macros. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64118 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* parse.y: NUL-terminate ruby_sourcefilenobu2018-03-191-7/+6
| | | | | | | | | | * parse.y (yycompile): in some cases (warning, error, dtrace,...), ruby_sourcefile is expected to be NUL-terminated, so ensure it. * template/prelude.c.tmpl (prelude_name): NUL-terminate to get rid of copying static data. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62841 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* make rb_iseq_new* accept rb_ast_body_t instead of NODE*mame2018-01-051-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61609 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* node.h: define rb_ast_body_t and restructure rb_ast_tmame2018-01-051-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61608 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* prelude.c.tmpl: get rid of warnings on old gccnobu2017-12-311-2/+2
| | | | | | | | * template/prelude.c.tmpl: ignore missing-field-initializers on old gcc, e.g. 4.4, which does not support pushing/popping diagnostics. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61524 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* prelude.c.tmpl: get rid of errors with old gccnobu2017-12-251-6/+6
| | | | | | | * template/prelude.c.tmpl: moved diagnostic pragmas outside prelude_eval() for very old gcc. [ruby-core:84449] [Bug #14234] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61478 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* prelude.c.tmpl: static literalsnobu2017-12-251-7/+8
| | | | | | | * template/prelude.c.tmpl (PRELUDE_STR): make string objects with static literals not to copy them. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61460 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* prelude.c.tmpl: fix optimization optionsnobu2017-12-251-1/+9
| | | | | | | | * template/prelude.c.tmpl (prelude_eval): fix optimization options. trace_instruction member has been removed. filled coverage_enabled and debug_level members instead. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61459 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* prelude.c.tmpl: fix line numbernobu2017-12-061-1/+1
| | | | | | | * template/prelude.c.tmpl (Init_prelude): fix line number of preludes. line of prelude_eval is an int, not a VALUE. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61042 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* prelude.c.tmpl: escape commentsnobu2017-12-011-5/+7
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60955 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* prelude.c.tmpl: split prelude codenobu2017-12-011-10/+38
| | | | | | | | * template/prelude.c.tmpl: split prelude code into blocks so that each elements do not exceed the string literal size limit in C89. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60953 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* revert r60873usa2017-12-011-1/+0
| | | | | | | | * template/prelude.c.tmpl (translate): revert r60873 because when some errors or warnings are shown their line numbers are shifted. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60950 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Skip comment linesusa2017-11-211-0/+1
| | | | | | | | * template/prelude.c.tmpl (translate): empty (only LF) lines are not necessary. so skip them, but for safety only when they are made from comment line. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60873 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * node.h (ast_t): renamed to `rb_ast_t`.ko12017-10-291-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60565 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Revert "Revert "Manage AST NODEs out of GC""mame2017-10-271-3/+7
| | | | | | | This re-introduces r60485. This reverts commit 5a176b75b1187cbd3861c387bde65ff66396a07c. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60488 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Revert "Manage AST NODEs out of GC"mame2017-10-271-7/+3
| | | | | | This reverts commit 620ba74778bfdbdc34ffbb142d49ce84a0ef58e9. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60486 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Manage AST NODEs out of GCmame2017-10-271-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | NODEs in AST are no longer objects managed by GC. This change will remove the restriction imposed by the GC. For example, a NODE can use more than five words (this is my primary purpose; we want to store the position data for each NODE, for coverage library), or even a NODE can have variable length (some kinds of NODEs have unused fields). To do this, however, we need more work, since Ripper still uses T_NODE objects managed by the GC. The life time of NODEs is more obvious than other kinds of objects; they are created at parsing, and they become disused immediately after compilation. This change releases all NODEs by a few `xfree`s after compilation, so performance will be improved a bit. In extreme example, `eval("x=1;" * 10000000)` runs much faster (40 sec. -> 7.8 sec. on my machine). The most important part of this change is `ast_t` struct, which has three contents: (1) NODE buffer (malloc'ed memory), (2) a reference to the root NODE, and (3) an array that contains objects that must be marked during parsing (such as literal objects). Some functions that had received `NODE*` arguments, must now receive `ast_t*`. * node.c, node.h: defines `ast_t` struct and related operations. * gc.c, internal.h: defines `imemo_ast`. * parse.y: makes `parser_params` struct have a reference to `ast_t`. Instead of `rb_node_newnode`, use `rb_ast_newnode` to create a NODE. * iseq.c, load.c, ruby.c, template/prelude.c.tmpl: modifies some functions to handle `ast_t*` instead of `NODE*`. * test/ruby/test_gc.rb: ad-hoc fix for a failed test. The test assumes GC eden is increased at startup by NODE object creation. However, this change now create no NODE object, so GC eden is not necessarily increased. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60485 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Update comments in prelude.c [ci skip]kazu2016-10-181-4/+4
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56448 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* prelude.c.tmpl: optimizenobu2015-11-121-3/+20
| | | | | | * template/prelude.c.tmpl: enable tail call optimization. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52549 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* prelude.c.tmpl: workaroundnobu2015-09-261-10/+10
| | | | | | * template/prelude.c.tmpl: prevent ruby-mode from confusion. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51943 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* prelude.c.tmpl: require_relativenobu2014-12-031-4/+8
| | | | | | | * 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
* prelude.c.tmpl: no preludes, no code.nobu2014-11-271-2/+6
| | | | | | * 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
* * template/prelude.c.tmpl: Don't expand RbConfig::Config[...].akr2014-11-251-19/+3
| | | | | | | | | | 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
* prelude.c.tmpl: strip prefixnobu2014-11-191-1/+1
| | | | | | | | * 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.tmplnobu2014-11-111-0/+186
* 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