summaryrefslogtreecommitdiffhomepage
path: root/src/class.c
AgeCommit message (Collapse)Author
2017-08-01Better class name management.Yukihiro "Matz" Matsumoto
The change removes several internal instance variables used by class name management. The variables `__classid__` and `__classpath__` are no longer available. `__outer__` is used only for unnamed outer classes/modules (and will be removed after they are named). [Important note] Along with this change we removed several public functions. - mrb_class_outer_module() - mrb_class_sym() We believe no one have used those functions, but if you do, please ask us for the workaround.
2017-08-01Cosmetic changes (removing spaces before `*` in return types).Yukihiro "Matz" Matsumoto
2017-08-01Move naming unnamed classes/modulesYukihiro "Matz" Matsumoto
From `mrb_mod_const_set` to `mrb_const_set`.
2017-08-01Implements `Module::nesting' (15.2.2.3.2); ref #600, #3200Yukihiro "Matz" Matsumoto
2017-07-28Extended Module#const_get to support class pathsChristopher Aue
2017-07-27Embed small size array elements in the heap.Yukihiro "Matz" Matsumoto
It reduces the memory consumption and sometimes improve the performance as well. For example, the consumed memory size of `bench/bm_ao_render.rb` is reduced from 1.2GB to 1GB, and its total execution time become 18.795 sec from 22.229 sec.
2017-07-19Avoid constant-set duplication; ref #3747Yukihiro "Matz" Matsumoto
2017-07-18Fixed Module#to_s and #name for #const_set modulesChristopher Aue
2017-07-12Update `mrb_get_args()` document.Yukihiro "Matz" Matsumoto
2017-07-12Add "*!" argument specifier to avoid stack copying.Yukihiro "Matz" Matsumoto
2017-06-27Copy argv from VM stack to avoid use-after-free; fix #3722Yukihiro "Matz" Matsumoto
2017-05-30Avoid using C++ style comments (//).Yukihiro "Matz" Matsumoto
2017-05-29Mark proc objects representing methods as internal objects; fix #3621Yukihiro "Matz" Matsumoto
2017-05-26Add new range check macro FIXABLE_FLOAT(); ref #3652Yukihiro "Matz" Matsumoto
When MRB_INT64, valid value range of mrb_int is bigger than double, which only has 53 bits significant precision.
2017-04-21Add missing `arg_i++` to fix bug of `s!` in mrb_get_args.take_cheeze
2017-04-12Refactor check before `mrb_class_ptr()`; ref #3602Yukihiro "Matz" Matsumoto
2017-04-12The attached object may not be a class; fix #3602Yukihiro "Matz" Matsumoto
2017-04-06Get constant of parent class even if child class is defined in signleton ↵Kouichi Nakanishi
class; fix #3575
2017-04-03Unify `else` clause styleYukihiro "Matz" Matsumoto
2017-04-03Remove spaces around parensYukihiro "Matz" Matsumoto
2017-03-19`super class error` formats the superclass by `inspect`; rerf #3515Yukihiro "Matz" Matsumoto
2017-03-18Need to setup singleton_class chain; fix #3509Yukihiro "Matz" Matsumoto
2017-03-16Singleton classes do not have outer class set; fix #3505Yukihiro "Matz" Matsumoto
2017-03-10Raise special Exception when exception class is redefined; fix #3493Yukihiro "Matz" Matsumoto
2017-02-15Move #__id__ to BasicObject; ref #3417Yukihiro "Matz" Matsumoto
2017-02-15Move #instance_eval to BasicObject; ref #3417Yukihiro "Matz" Matsumoto
2017-02-15Move #__send__ to BasicObject; ref #3417Yukihiro "Matz" Matsumoto
2017-02-15Move #== and #!= to BasicObject; ref #3417Yukihiro "Matz" Matsumoto
2017-02-15Move BasicObject#method_missing to Kernel#method_missing; ref #3417Yukihiro "Matz" Matsumoto
More compatibility to CRuby. Updated tests that assume old mruby behavior.
2017-02-15Avoid calling hook methods if they are not overridden.Yukihiro "Matz" Matsumoto
2017-01-24Outer class may be same as the class; fix #3382Yukihiro "Matz" Matsumoto
2017-01-12Kernel#initialize should not break existing mt; fix #3397Yukihiro "Matz" Matsumoto
This issue was reported by https://hackerone.com/icanthack The solution is suggested by @clayton-shopify.
2017-01-11Raises Exception if raising exception class is redefinedYukihiro "Matz" Matsumoto
close #3384 This issue was reported by https://hackerone.com/brakhane
2016-12-12should not try to set classpath for frozen classes; ref #3340Yukihiro "Matz" Matsumoto
2016-12-12freeze classes/modules; ref #3340Yukihiro "Matz" Matsumoto
2016-12-04Add symbol type check for Module#undef_methodYukihiro "Matz" Matsumoto
2016-11-30Prohibit instantiation of immediate objectsYukihiro "Matz" Matsumoto
2016-11-24Fix segfault on remove_method with invalid argumentBouke van der Bijl
Reported by https://hackerone.com/jpenalbae
2016-11-17renamed "inline" to "istruct" to represent inline struct; ref #3251Yukihiro "Matz" Matsumoto
2016-11-17inline structures data type for mruby (MRB_TT_INLINE) (fix #3237)Tomasz Dąbrowski
Inline structures have no instance variables, no finalizer, and offer as much space as possible in RBASIC object. This means 24 bytes on 64-bit platforms and 12 bytes on 32-bit platforms. mruby-inline-struct gem is only provided for testing.
2016-11-16Correct argument specifications for few methods:Tomasz Dąbrowski
- Struct#values_at - Module#define_method - String#chop - String#chop!
2016-11-15class/module statement should re-open; fix #3225Yukihiro "Matz" Matsumoto
2016-11-13move mrb_str_dup() to mrb_class_path; ref #2470Yukihiro "Matz" Matsumoto
Class#to_s used to return same string repeatedly, that mean you can modify "class name" by modifying the return value from Class#to_s.
2016-11-11Merge pull request #3224 from ksss/define_methodYukihiro "Matz" Matsumoto
Module#define_method supports proc argument
2016-11-10Renamed class_under_defined to class_defined_underFelix Jones
2016-11-06Added mrb_class_under_definedFelix Jones
2016-10-12Module#define_method supports proc argumentksss
2016-08-20Move Module#include and #prepend to class.c; ref #3197Yukihiro "Matz" Matsumoto
To avoid VM nesting with mrb_funcall()
2016-02-24Avoid Error when Compiling with -std=c99 flagMalizia R
2016-01-22Fix SEGV by stack extension in mrb_get_args()Kouhei Sutou
mrb_get_args() keeps pointer of the current stack. But address of the current stack maybe changed by method call. 'i' format character calls #to_i when the argument isn't integer but has #to_i. Here is a code that may call #to_i in mrb_get_args(): case 'i': // ... default: *p = mrb_fixnum(mrb_Integer(mrb, ARGV[arg_i])); break; // ... Here is a code #to_i is called: class X def initialize(i) @i = i end def to_i @i end end [][X.new(0), 0] # X#to_i is called So, mrb_get_args() shouldn't keep pointer and use it. mrb_get_args() should always refer mrb->ci->stack to use valid address of the current stack.