summaryrefslogtreecommitdiff
path: root/include/ruby/ruby.h
AgeCommit message (Collapse)Author
2012-10-20* include/ruby/ruby.h: add C APIs.nari
VALUE rb_newobj_of(VALUE klass, VALUE flags) #define NEWOBJ_OF(obj,type,klass,flags) These allow to change a allocation strategy depending on klass or flags. * gc.c: ditto * array.c: use new C API. * bignum.c: ditto * class.c: ditto * complex.c: ditto * ext/socket/ancdata.c: ditto * ext/socket/option.c: ditto * hash.c: ditto * io.c: ditto * marshal.c: ditto * numeric.c: ditto * object.c: ditto * random.c: ditto * range.c: ditto * rational.c: ditto * re.c: ditto * string.c: ditto * struct.c: ditto [Feature #7177][Feature #7047] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37275 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-10-18* include/ruby/ruby.h: add a decl. ofko1
`rb_define_frameless_method()'. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37254 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-09-06.gdbinit: FLONUM supportnobu
* .gdbinit (rp): FLONUM support. * include/ruby/ruby.h (ruby_special_consts): define FLONUM constants always, so that they are available from gdb. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36917 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-09-06ruby.h: merge FLONUM and non-FLONUMnobu
* include/ruby/ruby.h (RB_FLOAT_TYPE_P): merge FLONUM and non-FLONUM versions. inline TYPE() comparison and FLONUM_P() should be optimized away on non-FLONUM. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36916 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-09-03ruby.h: suppress warningsnobu
* include/ruby/ruby.h (rb_float_value): suppress warnings. [ruby-core:47406][Bug #6971] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36890 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-08-27* include/ruby/ruby.h (rb_float_value): optimize it.ko1
This technique was pointed by shinichiro.hamaji <http://shinh.skr.jp/m/?date=20120825#p02>. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36832 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-08-24ruby.h: clear expressionnobu
* include/ruby/ruby.h (rb_float_new): suppress bitwise-op-parentheses warning, and zero-expand to VALUE before bit negation to get rid of confusion. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36819 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-08-23* include/ruby/ruby.h: introduce flonum technique forko1
64bit CPU environment (sizeof(double) == sizeof(VALUE)). flonum technique enables to avoid double object creation if the double value d is in range about between 1.72723e-77 < |d| <= 1.15792e+77 or 0.0. flonum Float value is immediate and their lowest two bits are b10. If flonum is activated, then USE_FLONUM macro is 1. I'll write detailed in this technique on https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/Flonum_tech * benchmark/bmx_temp.rb: add an benchmark for simple Float calculation. * gc.c (id2ref, rb_obj_id): add flonum Float support. * include/ruby/intern.h: move decl of rb_float_new(double) to include/ruby/ruby.h. * insns.def, vm.c, vm_insnhelper.c: add flonum optimization and simplify source code. * vm_insnhelper.h (FLONUM_2_P): added. * marshal.c: support flonum output. * numeric.c (rb_float_new_in_heap): added. * parse.y: support flonum. * random.c: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36798 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-08-16* vm_trace.c, vm_core.h: simplify tracing mechanism.ko1
(1) add rb_hook_list_t data structure which includes hooks, events (flag) and `need_clean' flag. If the last flag is true, then clean the hooks list. In other words, deleted hooks are contained by `hooks'. Cleanup process should run before traversing the list. (2) Change check mechanism See EXEC_EVENT_HOOK() in vm_core.h. (3) Add `raw' hooks APIs Normal hooks are guarded from exception by rb_protect(). However, this protection is overhead for too simple functions which never cause exceptions. `raw' hooks are executed without protection and faster. Now, we only provide registration APIs. All `raw' hooks are kicked under protection (same as normal hooks). * include/ruby/ruby.h: remove internal data definition and macros. * internal.h (ruby_suppress_tracing), vm_trace.c: rename ruby_suppress_tracing() to rb_suppress_tracing() and remove unused function parameter. * parse.y: fix to use renamed rb_suppress_tracing(). * thread.c (thread_create_core): no need to set RUBY_VM_VM. * vm.c (mark_event_hooks): move definition to vm_trace.c. * vm.c (ruby_vm_event_flags): add a global variable. This global variable represents all of Threads and VM's event masks (T1#events | T2#events | ... | VM#events). You can check the possibility kick trace func or not with ruby_vm_event_flags. ruby_vm_event_flags is maintained by vm_trace.c. * cont.c (fiber_switch, rb_cont_call): restore tracing status. [Feature #4347] * test/ruby/test_continuation.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36715 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-08-06* include/ruby/ruby.h, eval.c, vm_insnhelper.c: fix typo.shugo
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36639 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-08-05ruby.h: rb_num2ulong_inlinenobu
* include/ruby/ruby.h (NUM2ULONG): optimize by inline as well as NUM2LONG, and cast to unsigned long explicitly for the platforms where SIZEOF_VALUE is larger than SIZEOF_LONG. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36631 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-08-05ruby.h: fix castnobu
* include/ruby/ruby.h (NUM2SSIZET): fix type to cast. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36629 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-08-02* eval.c (rb_mod_using): new method Module#using. [experimental]shugo
* eval.c (rb_mod_refine): new method Module#refine. [experimental] * eval.c (f_using): new method Kernel#using. [experimental] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36596 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-11Reverts a half of r36079. As we discussed on ruby-dev@ and IRC,yugui
we do not need to disclose intermediate representation of program. The program embedding CRuby should use rb_eval_string family. * include/ruby/ruby.h (ruby_opaque_t): removed. (ruby_compile_main_from_file, ruby_compile_main_from_string, ruby_eval_main): removed. * eval.c (ruby_eval_main_internal): became ruby_exec_internal() again. (ruby_eval_main): removed. * ruby.c (PREPARE_PARSE_MAIN) reverted. (parse_and_compile_main, ruby_compile_main_from_file, ruby_compile_main_from_string): removed git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36362 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-07-09* include/ruby/ruby.h: Removed RUBY_GLOBAL_SETUP complely. It iskosaki
no meaning definition since r24894. * main.c: ditto. * nacl/pepper_main.c: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36348 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-27Module#prependnobu
* class.c (rb_prepend_module): prepend module into another module. * eval.c (rb_mod_prepend): new method Module#prepend. [Feature #1102] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36234 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-14fix r36079nobu
* include/ruby/ruby.h: public symbols must have default visibility. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36081 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-14Embedding CRuby interpreter without internal headers has been difficultyugui
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
2012-05-24Feature #5896nobu
* vsnprintf.c (BSD_vfprintf): [EXPERIMENTAL] object representation in rb_enc_vsprintf(). [Feature #5896] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35776 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-24* error.c: new functions to deal exceptions with string instances.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34787 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-24* configure.in (__builtin_unreachable): check for clang.nobu
[ruby-core:42849] * include/ruby/ruby.h (UNREACHABLE): fallback definition. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34784 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-12* include/ruby/ruby.h (rb_event_hook_func_t): add argument names.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34575 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-24* vm.c (rb_iter_break_value): new function to break a block withnobu
the value. [ruby-dev:45132] [Feature #5895] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34369 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-21* include/ruby/ruby.h (FIXNUM_P): simple flag should be int.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34351 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-07* gc.c: use Bitmap Marking algorithm to avoid copy-on-write ofnari
memory pages. See [ruby-dev:45085] [Feature #5839] [ruby-core:41916]. * include/ruby/ruby.h : FL_MARK rename to FL_RESERVED1. * node.h : ditto. * debug.c : ditto. * object.c (rb_obj_clone): FL_MARK move to a bitmap. * class.c (rb_singleton_class_clone): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34225 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-28* include/ruby/ruby.h: fix #error pragma. LLP64 platform is supported.nagachika
* include/ruby/st.h: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34153 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-15* include/ruby/ruby.h(NUM2LONG, NUM2INT, NUM2SHORT, NUM2LL,kosaki
INT2NUM, UINT2NUM, LONG2NUM, ULONG2NUM, NUM2CHR): wrap by macros. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33759 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-15* include/ruby/ruby.h: get rid of gcc specific rb_long2int(),kosaki
NUM2LONG(), NUM2INT(), NUM2SHORT(), NUM2LL(), INT2NUM(), UINT2NUM(), LONG2NUM(), ULONG2NUM() and NUM2CHR() implementation. Because 1) They don't make any better code at all. 2) Inline function have a better debugger supoort. 3) If they become to make better code in the future, they might make cross compiler ABI compatibility issue. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33756 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-14* include/ruby/ruby.h: add #ifdef comment.kosaki
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33744 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-14* include/ruby/ruby.h: add NUM2SHORT(), NUM2USHORT() macros.kosaki
* numeric.c: ditto. * test/-ext-/num2int/test_num2int.rb: add testcases for NUM2SHORT(). * ext/-test-/num2int/num2int.c: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33743 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-08* include/ruby/ruby.h (rb_long2int): define as a macro always, sonobu
that cpp conditionals can tell if it is provided. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33670 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-10-27* include/ruby/ruby.h (SIZE_MAX): define SIZE_MAX if not defined.naruse
patched by The Written Word Inc. [ruby-core:40422] [Bug #5489] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33532 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-26* parse.y (rb_check_id): make the given name a symbol or a string.nobu
based on the second patch by Jeremy Evans at [ruby-core:38447] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32684 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-22* object.c (rb_mod_{const,cvar}_defined, rb_obj_ivar_defined):nobu
avoid inadvertent symbol creation in reflection methods. based on a patch by Jeremy Evans at [ruby-core:38367]. [Feature #5072] * vm_method.c (rb_mod_method_defined) (rb_mod_{public,private,protected}_method_defined) (obj_respond_to): ditto. * parse.y (rb_check_id): new function returns already interned ID or 0. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32621 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-18* include/ruby/backward/classext.h: for evil gems. fixed #4803nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32162 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-18* internal.h: add for internal use only.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31627 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-04-10* include/ruby/ruby.h: parenthesize macro arguments.akr
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31256 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-03-17* include/ruby/ruby.h (rb_funcall_passing_block): add prototype.nobu
a patch by James M. Lawrence at [ruby-core:35501] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31119 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-02-03* include/ruby/missing.h: don't use HAVE_STDDEF_H because it nevernaruse
defined by configure though configure.bat defines it. * include/ruby/ruby.h: move include stddef.h to defines.h * include/ruby/defines.h: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30770 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-29 * include/ruby/ruby.h: Added NUM2MODET() and MODET2NUM() default definition.kosaki
Because r30686 introduced win32 build failure. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30723 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-01-26* include/ruby/ruby.h (ALLOCV): new API for exception-safenobu
temporary buffer. [ruby-core:34844] * string.c (rb_alloc_tmp_buffer, rb_free_tmp_buffer): implementation of the API. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30661 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-11* fix type warnings.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29745 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-11* include/ruby/ruby.h (PRI_LL_PREFIX): format type specifier fornobu
LONG_LONG may vary on platforms. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29741 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-11-08* error.c (rb_syserr_new): new function to make SystemCallErrornobu
instance without errno. [EXPERIMENTAL] * error.c (rb_syserr_fail, rb_mod_syserr_fail): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29728 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-27* include/ruby/ruby.h (NUM2LONG_internal): add cast to get rid of ausa
non GCC compiler warning. this is intentional type conversion. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29605 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-26* class.c, gc.c, object.c, variable.c, vm_insnhelper.c,mame
include/ruby/ruby.h: separate RCLASS_CONST_TBL from RCLASS_IV_TBL. RCLASS_IV_TBL has contained not only instance variable table but also constant table. Now the two table are separated to RCLASS_CONST_TBL and RCLASS_IV_TBL. This is a preparation for private constant (see [ruby-dev:39685][ruby-core:32698]). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29600 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-15* include/ruby/ruby.h (VALUE): prefer long over uintptr_t,nobu
FIX2LONG expects VALUE to be long at least. * include/ruby/ruby.h (FIX2LONG): parenthesize the argument. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29506 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-13* include/ruby/ruby.h (ruby_executable_node): missing prototype.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29476 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-10-12* configure.in (RUBY_CHECK_PRINTF_PREFIX): check for printf formatnobu
specifier if possible. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29468 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-08-22* include/ruby/ruby.h (UINT2NUM): fix ifdef condition for LLP64.akr
reported by Daniel Gutmanas. [ruby-core:31778] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29068 b2dd03c8-39d4-4d8f-98ff-823fe69b080e