mame
74dc18c953
* compile.c (NODE_RETURN): fire return event at explicit return.
...
[ruby-dev:38701]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24579 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-08-18 16:15:29 +00:00
nobu
e5df8fd261
* compile.c (iseq_compile_each): used more appropriate construct.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24334 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-31 02:48:10 +00:00
mame
df878f78c5
* compile.c (iseq_compile_each): fix stack consistency error.
...
[ruby-core:24611]
* bootstraptest/test_method.rb: add tests for above.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24323 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-30 12:42:41 +00:00
mame
31c561f66a
* vm_core.h (struct rb_iseq_t): add a new field line_no. This field
...
represents line number from which the original code of the iseq
starts. [ruby-dev:38698]
* iseq.c, compile.c: ditto.
* parse.y: line number hack (for Proc#source_location) is no longer
needed.
* test/ruby/test_settracefunc.rb: line number of set_trace_func is now
compatible with 1.8's.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24243 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-22 13:37:26 +00:00
nobu
5a392c71db
* compile.c (compile_dstr_fragments): reduced needless literal.
...
* parse.y (xstring, regexp, dsym, literal_concat, evstr2dstr):
literal at the top of dstr is no longer needed if it is empty,
since concatstrings and toregexp always create new strings.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24212 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-20 10:01:05 +00:00
ko1
94664d6d0c
* node.h, vm_core.h, variable.c: rename global_entry to rb_global_entry.
...
* compile.c, insns.def, iseq.c, vm_insnhelper.h: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24135 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-16 00:01:06 +00:00
ko1
c330876d7c
* method.h, vm_core.h: add rb_method_entry_t. Remove nodes around
...
method management. This change affect some VM control stack structure.
* vm.c, vm_insnhelper.c, vm_method.c, vm_eval.c: ditto. and make some
refactoring.
* insns.def, class.c, eval.c, proc.c, vm_dump.c : ditto.
* vm_core.h, compile.c (iseq_specialized_instruction): remove
VM_CALL_SEND_BIT. use another optimization tech for Kernel#send.
* node.h: remove unused node types.
* ext/objspace/objspace.c (count_nodes): ditto.
* gc.c: add mark/free functions for method entry.
* include/ruby/intern.h: remove decl of
rb_define_notimplement_method_id(). nobody can use it
because noex is not opend.
* iseq.c (iseq_mark): fix to check ic_method is available.
* iseq.c (rb_iseq_disasm): fix to use rb_method_get_iseq().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24128 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-15 14:59:41 +00:00
ko1
20d9aefccb
* vm_core.h, compile.c: declare struct iseq_inline_cache_entry.
...
Inline cache (IC) entries are no longer GC managed object.
IC entries are freed when ISeq is freed.
* iseq.c: fix mark, free, memsize functions for above change.
* insns.def: remove rb_gc_write_barrier().
* vm_insnhelper.c (vm_method_search): ditto.
* tool/instruction.rb, template/insns_info.inc.tmpl (insn_iclen):
added.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24085 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-13 09:30:23 +00:00
ko1
0ac93a1a40
* insns.def, vm_insnhelper.c (getinstancevariable):
...
fix to use inline cache.
* compile.c: fix to skip inline cache entry (IC). IC is added
automatically by compiler.
* insns.def, vm_insnhelper.h: fix IC positions.
* iseq.c: increment minor_version of ISeq because of above change.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24067 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-07-13 04:44:20 +00:00
nobu
877acd03f6
* compile.c (iseq_set_arguments, iseq_compile_each): internal
...
arrays must be hidden. [ruby-dev:38613]
* vm.c (Init_top_self): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23815 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-06-22 07:14:32 +00:00
nobu
53106bd5c3
* compile.c: fixed types.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23814 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-06-22 07:05:50 +00:00
nobu
d25ea00ac0
* compile.c: fixed types.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23475 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-05-17 05:27:32 +00:00
nobu
f91b0dc811
* compile.c (rb_parse_in_eval): returns true in true eval, not in
...
main. [ruby-dev:38382]
* parse.y (program): inherits dvars in eval or main.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23474 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-05-17 05:23:10 +00:00
nobu
506af65de1
* compile.c (cdhash_type, iseq_set_sequence): should not call
...
methods of the argument of case, to keep the semantics of
case/when. [ruby-dev:38079]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22662 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-27 09:30:53 +00:00
nobu
12d2c8ba41
stripped trailing spaces.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22552 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-22 14:23:33 +00:00
ko1
c9e4dc308f
* compile.c: fix to add "ensure" codes across "while" clause
...
before "return" expression. [ruby-dev:37967]
* bootstraptest/test_flow.rb: add a test.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22363 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-16 20:54:58 +00:00
nobu
ae6ba9f084
* compile.c (iseq_compile_each): just freeze xstr.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22271 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-12 16:45:18 +00:00
nobu
11a4e69447
* compile.c (iseq_set_sequence, compile_dstr_fragments),
...
(iseq_compile_each): hides other internal objects.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22270 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-12 16:29:17 +00:00
nobu
5dd1a4c14e
* compile.c (hide_obj): OBJ_FREEZE() is not an expression. a patch
...
from nagachika <nagachika00 AT gmail.com> at [ruby-dev:37977].
* compile.c (insn_set_sc_state): fixed typoe.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22259 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-12 13:51:19 +00:00
nobu
e52da91987
* compile.c (compile_array_, defined_expr, iseq_compile_each): hide
...
and freeze internal literal objects, to prevent from modifying.
[ruby-dev:37959]
* iseq.c (insn_operand_intern): copy internal literal objects.
* insns.def (putstring, duparray): ditto.
* string.c (rb_str_replace): exported.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22255 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-12 10:42:36 +00:00
ko1
cf23d0f0f0
* vm.c: add a prefix "rb_" to exposed functions
...
vm_get_ruby_level_next_cfp(), rb_vm_make_env_object(),
vm_stack_to_heap(), vm_make_proc(), vm_invoke_proc(),
vm_get_sourceline(), vm_cref(), vm_localjump_error(),
vm_make_jump_tag_but_local_jump(), vm_jump_tag_but_local_jump().
This changes may affect only core because most of renamed functions
require a pointer of not-exposed struct such as rb_thread_t or NODE.
In short, they are core functions.
* cont.c, eval.c, eval_intern.h, load.c, proc.c, thread.c,
vm_core.h, vm_dump.c, vm_eval.c, vm_exec.c, vm_insnhelper.c:
ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21659 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-19 02:38:11 +00:00
ko1
c4c3f238d7
* iseq.c:
...
rename ruby_iseq_disasm_insn() -> rb_iseq_disasm_insn().
rename ruby_iseq_disasm() -> rb_iseq_disasm().
* compile.c:
rename ruby_iseq_compile() -> rb_iseq_compile_node().
rename ruby_iseq_translate_threaded_code() ->
rb_iseq_translate_threaded_code().
rename ruby_insns_name_array() -> rb_insns_name_array().
rename ruby_iseq_build_from_ary() -> rb_iseq_build_from_ary().
* iseq.c, compile.c: remove ruby_insn_make_insn_table() and make
static function insn_make_insn_table().
* iseq.h, ruby.c, vm.c, vm_core.h, vm_eval.c, vm_dump.c,
blockinlining.c: ditto.
Rename strange "ruby_" prefix to "rb_" prefix.
This changes may affect only core because renamed functions
require a pointer of rb_iseq_t which is not exposed.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21653 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-19 01:06:56 +00:00
nobu
b96f428e48
* iseq.c (rb_iseq_load): renamed from ruby_iseq_load, since it is
...
for C extensions or the ruby core. [ruby-core:21407]
Index: compile.c
===================================================================
--- compile.c (revision 21649)
+++ compile.c (working copy)
@@ -5078,5 +5078,5 @@ iseq_build_exception(rb_iseq_t *iseq, st
}
else {
- eiseqval = ruby_iseq_load(ptr[1], iseq->self, Qnil);
+ eiseqval = rb_iseq_load(ptr[1], iseq->self, Qnil);
}
@@ -5162,5 +5162,5 @@ iseq_build_body(rb_iseq_t *iseq, LINK_AN
if (op != Qnil) {
if (TYPE(op) == T_ARRAY) {
- argv[j] = ruby_iseq_load(op, iseq->self, Qnil);
+ argv[j] = rb_iseq_load(op, iseq->self, Qnil);
}
else if (CLASS_OF(op) == rb_cISeq) {
Index: iseq.c
===================================================================
--- iseq.c (revision 21649)
+++ iseq.c (working copy)
@@ -448,5 +448,5 @@ iseq_s_load(int argc, VALUE *argv, VALUE
VALUE
-ruby_iseq_load(VALUE data, VALUE parent, VALUE opt)
+rb_iseq_load(VALUE data, VALUE parent, VALUE opt)
{
return iseq_load(rb_cISeq, data, parent, opt);
Index: iseq.h
===================================================================
--- iseq.h (revision 21649)
+++ iseq.h (working copy)
@@ -21,5 +21,5 @@ VALUE ruby_iseq_build_from_ary(rb_iseq_t
/* iseq.c */
-VALUE ruby_iseq_load(VALUE data, VALUE parent, VALUE opt);
+VALUE rb_iseq_load(VALUE data, VALUE parent, VALUE opt);
struct st_table *ruby_insn_make_insn_table(void);
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21650 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-18 19:05:15 +00:00
ko1
e40928733d
* ruby.c (process_options): decrement parse_in_eval to recognize
...
parsing main or normal eval script.
* compile.c (rb_parse_in_main): return 1 if parsing main script.
(if parse_in_eval is negative value, it means main script)
* parse.y (yycompile0): check rb_parse_in_main() to accumulate
script text. Bug #848 [ruby-core:20450]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21571 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-15 16:14:43 +00:00
ko1
6c08b4522d
* iseq.h, iseq.c (rb_iseq_new_main): add a type ISEQ_TYPE_MAIN.
...
[ruby-dev:37619]
* compile.c (rb_dvar_defined, ruby_iseq_compile): ditto.
* iseq.c (iseq_data_to_ary, iseq_load): ditto.
* compile.c (iseq_compile_each): fix to check ip->compile_data.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21088 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-27 05:58:23 +00:00
ko1
597220ef0c
* vm.c (Init_VM): create and define TOPLEVEL_BINDING at first.
...
* vm.c (vm_set_main_stack, rb_iseq_eval_main): added.
* parse.y (rb_parser_compile_file): fix to check parse_in_eval flag.
* eval.c (ruby_exec_node): use rb_iseq_eval_main()
instead of rb_iseq_eval().
* iseq.c (rb_iseq_new_main), vm_core.h: added.
main script (specified by -e or script name) should be run
under TOPLEVEL_BINDING using Kernel#eval. Above changes
simulate Kernel#eval behaviour. [ruby-dev:37240]
* compile.c (make_name_for_block): skip iseq except block type.
this fix is needed for [ruby-dev:37240], and also fixes
[ruby-dev:35392].
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21079 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-27 01:15:56 +00:00
ko1
155149109a
* compile.c (iseq_peephole_optimize): fix typo.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20970 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-24 13:01:09 +00:00
nobu
541915b239
* compile.c (iseq_compile_each), gc.c (assign_heap_slot),
...
(gc_mark_children), parse.y (vtable_alloc, vtable_free, vtable_add),
proc.c (proc_to_s), thread.c (terminate_i, rb_thread_terminate_all),
(thread_start_func_2, blocking_region_begin, blocking_region_end),
(rb_thread_kill), thread_pthread.c (native_thread_create),
(ubf_pthread_cond_signal), vm.c (check_env, thread_free), vm_dump.c
(vm_env_dump_raw, vm_stack_dump_each, vm_thread_dump_state),
(vm_call0): use void pointer for %p.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20593 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-09 04:33:55 +00:00
nobu
ed19ff6bdb
* compile.c (iseq_set_sequence): uses rb_compile_warning() for
...
warning at compilation time.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20536 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-05 03:38:50 +00:00
nobu
794eb7bc49
* compile.c (ruby_iseq_compile, ruby_iseq_translate_threaded_code),
...
(ruby_insns_name_array, ruby_iseq_build_from_ary): prefixed with
ruby_.
* iseq.c (ruby_iseq_load, ruby_insn_make_insn_table): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20535 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-05 03:35:48 +00:00
mame
01cdeb8da7
* compile.c (iseq_set_sequence): fix memory leak.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19803 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-16 14:38:08 +00:00
nobu
c809aaa5e1
* compile.c (iseq_compile_each): fixed indent.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19761 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-12 01:18:49 +00:00
mame
f2aabd1802
* compile.c (iseq_set_sequence): check duplicated when clauses.
...
[ruby-dev:36616]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19612 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-28 13:15:34 +00:00
ko1
2e311f6bd5
* include/ruby/node.h, node.h: move node.h from include path.
...
This change stop to install node.h beacuase of saving ABI
(node.h will be changed. Extensions should not depends on
this file).
* blockinlining.c, class.c, compile.c, debug.h, enum.c,
gc.c, iseq.c, parse.y, ruby.c, signal.c, variable.c,
vm.c, vm_core.h, vm_dump.c: ditto.
* ext/ripper/depend: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19500 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-23 19:52:31 +00:00
ko1
7f7834abf7
* include/ruby/node.h, vm_core.h: move definition of
...
RUBY_VM_METHOD_NODE to node.h.
* class.c, common.mk: remove useless inclusion.
* compile.h, iseq.h, vm_core.h: rename compile.h to iseq.h.
move some definitions from vm_core.h to iseq.h.
* compile.c, iseq.c, vm.c: ditto.
* eval.c, compile.c: move some functions for parser
from eval.c to compile.c.
* eval_intern.h, vm_core.h: move va_init_list() macro to
vm_core.h.
* iseq.c (rb_iseq_new_top, rb_iseq_first_lineno): added.
* load.c, ruby.c: use rb_iseq_new_top() instead of
rb_iseq_new() with ISEQ_TYPE_TOP constant directly.
* proc.c: use rb_iseq_first_lineno() instead of accessing
iseq structure.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19472 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-23 07:49:45 +00:00
matz
9839d737c2
* compile.c (defined_expr): default defined? should return
...
"expression" without evaluating the expression. [ruby-dev:35967]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18839 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-25 14:04:09 +00:00
matz
cc3cbd2965
* compile.c (defined_expr): should handle NODE_{AND,OR} as
...
"expression". [ruby-dev:35951]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18834 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-25 10:06:12 +00:00
nobu
74cd315a50
* compile.c (iseq_build_body): suppress a warning.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18789 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-23 07:01:57 +00:00
nobu
5f9c188d97
* include/ruby/ruby.h (rb_intern_const): tiny optimization.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18653 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-16 00:20:31 +00:00
nobu
0acca9a826
* compile.c (insn_data_to_s_detail), file.c (rb_stat_inspect),
...
iseq.c (ruby_iseq_disasm_insn, ruby_iseq_disasm),
process.c (pst_message), re.c (match_inspect): use rb_str_catf.
* dir.c (dir_inspect), iseq.c (iseq_inspect, insn_operand_intern): use
rb_sprintf.
* error.c (rb_name_error, rb_raise, rb_loaderror, rb_fatal): use
rb_vsprintf.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18158 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-22 08:53:34 +00:00
nobu
16ab763b1f
* compile.c (iseq_compile_each): NODE_POSTEXE should set each end
...
procs only once. [ruby-dev:35596]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18136 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-20 13:50:14 +00:00
ko1
807fbd6940
* compile.c, vm.c, insns.def: call FrozenCore.set_postexe method
...
instead to use "postexe" insn.
* id.c, id.h: add a prepared id for above.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17779 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-01 12:19:00 +00:00
shyouhei
3e69e83a62
* include/ruby/ruby.h (enum ruby_special_consts): ISO C forbids
...
comma at end of enumerator list
* include/ruby/ruby.h (enum ruby_value_type): ditto.
* eval_intern.h (enum): ditto.
* vm_core.h (enum rb_thread_status): ditto.
* parse.y (enum lex_state_e): ditto.
* parse.y (enum string_type): ditto.
* process.c (enum): ditto.
* ruby.c (enum dump_flag_bits): ditto.
* ruby.c (enum disable_flag_bits): ditto.
* compile.c (iseq_link_element): ditto
* debug.c (union): ditto.
* cont.c (enum context_type): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17766 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-01 08:27:58 +00:00
ko1
eb33f91cb7
* compile.c, insns.def, vm.c, vm_core.h: remove some insns
...
(undef, alias, definemethod).
Call RubyVM::FrozenCore's singleton method instead.
Add "putiseq" and "putspecialobject" instructions.
* id.c, id.h: add ids for above.
* tool/parse.rb: "VM" no longer exists. Use RubyVM instead.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17755 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-01 03:05:58 +00:00
mame
59e103794e
* compile.c (iseq_build_from_ary): initialize arg_opts, a patch from
...
Adam Strzelecki <ono@java.pl> in [ruby-core:17220].
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17550 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-23 15:23:12 +00:00
wanabe
266a84c904
* compile.c (iseq_build_from_ary): fix expression to obtain
...
iseq->local_size and iseq->local_table_size. [ruby-dev:35205]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17548 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-23 15:12:29 +00:00
wanabe
62b6a462d7
* compile.c : treat []&&= in virtually the same way as []||=.
...
[ruby-dev:34679]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17061 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-09 13:49:16 +00:00
nobu
5a647a3f5f
* include/ruby/ruby.h (CONST_ID): constant ID cache for non-gcc.
...
* *.c: no cache in init functions.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17053 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-09 09:25:32 +00:00
nobu
075530a685
* suppress warnings with -Wwrite-string.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16716 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-31 09:28:20 +00:00
mame
e0a264a9ef
* compile.c (defined_expr): fix SEGV by defined?([1]).
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16704 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-30 13:15:03 +00:00
mame
a93136879e
* compile.c (iseq_compile): set local_table for
...
ISEQ_TYPE_DEFINED_GUARD.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16588 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-25 08:55:09 +00:00
mame
8742de6f10
* compile.c (iseq_build_body): remove side effect from
...
VM::InstructionSequence.load.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16587 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-25 08:52:57 +00:00
ko1
59c061235f
* eval_method.c: renamed from vm_method.c. "vm_method.c" is included
...
by "vm.c".
* vm_eval.c: added. Some codes are moved from "eval.c"
* common.mk: fix for above changes.
* compile.c: make a vm_eval(0)
* eval.c, eval_error.c, eval_intern.h, eval_jump.c, proc.c, vm.c,
id.c, id.h, vm_core.h, vm_dump.c, vm_evalbody.c, vm_insnhelper.c,
blockinlining.c: fix for above changes. and do some refactoring.
this changes improve rb_yield() performance.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16576 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-24 17:50:17 +00:00
mame
956dead480
* compile.c (iseq_set_exception_table, NODE_WHILE, NODE_NEXT): remove
...
special handling that decrements sp in CATCH_TYPE_NEXT for NODE_WHILE.
* vm.c (vm_eval_body), vm_insnhelper.c (vm_throw): remove unused code.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16568 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-24 06:29:48 +00:00
mame
846ea1727f
* compile.c (get_destination_insn, get_next_insn, get_prev_insn):
...
peephole optimization should not ignore ISEQ_ELEMENT_ADJUST.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16535 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-22 14:45:54 +00:00
ko1
385f0e8af6
* vm.c, insns.def, eval.c, vm_insnhelper.c: fix CREF handling.
...
VM value stack frame of block contains cref information.
(dfp[-1] points CREF)
* compile.c, eval_intern.h, eval_method.c, load.c, proc.c,
vm_dump.h, vm_core.h: ditto.
* include/ruby/ruby.h, gc.c: remove T_VALUES because of above
changes.
* bootstraptest/test_eval.rb, test_knownbug.rb: move solved test.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16468 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-19 03:08:50 +00:00
ko1
5e4edb43a2
* insns.def: add a "putcbase" instruction.
...
* compile.c, insns.def: fix to use putcbase instruction for
class search. Qundef should not be used.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16411 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-14 02:31:28 +00:00
matz
b15fe02d19
* eval.c (is_defined): add NODE_OP_ASGN_{OR,AND}. "defined?(a||=1)"
...
should not operate assignment. [ruby-dev:34645]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16386 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-12 05:05:50 +00:00
matz
837c76bd7b
* compile.c (iseq_compile_each): should call compile_cpath() for
...
modules as well. [ruby-dev:34585]
* insns.def (defineclass): add undef handling.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16299 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-05 15:01:42 +00:00
matz
58967f4fcd
* compile.c (defined_expr): protect some expression from
...
segmentation fault. a patch from wanabe <s.wanabe at gmail.com>
in [ruby-dev:34593].
* compile.c (defined_expr):
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16296 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-05 11:01:10 +00:00
matz
a823fc5d8b
* compile.c (compile_cpath): use Qundef to denote cbase lookup.
...
* insns.def (defineclass): Qudef is passed for cbase.
* insns.def (setconstant): ditto.
* vm_insnhelper.c (vm_check_if_namespace): use rb_inspect()
instead of rb_obj_as_string() for better description.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16290 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-05 02:27:29 +00:00
matz
7243069d29
* compile.c (defined_expr): capture exception during defined?
...
evaluation. a patch from wanabe <s.wanabe at gmail.com> in
[ruby-dev:34461]. [ruby-core:16010]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16118 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-21 02:02:26 +00:00
nobu
64a16b9ede
* vm_core.h (struct iseq_compile_data): moved label_no from
...
new_label_body().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16096 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-20 06:01:28 +00:00
nobu
36f984b65e
* compile.c (iseq_set_exception_table): allocates catch_table only
...
when entries exist.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16095 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-20 06:00:51 +00:00
nobu
9ddb37f071
* compile.c (struct iseq_link_element, struct iseq_insn_data): made
...
enum for debuggers.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16094 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-20 05:58:59 +00:00
nobu
f4f95b98d4
* compile.c (iseq_compile_each): fix for splat in when and rescue.
...
a patch from wanabe <s.wanabe AT gmail.com> in [ruby-dev:34429].
[ruby-core:14537]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16093 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-20 05:44:47 +00:00
mame
0a2053713b
* enc/trans/utf_16_32.c (fun_so_to_utf_16be, fun_so_to_utf_16le): add
...
parentheses to remove warnings of gcc.
* io.c (rb_io_getc): remove unused variables.
* compile.c (NODE_NEXT, NODE_REDO): remove unused labels.
* ext/nkf/nkf.c (rb_nkf_convert): remove unused variables.
* ext/syck/rubyext.c (syck_resolver_initialize,
syck_resolver_detect_implicit, syck_emitter_emit): remove unused
variables.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16061 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-17 13:22:40 +00:00
nobu
6866bce757
* compile.c, compile.h (compile_debug): made runtime option.
...
* debug.c (ruby_debug_print_indent): returns if debug_level exceeds
the threashold.
* debug.c (ruby_debug_printf): printf to stderr.
* iseq.c (make_compile_option, make_compile_option_value): added
debug_level option.
* vm_core.h (rb_compile_option_t): added debug_level.
* vm_core.h (struct iseq_compile_data): added node_level.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16003 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-14 05:34:04 +00:00
nobu
7b4a171158
* eval.c (ruby_exec_node, ruby_run_node), ruby.c (process_options):
...
use iseq instead of NODE.
* gc.c (source_filenames): removed.
* include/ruby/intern.h, parse.y (yycompile, parser_mark, parser_free,
ripper_initialize): rb_source_filename() is no longer used.
* compile.c, compile.h (ERROR_ARGS), parse.y (node_newnode, fixpos,
parser_warn, e_option_supplied, warn_unless_e_option, range_op,
cond0): nd_file is no longer used.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15983 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-12 03:41:51 +00:00
nobu
5c1926ac82
* compile.c (iseq_set_sequence, iseq_insns_unification,
...
insn_data_to_s_detail): constified.
* iseq.c (insn_operand_intern, ruby_iseq_disasm_insn): ditto.
* template/{insns_info,opt_sc,optunifs}.inc.tmpl: ditto.
* tool/instruction.rb (OptUnifsIncGenerator): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15889 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-03 00:00:48 +00:00
nobu
708e5ddde6
* compile.c (defined_expr): false short-circuit destination label may
...
be needed. [ruby-talk:295296]
* compile.c (iseq_compile_each): put nil if false short-circuit is
created.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15836 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-03-25 06:26:32 +00:00
nobu
f2025c33ff
* compile.c (compile_massign_opt): no need to use alloca.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15835 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-03-25 06:09:38 +00:00
matz
588d870234
* include/ruby/node.h (NODE_FL_NEWLINE): renamed from NODE_NEWLINE
...
to denote its a flag. [ruby-core:15529]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15537 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-02-18 05:33:01 +00:00
akr
d5c8ad5359
* insns.def (toregexp): generate a regexp from strings instead of one
...
string.
* re.c (rb_reg_new_ary): defined for toregexp. it concatenates
strings after each string is preprocessed.
* compile.c (compile_dstr_fragments): split from compile_dstr.
(compile_dstr): call compile_dstr_fragments.
(compile_dregx): defined for dynamic regexp.
(iseq_compile_each): use compile_dregx for dynamic regexp.
[ruby-dev:33400]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15311 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-29 08:03:51 +00:00
ko1
51ea2cf4e4
* compile.c (iseq_compile_each): validate argument expr of "next"
...
statement.
* bootstraptest/test_syntax.rb: add a test.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15252 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-26 08:44:43 +00:00
ko1
3b1c663ed9
* compile.c, compile.h: fix to calculate correct stack depth
...
at each instruction.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15251 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-26 08:27:00 +00:00
ko1
13b5b22ae6
* compile.c, compile.h: fix stack pointer issues.
...
calculate correct stack depth at compile time.
* insns.def (emptstack): remove it and add a new insn "adjuststack".
* bootstraptest/test_knownbug.rb: move/remove fixed test.
* bootstraptest/test_syntax.rb: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15245 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-25 18:02:01 +00:00
nobu
893ee30978
* compile.c (iseq_build_from_ary), iseq.c (iseq_load): fix for format change.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14943 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-08 04:05:59 +00:00
akr
6cdef2dc7e
* $Date$ keyword removed to avoid inclusion of locale dependent
...
string.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14912 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-06 15:49:38 +00:00
ko1
633df8de16
* compile.c (iseq_compile_each): fix stack consistency error
...
(break is compiled to throw instead of jump insn).
these problems are reported by Yusuke ENDOH <mame AT tsg.ne.jp>
* bootstraptest/test_knownbug.rb, test_syntax.rb: move fixed test.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14699 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-25 12:37:16 +00:00
ko1
1af43d329f
* compile.c (iseq_compile_each): fix stack consistency error.
...
a patch from Yusuke ENDOH <mame AT tsg.ne.jp> [ruby-dev:32720]
* bootstraptest/test_syntax.rb: add 2 tests for above.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14643 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-25 02:24:12 +00:00
ko1
95ca3f72a8
* compile.c (iseq_compile): clear local table if node == 0.
...
a patch from Yusuke ENDOH <mame AT tsg.ne.jp>
* vm.c: clear VM stack.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14632 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-24 20:27:10 +00:00
ko1
e885517639
* compile.c (iseq_compile_each): fix stack consistency bug.
...
a patch from Yusuke ENDOH <mame AT tsg.ne.jp>
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14629 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-24 18:54:52 +00:00
ko1
105e00bdd7
* compile.c (iseq_compile_each): add a "pop" insn after break
...
to fix stack consistency error. [ruby-core:14385]
* bootstraptest/test_syntax.rb: add tests for above.
* bootstraptest/test_knownbug.rb: remove fixed bug.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14623 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-24 17:41:29 +00:00
matz
fda0ef6f04
* id.c (Init_id): remove several unused symbols. [ruby-core:14362]
...
* compile.c (iseq_specialized_instruction): do not use
VM_CALL_SEND_BANG flag any longer.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14622 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-24 17:05:38 +00:00
matz
6ca558d6ab
* proc.c (method_name): preserve Symbol's encoding.
...
* numeric.c (fix_id2name): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14620 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-24 16:38:44 +00:00
ko1
e613c7cf5f
* compile.c: remove "illegal".
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14388 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-21 03:27:31 +00:00
akr
4cf437519f
* regerror.c, string.c, io.c, lib/getoptlong.rb, lib/net/imap.rb,
...
compile.c, sprintf.c, parse.y, ext/win32ole/win32ole.c,
ext/tk/sample/demos-en/entry3.rb, ext/tk/lib/tcltk.rb,
ext/openssl/ossl_bn.c, numeric.c, vm.c,
benchmark/bm_so_meteor_contest.rb, bignum.c, ruby.c: don't "illegal"
for non law violation context.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14377 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-21 02:31:11 +00:00
ko1
f5e7602c33
* compile.c (iseq_compile_each/NODE_RETURN): fix stack consistency.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14351 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-20 00:46:12 +00:00
ko1
5485df3e10
* compile.c (iseq_compile_each): add pop after throw as return.
...
* bootstraptest/test_knownbug.rb, test_syntax.rb: move resolved test.
* vm_core.h, iseq.c, compile.h: add debug output code.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14348 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-19 21:39:08 +00:00
ko1
10b933295a
* compile.c (iseq_compile_each): remove unused retry entry.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14347 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-19 19:58:58 +00:00
nobu
a927483326
* compile.c (iseq_compile_each): should handle upper level eval iseq
...
from break/next, and COMPILE_ERROR() breaks only one block.
[ruby-dev:31372]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14339 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-19 16:10:54 +00:00
ko1
860b40fd63
* compile.c (iseq_compile_each): remove "retry" in block.
...
("iter{retry}" cause syntax error)
Currently, "begin; ...; rescue; iter{retry}; end" cause
syntax error too.
* bootstraptest/test_jump.rb: ditto.
* lib/drb/invokemethod.rb: ditto.
* sample/drb/darrayc.rb: ditto.
* sample/test.rb: ditto.
* test/drb/drbtest.rb: ditto.
* test/ruby/test_iterator.rb: ditto.
* sample/test.rb: add a 'test' directory on the SYSTEM test.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14326 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-19 08:46:49 +00:00
nobu
63fabd365a
* compile.c (iseq_compile_each): fix for segfault. [ruby-dev:31372]
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14308 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-18 14:53:55 +00:00
ko1
cd84310864
* compile.c, insnhelper.ci, insns.def, object.c, vm.c, vm.h:
...
optimize !@, != method invocation.
* id.c, id.h: ditto.
* bootstraptest/test_syntax.rb: add tests for above.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14299 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-18 12:07:51 +00:00
matz
9d8075b99c
* parse.y (expr): redefinable not (!) operator.
...
* parse.y (arg): ditto.
* object.c (rb_obj_not): new method "!".
* object.c (rb_obj_not_equal): new method "!=".
* object.c (rb_obj_not_match): new method "!~".
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14162 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-09 16:39:49 +00:00
akr
0bb9c3e6d9
unused variables removed.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14138 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-08 09:24:52 +00:00
ko1
9c1e3d00d5
* compile.c (iseq_compile_each): fix typo.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14106 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-05 05:25:58 +00:00
ko1
0cdd3bced5
* compile.c (iseq_compile_each): "when *[],1" dumps core.
...
a patch from Yusuke ENDOH <mame AT tsg.ne.jp>. [ruby-dev:32350]
* bootstraptest/test_syntax.rb: add a test for above.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14033 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-27 06:54:58 +00:00
ko1
1bed0ccca8
* compile.c (iseq_compile_each): "a[*b] += 1" dumps core.
...
a patch from Yusuke ENDOH <mame AT tsg.ne.jp>. [ruby-dev:32354]
* bootstraptest/test_syntax.rb: add a test for above.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14032 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-27 06:45:01 +00:00