From a3e1b1ce7ed7e7ffac23015fc2fde56511b30681 Mon Sep 17 00:00:00 2001 From: ko1 Date: Sun, 31 Dec 2006 15:02:22 +0000 Subject: * Merge YARV git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11439 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- template/insns_info.inc.tmpl | 77 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 template/insns_info.inc.tmpl (limited to 'template/insns_info.inc.tmpl') diff --git a/template/insns_info.inc.tmpl b/template/insns_info.inc.tmpl new file mode 100644 index 0000000000..8f63cea9ea --- /dev/null +++ b/template/insns_info.inc.tmpl @@ -0,0 +1,77 @@ +/** -*-c-*- + This file contains instruction information for yarv instruction sequence. + + ---- + This file is auto generated by insns2vm.rb + DO NOT TOUCH! + + If you want to fix something, you must edit 'template/insns_info.inc.tmpl' + or insns2vm.rb + */ + +<%= insn_type_chars %> + +static char *insn_name_info[] = { +<%= insn_names %> +}; + +static char *insn_operand_info[] = { +<%= operands_info %> +}; + +static int insn_len_info[] = { +<%= operands_num_info %> +}; + +static int insn_stack_push_num_info[] = { +<%= stack_num_info %> +}; + +static int +insn_stack_increase(int depth, int insn, VALUE *opes) +{ + switch(insn){ +<%= stack_increase %> + default: + rb_bug("insn_sp_increase: unreachable"); + } + return 0; +} + +/* some utilities */ + +static int +insn_len(int insn) +{ + return insn_len_info[insn]; +} + +static char * +insn_name(int insn) +{ + return insn_name_info[insn]; +} + +static char * +insn_op_types(int insn) +{ + return insn_operand_info[insn]; +} + +static int +insn_op_type(int insn, int pos) +{ + int len = insn_len(insn) - 1; + if(pos < len){ + return insn_operand_info[insn][pos]; + } + else{ + return 0; + } +} + +static int +insn_ret_num(int insn) +{ + return insn_stack_push_num_info[insn]; +} -- cgit v1.2.3