From 23dc0dbc4ad3354a9df899c0105c57bf42e2d243 Mon Sep 17 00:00:00 2001 From: ko1 Date: Thu, 4 Oct 2012 12:31:05 +0000 Subject: * 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 --- tool/instruction.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'tool/instruction.rb') diff --git a/tool/instruction.rb b/tool/instruction.rb index 9dc7604170..43b26b5c97 100755 --- a/tool/instruction.rb +++ b/tool/instruction.rb @@ -791,9 +791,9 @@ class RubyVM end def make_header_analysis insn - commit " USAGE_ANALYSIS_INSN(BIN(#{insn.name}));" + commit " COLLECT_USAGE_INSN(BIN(#{insn.name}));" insn.opes.each_with_index{|op, i| - commit " USAGE_ANALYSIS_OPERAND(BIN(#{insn.name}), #{i}, #{op[1]});" + commit " COLLECT_USAGE_OPERAND(BIN(#{insn.name}), #{i}, #{op[1]});" } end -- cgit v1.2.3