aboutsummaryrefslogtreecommitdiffstats
path: root/ChangeLog
Commit message (Collapse)AuthorAgeFilesLines
* * vm_core.h: remove VM_FRAME_MAGIC_FINISH (finish frame type).ko12012-06-151-0/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before this commit: `finish frame' was place holder which indicates that VM loop needs to return function. If a C method calls a Ruby methods (a method written by Ruby), then VM loop will be (re-)invoked. When the Ruby method returns, then also VM loop should be escaped. `finish frame' has only one instruction `finish', which returns VM loop function. VM loop function executes `finish' instruction, then VM loop function returns itself. With such mechanism, `leave' instruction (which returns one frame from current scope) doesn't need to check that this `leave' should also return from VM loop function. Strictly, one branch can be removed from `leave' instructon. Consideration: However, pushing the `finish frame' needs costs because it needs several memory accesses. The number of pushing `finish frame' is greater than I had assumed. Of course, pushing `finish frame' consumes additional control frame. Moreover, recent processors has good branch prediction, with which we can ignore such trivial checking. After this commit: Finally, I decide to remove `finish frame' and `finish' instruction. Some parts of VM depend on `finish frame', so the new frame flag VM_FRAME_FLAG_FINISH is introduced. If this frame should escape from VM function loop, then the result of VM_FRAME_TYPE_FINISH_P(cfp) is true. `leave' instruction checks this flag every time. I measured performance on it. However on my environments, it improves some benchmarks and slows some benchmarks down. Maybe it is because of C compiler optimization parameters. I'll re-visit here if this cause problems. * insns.def (leave, finish): remove finish instruction. * vm.c, vm_eval.c, vm_exec.c, vm_backtrace.c, vm_dump.c: apply above changes. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36099 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Revert r35576 "lib/test/unit.rb: refactoring puke"nobu2012-06-151-0/+5
| | | | | | | * lib/test/unit.rb (Test::Unit::Runner#puke): always add skipped results to the report for parallel test. [Bug #6595] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36098 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * nacl/pepper_main.c: Removed an unnecessary and errorneous inclusion.yugui2012-06-151-0/+4
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36092 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* fix typoskazu2012-06-141-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36091 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* fix CPPOUTFILEnobu2012-06-141-1/+5
| | | | | | | | * configure.in (RUBY_CPPOUTFILE): check if output is really sent to specified file to tell if -o option works. [ruby-dev:45742] [Bug#6591] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36087 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* fix CPPOUTFILEnobu2012-06-141-0/+5
| | | | | | | * configure.in (RUBY_CPPOUTFILE): check if output file is actually created. [ruby-dev:45742] [Bug#6591] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36086 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * process.c (proc_exec_sh): don't strip leading spaces of the script.akr2012-06-141-0/+4
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36085 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * file.c (rb_file_s_basename, rb_file_s_dirname): documentaion fix.usa2012-06-141-0/+5
| | | | | | | File.basename and File.dirname support File::ALT_SEPARATOR. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36084 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * nacl/pepper_maini.c: Applies the new embedding API to pepper_ruby.yugui2012-06-141-0/+4
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36080 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Embedding CRuby interpreter without internal headers has been difficultyugui2012-06-141-0/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | for few years because: * NODE is no longer accessible. * rb_iseq_eval_main crashes without preparing with rb_thread_t. * some existing APIs calls exit(3) without giving the opportunity to finalize or handle errors to the client. * No general-purpose function to compile a source to an iseq are published in the public headers. This commit solves the problems. * include/ruby/ruby.h: Grouped APIs for embedding CRuby interpreter. (ruby_setup, ruby_compile_main_from_file, ruby_compile_main_from_string, ruby_eval_main, ruby_set_script_name): new APIs to embed CRuby. (ruby_opaque_t) Opaque pointer to an internal data, to NODE or iseq in particular. * eval.c (ruby_setup): Similar to ruby_init but returns an error code instead of exit(3) on error. (ruby_eval_main): Similar to ruby_exec_node but returns the evaluation result. (ruby_eval_main_internal): renamed from ruby_exec_internal. * ruby.c (toplevel_context): new helper function. (PREPARE_EVAL_MAIN): moved. (process_options): refactored with new functions. (parse_and_compile_main) new helper funciton. (ruby_compile_main_from_file, ruby_compile_main_from_string) new API (ruby_set_script_name): new API. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36079 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * eval.c: Add doxygen comments.yugui2012-06-141-0/+12
| | | | | | | | | | | | * ruby.c: ditto. * thread_pthread.c: ditto * version.c: ditto. * vm_core.h: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36078 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * configure.in: revert r36071 and add NetBSD to blacklist of -ansi.naruse2012-06-141-0/+4
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36077 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * thread_pthread.c (get_stack): Linux is the only OS which includesnaruse2012-06-131-0/+5
| | | | | | the size of guard page into the stack size. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36076 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * lib/drb/drb.rb: Replace broken links to the English DRb book.drbrain2012-06-131-0/+5
| | | | | | | Patch by Zachary Scott. [ruby-trunk - Bug #6544] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36075 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * lib/observer.rb: Update broken link to the Programming Ruby book.drbrain2012-06-131-0/+6
| | | | | | | | Patch by Zachary Scott. [ruby-trunk - Bug #6536] * lib/drb/drb.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36074 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * regparse.c (PFETCH_READY): suppress Wunused-but-set-variable.naruse2012-06-131-0/+7
| | | | | | | * regparse.c (is_onechar_cclass): restructured to clarify that c is used iff found == 1. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36072 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * configure.in: use -fbuiltin with -ansi -std=iso9899:199409.naruse2012-06-131-0/+8
| | | | | | | | | This prevents errors introduced by disabling bulitin functions, which is the sub-effect of -ansi/-std. Now NetBSD can use -ansi -std=iso9899:199409. Maybe mingw, cygwin and darwin can also. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36071 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * Makefile.in: don't remove macros. now name2ctype uses macros.naruse2012-06-131-0/+10
| | | | | | | | | | * tool/enc-unicode.rb: add comment why it uses Hash#index. * enc/unicode/{name2ctype.kwd,name2ctype.src,name2ctype.h.blt}: update to follow the current name2ctype.h. FYI current Unicode version is 6.1. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36070 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * lib/net/http/responses.rb, lib/webrick/httpstatus.rb: Add HTTPknu2012-06-131-0/+15
| | | | | | | | | | | | | | | | response codes added in RFCs 2817 and 4918. [ruby-core:45547] [Feature #6569] * lib/net/http/responses.rb: Rename Net::HTTPMultipleChoice to Net::HTTPMultipleChoices, leaving the former as alias to the latter for backward compatibitily. [ruby-core:45547] [Feature #6569] * lib/net/http/responses.rb: Add comments about unused, still-in-draft and private extension response codes. [ruby-core:45547] [Feature #6569] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36068 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * test/dl/test_func.rb (test_qsort1, test_qsort2): use TYPE_SIZE_Tngoto2012-06-131-0/+5
| | | | | | | for size_t variables. [ruby-dev:45733] [Bug #6584] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36066 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* configure.in: option for darwinnobu2012-06-131-0/+5
| | | | | | | * configure.in: remove -ansi and -std options for lgamma_r() and finite(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36065 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* configure.in: option for cygwinnobu2012-06-131-0/+5
| | | | | | | * configure.in: cygwin does not provide some declarations in strict ANSI mode. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36064 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * process.c (rb_fork_internal): move a variable declaration.akr2012-06-131-0/+4
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36061 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * regparse.c (PFETCH_READY): this line was to suppress warning,shyouhei2012-06-131-0/+6
| | | | | | | | but did emit warnings if -Wuninitialized was set. Assigning NULL instead if pfetch_prev should suffice the situation. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36060 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* configure.in: option for cygwinnobu2012-06-131-0/+5
| | | | | | | | * configure.in: cygwin needs C99 for some stuff, e.g., pthread_attr_setstacksize, sched_yield. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36059 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Makefile.in: warnflagsnobu2012-06-131-0/+5
| | | | | | | | * Makefile.in (.c.i): add warnflags to make the result consistent with compilation. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36058 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * configure.in: On Windows platforms, system provided headers areshyouhei2012-06-131-0/+8
| | | | | | | | | | VC++ optimized. That is, C++ habits are often contaminated into various headers. Most frequent situation is the use of // comments. We bypass ANSI C mode for them. Otherwise extension libs cannot include those headers. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36056 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* include/ruby/win32.h: fix comment stylenobu2012-06-131-0/+4
| | | | | | | * include/ruby/win32.h: get rid of C99 style one line comments. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36055 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* encoding.c: strdup macronobu2012-06-131-0/+4
| | | | | | | * encoding.c (enc_alias_internal): use strdup defined as macro. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36054 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* process.c: no SIZE_T_MAXnobu2012-06-131-1/+4
| | | | | | | | * process.c (rb_exec_fillarg): get rid of SIZE_T_MAX which may need more headers. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36051 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* process.c: fix array element sizenobu2012-06-131-1/+4
| | | | | | | | * process.c (rb_exec_fillarg): fix array element size. "continue" and "readonly" exceeded the size. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36050 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* process.c: use shell for reserved or special built-innobu2012-06-131-1/+5
| | | | | | | | | * process.c (rb_exec_fillarg): use shell if the first word is reserved or special built-in name. http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36049 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* process.c: treat '=' only in the first wordnobu2012-06-131-0/+6
| | | | | | | | | * process.c (rb_exec_fillarg): treat '=' only in the first word. if the first word does not contain '=', it is the command name and environment assignments cannot be anymore. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36048 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * lib/mkmf.rb: add dummy clean-static target to prevent errors for thenaruse2012-06-121-0/+5
| | | | | | case real clean-static target doesn't exist. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36045 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * process.c (rb_exec_arg_fixup): fix compile errorngoto2012-06-121-0/+4
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36044 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* fix a typo.akr2012-06-121-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36043 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * process.c (rb_exec_fillarg): treat '=' character as an metaakr2012-06-121-0/+5
| | | | | | | | character to detect assignments preceding command name. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36041 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/intern.h (rb_exec_arg_init): deprecated.akr2012-06-121-0/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (rb_exec_arg_addopt): ditto. (rb_exec_arg_fixup): ditto. (rb_run_exec_options): ditto. (rb_run_exec_options_err): ditto. * internal.h (rb_execarg_init): declared. (rb_execarg_addopt): ditto. (rb_execarg_fixup): ditto. (rb_execarg_run_options): ditto. * process.c: call rb_execarg_addopt, rb_execarg_fixup, rb_execarg_run_options, rb_execarg_init. (rb_execarg_addopt): renamed from rb_exec_arg_addopt. (rb_exec_arg_addopt): stub to call rb_execarg_addopt. (rb_execarg_init): renamed from rb_exec_arg_init. (rb_exec_arg_init): stub to call rb_execarg_init. (rb_execarg_fixup): renamed from rb_exec_arg_fixup. (rb_exec_arg_fixup): stub to call rb_execarg_fixup. (rb_execarg_run_options): renamed from rb_run_exec_options_err. (rb_run_exec_options_err): stub to call rb_execarg_run_options. (rb_run_exec_options): call rb_execarg_run_options. * io.c: call rb_execarg_addopt, rb_execarg_fixup, rb_execarg_run_options, rb_execarg_init. * ext/pty/pty.c (establishShell): call rb_execarg_init and rb_execarg_fixup. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36039 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * configure.in: enable strict ANSI mode by default in case of GCC,shyouhei2012-06-121-0/+5
| | | | | | | requested by _ko1. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36038 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * process.c (rb_exec_fillarg): detect '#' as a meta character.akr2012-06-111-0/+4
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36036 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * include/ruby/intern.h (rb_proc_exec_n): deprecated.akr2012-06-111-0/+8
| | | | | | | | | | (rb_exec): ditto. (rb_exec_err): ditto. (rb_fork): ditto. (rb_fork_err): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36035 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * configure.in: on checking libexecinfo, don't specify /use/local.naruse2012-06-111-0/+5
| | | | | | On FreeBSD people must specify --with-opt-dir or --with-execinfo-dir. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36032 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * vm_core.h: remove lfp (local frame pointer) and renameko12012-06-111-0/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | dfp (dynamic frame pointer) to ep (environment pointer). This change make VM `normal' (similar to other interpreters). Before this commit: Each frame has two env pointers lfp and dfp. lfp points local environment which is method/class/toplevel frame. lfp[0] is block pointer. dfp is block local frame. dfp[0] points previous (parent) environment pointer. lfp == dfp when frame is method/class/toplevel. You can get lfp from dfp by traversing previous environment pointers. After this commit: Each frame has only `ep' to point respective enviornoment. If there is parent environment, then ep[0] points parent envioenment (as dfp). If there are no more environment, then ep[0] points block pointer (as lfp). We call such ep as `LEP' (local EP). We add some macros to get LEP and to detect LEP or not. In short, we replace dfp and lfp with ep and LEP. rb_block_t and rb_binding_t member `lfp' and `dfp' are removed and member `ep' is added. rename rb_thread_t's member `local_lfp' and `local_svar' to `root_lep' and `root_svar'. (VM_EP_PREV_EP(ep)): get previous environment pointer. This macro assume that ep is not LEP. (VM_EP_BLOCK_PTR(ep)): get block pointer. This macro assume that ep is LEP. (VM_EP_LEP_P(ep)): detect ep is LEP or not. (VM_ENVVAL_BLOCK_PTR(ptr)): make block pointer. (VM_ENVVAL_BLOCK_PTR_P(v)): detect v is block pointer. (VM_ENVVAL_PREV_EP_PTR(ptr)): make prev environment pointer. (VM_ENVVAL_PREV_EP_PTR_P(v)): detect v is prev env pointer. * vm.c: apply above changes. (VM_EP_LEP(ep)): get LEP. (VM_CF_LEP(cfp)): get LEP of cfp->ep. (VM_CF_PREV_EP(cfp)): utility function VM_EP_PREV_EP(cfp->ep). (VM_CF_BLOCK_PTR(cfp)): utility function VM_EP_BLOCK_PTR(cfp->ep). * vm.c, vm_eval.c, vm_insnhelper.c, vm_insnhelper.h, insns.def: apply above changes. * cont.c: ditto. * eval.c, eval_intern.h: ditto. * proc.c: ditto. * thread.c: ditto. * vm_dump.c: ditto. * vm_exec.h: fix function name (on vm debug mode). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36030 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * compile.c (iseq_set_sequence): nonstatic initializer of anshyouhei2012-06-111-0/+10
| | | | | | | | | | | | aggregate type is a C99ism. * compile.c (enum compile_array_type_t): comma at the end of enum list is a C99ism. * vm_backtrace.c (enum LOCATION_TYPE): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36029 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * process.c (rb_proc_exec_n): revert the function removed at r35889.akr2012-06-101-0/+4
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36028 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * thread_pthread.c (rb_thread_create_timer_thread): assign returnnaruse2012-06-101-0/+5
| | | | | | value to the variable err. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36027 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * thread_pthread.c (native_cond_initialize): fix typo in r36022.naruse2012-06-101-0/+6
| | | | | | | this cause a failure on FreeBSD 8.2 amd64. http://fbsd.rubyci.org/~chkbuild/ruby-trunk/log/20120610T130201Z.diff.html.gz git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36026 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * .gdbinit (SDR): add SDR function. It's only for VM debugging.ko12012-06-101-0/+4
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36024 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * nacl/nacl_config.rb: Fixed for 32bit hosts.yugui2012-06-101-0/+4
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36023 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Fixes threading on NativeClient.yugui2012-06-101-0/+12
| | | | | | | | | | | | * thread_pthread.c (timer_thread_sleep): Extracted out a function from thread_timer(). Added an alternative implementation for platforms that lacks select(2) or pipe(2). (rb_thread_create_timer_thread, native_cond_initialize, native_cond_destroy): Replaced wrong HAVE_XXX checks. * configure.in (pthread_attr_init): New check. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36022 b2dd03c8-39d4-4d8f-98ff-823fe69b080e