diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-10-04 12:31:05 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-10-04 12:31:05 +0000 |
commit | 23dc0dbc4ad3354a9df899c0105c57bf42e2d243 (patch) | |
tree | 9fdcd41591a161885d19cdd96949d743fdc69102 /vm_exec.h | |
parent | b1ad79774de9789a2dd60c19c907356fa823ebd9 (diff) | |
download | ruby-23dc0dbc4ad3354a9df899c0105c57bf42e2d243.tar.gz |
* vm.c (VM_COLLECT_USAGE_DETAILS): make new VM usage analysis
hooks (old macro name is COLLECT_USAGE_ANALYSIS).
This feature is only for VM developers. (I'm not sure I can use
`VM developers' (the plural form) in this sentence).
If VM_COLLECT_USAGE_DETAILS is not 0, VM enables the following
usage collection features:
(1) insntruction: collect intruction usages.
(2) operand: collect operand usages.
(3) register: collect register usages.
The results are stored in
RubyVM::USAGE_ANALYSIS_INSN for (1, 2),
RubyVM::USAGE_ANALYSIS_INSN_BIGRAM for (1) and
RubyVM::USAGE_ANALYSIS_REGS for (3).
You can stop collecting usages with
RubyVM::USAGE_ANALYSIS_INSN_STOP(),
RubyVM::USAGE_ANALYSIS_OPERAND_STOP(),
RubyVM::USAGE_ANALYSIS_REGISTER_STOP()
for (1), (2), (3) respectively.
You can also change the hook functions by setting
C level global variables
`ruby_vm_collect_usage_func_(insn|operand|register)'
for (1), (2), (3) respectively.
See codes for more details.
* tool/instruction.rb: fix macro names.
* iseq.c (insn_operand_intern): make it export (used in vm.c).
fix to skip several processes if not needed (pointer is 0).
* vm_dump.c: move codes for collection features to vm.c.
* vm_exec.h: rename macro and function names.
* vm_insnhelper.h: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37085 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_exec.h')
-rw-r--r-- | vm_exec.h | 10 |
1 files changed, 0 insertions, 10 deletions
@@ -18,16 +18,6 @@ typedef unsigned long dindex_t; typedef rb_num_t GENTRY; typedef rb_iseq_t *ISEQ; -#ifdef COLLECT_USAGE_ANALYSIS -#define USAGE_ANALYSIS_INSN(insn) vm_analysis_insn(insn) -#define USAGE_ANALYSIS_OPERAND(insn, n, op) vm_analysis_operand((insn), (n), (VALUE)(op)) -#define USAGE_ANALYSIS_REGISTER(reg, s) vm_analysis_register((reg), (s)) -#else -#define USAGE_ANALYSIS_INSN(insn) /* none */ -#define USAGE_ANALYSIS_OPERAND(insn, n, op) /* none */ -#define USAGE_ANALYSIS_REGISTER(reg, s) /* none */ -#endif - #ifdef __GCC__ /* TODO: machine dependent prefetch instruction */ #define PREFETCH(pc) |