mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
vm_core.h: redefined_flag in rb_vm_t
* vm_core.h (struct rb_vm_struct): move redefined_flag from ruby_vm_redefined_flag. * vm_core.h (BASIC_OP_UNREDEFINED_P): move from vm_insnhelper.h. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46858 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
ce4cfec88a
commit
c317e978f7
3 changed files with 43 additions and 41 deletions
2
vm.c
2
vm.c
|
@ -98,8 +98,8 @@ VALUE rb_cThread;
|
||||||
VALUE rb_cEnv;
|
VALUE rb_cEnv;
|
||||||
VALUE rb_mRubyVMFrozenCore;
|
VALUE rb_mRubyVMFrozenCore;
|
||||||
|
|
||||||
|
#define ruby_vm_redefined_flag GET_VM()->redefined_flag
|
||||||
VALUE ruby_vm_const_missing_count = 0;
|
VALUE ruby_vm_const_missing_count = 0;
|
||||||
short ruby_vm_redefined_flag[BOP_LAST_];
|
|
||||||
rb_thread_t *ruby_current_thread = 0;
|
rb_thread_t *ruby_current_thread = 0;
|
||||||
rb_vm_t *ruby_current_vm = 0;
|
rb_vm_t *ruby_current_vm = 0;
|
||||||
rb_event_flag_t ruby_vm_event_flags;
|
rb_event_flag_t ruby_vm_event_flags;
|
||||||
|
|
42
vm_core.h
42
vm_core.h
|
@ -318,6 +318,33 @@ enum ruby_special_exceptions {
|
||||||
ruby_special_error_count
|
ruby_special_error_count
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum ruby_basic_operators {
|
||||||
|
BOP_PLUS,
|
||||||
|
BOP_MINUS,
|
||||||
|
BOP_MULT,
|
||||||
|
BOP_DIV,
|
||||||
|
BOP_MOD,
|
||||||
|
BOP_EQ,
|
||||||
|
BOP_EQQ,
|
||||||
|
BOP_LT,
|
||||||
|
BOP_LE,
|
||||||
|
BOP_LTLT,
|
||||||
|
BOP_AREF,
|
||||||
|
BOP_ASET,
|
||||||
|
BOP_LENGTH,
|
||||||
|
BOP_SIZE,
|
||||||
|
BOP_EMPTY_P,
|
||||||
|
BOP_SUCC,
|
||||||
|
BOP_GT,
|
||||||
|
BOP_GE,
|
||||||
|
BOP_NOT,
|
||||||
|
BOP_NEQ,
|
||||||
|
BOP_MATCH,
|
||||||
|
BOP_FREEZE,
|
||||||
|
|
||||||
|
BOP_LAST_
|
||||||
|
};
|
||||||
|
|
||||||
#define GetVMPtr(obj, ptr) \
|
#define GetVMPtr(obj, ptr) \
|
||||||
GetCoreDataFromValue((obj), rb_vm_t, (ptr))
|
GetCoreDataFromValue((obj), rb_vm_t, (ptr))
|
||||||
|
|
||||||
|
@ -410,6 +437,8 @@ typedef struct rb_vm_struct {
|
||||||
size_t fiber_vm_stack_size;
|
size_t fiber_vm_stack_size;
|
||||||
size_t fiber_machine_stack_size;
|
size_t fiber_machine_stack_size;
|
||||||
} default_params;
|
} default_params;
|
||||||
|
|
||||||
|
short redefined_flag[BOP_LAST_];
|
||||||
} rb_vm_t;
|
} rb_vm_t;
|
||||||
|
|
||||||
/* default values */
|
/* default values */
|
||||||
|
@ -426,6 +455,19 @@ typedef struct rb_vm_struct {
|
||||||
#define RUBY_VM_FIBER_MACHINE_STACK_SIZE ( 64 * 1024 * sizeof(VALUE)) /* 256 KB or 512 KB */
|
#define RUBY_VM_FIBER_MACHINE_STACK_SIZE ( 64 * 1024 * sizeof(VALUE)) /* 256 KB or 512 KB */
|
||||||
#define RUBY_VM_FIBER_MACHINE_STACK_SIZE_MIN ( 16 * 1024 * sizeof(VALUE)) /* 64 KB or 128 KB */
|
#define RUBY_VM_FIBER_MACHINE_STACK_SIZE_MIN ( 16 * 1024 * sizeof(VALUE)) /* 64 KB or 128 KB */
|
||||||
|
|
||||||
|
/* optimize insn */
|
||||||
|
#define FIXNUM_REDEFINED_OP_FLAG (1 << 0)
|
||||||
|
#define FLOAT_REDEFINED_OP_FLAG (1 << 1)
|
||||||
|
#define STRING_REDEFINED_OP_FLAG (1 << 2)
|
||||||
|
#define ARRAY_REDEFINED_OP_FLAG (1 << 3)
|
||||||
|
#define HASH_REDEFINED_OP_FLAG (1 << 4)
|
||||||
|
#define BIGNUM_REDEFINED_OP_FLAG (1 << 5)
|
||||||
|
#define SYMBOL_REDEFINED_OP_FLAG (1 << 6)
|
||||||
|
#define TIME_REDEFINED_OP_FLAG (1 << 7)
|
||||||
|
#define REGEXP_REDEFINED_OP_FLAG (1 << 8)
|
||||||
|
|
||||||
|
#define BASIC_OP_UNREDEFINED_P(op, klass) (LIKELY((GET_VM()->redefined_flag[(op)]&(klass)) == 0))
|
||||||
|
|
||||||
#ifndef VM_DEBUG_BP_CHECK
|
#ifndef VM_DEBUG_BP_CHECK
|
||||||
#define VM_DEBUG_BP_CHECK 0
|
#define VM_DEBUG_BP_CHECK 0
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -34,34 +34,6 @@
|
||||||
#define VMDEBUG 3
|
#define VMDEBUG 3
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
enum {
|
|
||||||
BOP_PLUS,
|
|
||||||
BOP_MINUS,
|
|
||||||
BOP_MULT,
|
|
||||||
BOP_DIV,
|
|
||||||
BOP_MOD,
|
|
||||||
BOP_EQ,
|
|
||||||
BOP_EQQ,
|
|
||||||
BOP_LT,
|
|
||||||
BOP_LE,
|
|
||||||
BOP_LTLT,
|
|
||||||
BOP_AREF,
|
|
||||||
BOP_ASET,
|
|
||||||
BOP_LENGTH,
|
|
||||||
BOP_SIZE,
|
|
||||||
BOP_EMPTY_P,
|
|
||||||
BOP_SUCC,
|
|
||||||
BOP_GT,
|
|
||||||
BOP_GE,
|
|
||||||
BOP_NOT,
|
|
||||||
BOP_NEQ,
|
|
||||||
BOP_MATCH,
|
|
||||||
BOP_FREEZE,
|
|
||||||
|
|
||||||
BOP_LAST_
|
|
||||||
};
|
|
||||||
|
|
||||||
extern short ruby_vm_redefined_flag[BOP_LAST_];
|
|
||||||
extern VALUE ruby_vm_const_missing_count;
|
extern VALUE ruby_vm_const_missing_count;
|
||||||
|
|
||||||
#if VM_COLLECT_USAGE_DETAILS
|
#if VM_COLLECT_USAGE_DETAILS
|
||||||
|
@ -231,18 +203,6 @@ enum vm_regan_acttype {
|
||||||
/**********************************************************/
|
/**********************************************************/
|
||||||
|
|
||||||
/* optimize insn */
|
/* optimize insn */
|
||||||
#define FIXNUM_REDEFINED_OP_FLAG (1 << 0)
|
|
||||||
#define FLOAT_REDEFINED_OP_FLAG (1 << 1)
|
|
||||||
#define STRING_REDEFINED_OP_FLAG (1 << 2)
|
|
||||||
#define ARRAY_REDEFINED_OP_FLAG (1 << 3)
|
|
||||||
#define HASH_REDEFINED_OP_FLAG (1 << 4)
|
|
||||||
#define BIGNUM_REDEFINED_OP_FLAG (1 << 5)
|
|
||||||
#define SYMBOL_REDEFINED_OP_FLAG (1 << 6)
|
|
||||||
#define TIME_REDEFINED_OP_FLAG (1 << 7)
|
|
||||||
#define REGEXP_REDEFINED_OP_FLAG (1 << 8)
|
|
||||||
|
|
||||||
#define BASIC_OP_UNREDEFINED_P(op, klass) (LIKELY((ruby_vm_redefined_flag[(op)]&(klass)) == 0))
|
|
||||||
|
|
||||||
#define FIXNUM_2_P(a, b) ((a) & (b) & 1)
|
#define FIXNUM_2_P(a, b) ((a) & (b) & 1)
|
||||||
#if USE_FLONUM
|
#if USE_FLONUM
|
||||||
#define FLONUM_2_P(a, b) (((((a)^2) | ((b)^2)) & 3) == 0) /* (FLONUM_P(a) && FLONUM_P(b)) */
|
#define FLONUM_2_P(a, b) (((((a)^2) | ((b)^2)) & 3) == 0) /* (FLONUM_P(a) && FLONUM_P(b)) */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue