1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/template/optunifs.inc.tmpl
nobu 7735c1f5fe tool/instruction.rb: move logics to templates
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59636 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-22 04:22:01 +00:00

67 lines
1.6 KiB
C

/* -*-c-*- *********************************************************/
/*******************************************************************/
/*******************************************************************/
/**
This file is for threaded code.
----
This file is auto generated by insns2vm.rb
DO NOT TOUCH!
If you want to fix something, you must edit 'template/optunifs.inc.tmpl'
or tool/insns2vm.rb
*/
/*
static const int UNIFIED_insn_name_1[] = {id, size, ...};
static const int UNIFIED_insn_name_2[] = {id, size, ...};
...
static const int *const UNIFIED_insn_name[] = {size,
UNIFIED_insn_name_1,
UNIFIED_insn_name_2, ...};
...
static const int *const *const unified_insns_data[] = {
UNIFIED_insn_nameA,
UNIFIED_insn_nameB, ...};
*/
% unif_insns_data = @insns.find_all {|insn| !insn.is_sc}.map do |insn|
% size = insn.unifs.size
% if size > 0
% name = "UNIFIED_#{insn.name}"
% insn.unifs.sort_by{|unif| -unif[1].size}.each_with_index do |(uni_insn, uni_insns), i|
% uni_insns = uni_insns[1..-1]
static const int <%=name%>_<%=i%>[] = {
BIN(<%=uni_insn.name%>), <%=uni_insns.size + 2%>,
<% uni_insns.map{|e| -%>
BIN(<%=e.name%>),<% -%>
% }
};
% end
static const int *const <%=name%>[] = {(int *)<%=size+1%>,
% size.times do |e|
<%=name%>_<%=e%>,
% end
};
% name
% end
% end
static const int *const *const unified_insns_data[] = {<%#-%>
% unif_insns_data.each_with_index do |insn, i|
% if (i%8).zero?
<% -%>
% end
<%=insn || "0"%>,<%#-%>
% end
};
#undef GET_INSN_NAME
ASSERT_VM_INSTRUCTION_SIZE(unified_insns_data);