зеркало из https://github.com/github/ruby.git
* include/ruby/intern.h (rb_check_frozen): optimize.
[ruby-core:32878] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29582 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
5383964f98
Коммит
58d3597e74
|
@ -1,3 +1,8 @@
|
|||
Sun Oct 24 17:05:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* include/ruby/intern.h (rb_check_frozen): optimize.
|
||||
[ruby-core:32878]
|
||||
|
||||
Sun Oct 24 15:16:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* lib/test/unit.rb (Test::Unit::Mini#run): abort if interrupted.
|
||||
|
|
3
error.c
3
error.c
|
@ -1589,10 +1589,11 @@ rb_error_frozen(const char *what)
|
|||
rb_raise(rb_eRuntimeError, "can't modify frozen %s", what);
|
||||
}
|
||||
|
||||
#undef rb_check_frozen
|
||||
void
|
||||
rb_check_frozen(VALUE obj)
|
||||
{
|
||||
if (OBJ_FROZEN(obj)) rb_error_frozen(rb_obj_classname(obj));
|
||||
rb_check_frozen_internal(obj);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -213,6 +213,23 @@ PRINTF_ARGS(void rb_compile_error_append(const char*, ...), 1, 2);
|
|||
NORETURN(void rb_load_fail(const char*));
|
||||
NORETURN(void rb_error_frozen(const char*));
|
||||
void rb_check_frozen(VALUE);
|
||||
#define rb_check_frozen_internal(obj) do { \
|
||||
VALUE frozen_obj = (obj); \
|
||||
if (OBJ_FROZEN(frozen_obj)) { \
|
||||
rb_error_frozen(rb_obj_classname(frozen_obj)); \
|
||||
} \
|
||||
} while (0)
|
||||
#ifdef __GNUC__
|
||||
#define rb_check_frozen(obj) __extension__({rb_check_frozen_internal(obj);})
|
||||
#else
|
||||
static inline void
|
||||
rb_check_frozen_inline(VALUE obj)
|
||||
{
|
||||
rb_check_frozen_internal(obj);
|
||||
}
|
||||
#define rb_check_frozen(obj) rb_check_frozen_inline(obj)
|
||||
#endif
|
||||
|
||||
/* eval.c */
|
||||
int rb_sourceline(void);
|
||||
const char *rb_sourcefile(void);
|
||||
|
|
Загрузка…
Ссылка в новой задаче