1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

delete tool/instruction.rb

Previous commit changed insns.def format. Now is the time for its
generators. In doing so I chose to modernize the system, not just
patch.  My attempt includes

- extensive use of Onigumo regular expressions
- split from one big file (instruction.rb) into separated MVC
- partial view

Also, let me take this opportunity to kill old unused features
such as

- stack caching
- minsns / yasmdata which are never seriously used
- yarvarch document generation (moved to doc/)
- vast majority of unused arguments to insns2vm.rb

This commit generates VM source codes that cleanly compile, and
the generated binary passes tests.  At least for me.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61733 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
shyouhei 2018-01-09 13:30:31 +00:00
parent ae4045f0ca
commit 55317a74f7
53 changed files with 1759 additions and 1708 deletions

View file

@ -0,0 +1,88 @@
#! /your/favourite/path/to/ruby
# -*- mode: ruby; coding: utf-8; indent-tabs-mode: nil; ruby-indent-level: 2 -*-
# -*- frozen_string_literal: true; -*-
# -*- warn_indent: true; -*-
#
# Copyright (c) 2017 Urabe, Shyouhei. All rights reserved.
#
# This file is a part of the programming language Ruby. Permission is hereby
# granted, to either redistribute and/or modify this file, provided that the
# conditions mentioned in the file COPYING are met. Consult the file for
# details.
require 'optparse'
require_relative '../controllers/application_controller.rb'
def router argv
targets = generate_parser.parse argv
return targets.map do |i|
next ApplicationController.new.generate i
end
end
def generate_parser
OptionParser.new do |this|
this.on "-I", "--srcdir=DIR", <<~'end'
Historically this option has been passed to the script. This is
supposedly because at the beginnig the script was placed outside
of the ruby source tree. Decades passed since the merge of
YARV, now I can safely assume this feature is obsolescent. Just
ignore the passed value here.
end
this.on "-L", "--vpath=SPEC", <<~'end'
Likewise, this option is no longer supported.
end
this.on "--path-separator=SEP", /\A(?:\W\z|\.(\W).+)/, <<~'end'
Old script says this option is a "separator for vpath". I am
confident we no longer need this option.
end
this.on "-Dname", "--enable=name[,name...]", Array, <<~'end'
This option used to override VM option that is defined in
vm_opts.h. Now it is officially unsupported because vm_opts.h to
remain mismatched with this option must break things. Just edit
vm_opts.h directly.
end
this.on "-Uname", "--disable=name[,name...]", Array, <<~'end'
This option used to override VM option that is defined in
vm_opts.h. Now it is officially unsupported because vm_opts.h to
remain mismatched with this option must break things. Just edit
vm_opts.h directly.
end
this.on "-i", "--insnsdef=FILE", "--instructions-def", <<~'end'
This option used to specify alternative path to insns.def. For
the same reason to ignore -I, we no longer support this.
end
this.on "-o", "--opt-operanddef=FILE", "--opt-operand-def", <<~'end'
This option used to specify alternative path to opt_operand.def.
For the same reason to ignore -I, we no longer support this.
end
this.on "-u", "--opt-insnunifdef=FILE", "--opt-insn-unif-def", <<~'end'
This option used to specify alternative path to
opt_insn_unif.def. For the same reason to ignore -I, we no
longer support this.
end
this.on "-C", "--[no-]use-const", <<~'end'
We use const whenever possible now so this option is ignored.
The author believes that C compilers can constant-fold.
end
this.on "-d", "--destdir", "--output-directory=DIR", <<~'begin' do |dir|
THIS IS THE ONLY OPTION THAT WORKS today. Change destination
directory from the current working directory to the given path.
begin
Dir.chdir dir
end
this.on "-V", "--[no-]verbose", <<~'end'
Please let us ignore this and be modest.
end
end
end