mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
tool/ruby_vm support for pre-2.1 BASERUBY
as requested by devs, support for BASERUBY prior to 2.1 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61786 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
069e9ff52c
commit
8a72c77c79
13 changed files with 121 additions and 112 deletions
|
@ -16,11 +16,11 @@ class RubyVM::Attribute
|
|||
include RubyVM::CEscape
|
||||
attr_reader :insn, :key, :type, :expr
|
||||
|
||||
def initialize insn:, name:, type:, location:, expr:
|
||||
@insn = insn
|
||||
@key = name
|
||||
@expr = RubyVM::CExpr.new location: location, expr: expr
|
||||
@type = type
|
||||
def initialize opts = {}
|
||||
@insn = opts[:insn]
|
||||
@key = opts[:name]
|
||||
@expr = RubyVM::CExpr.new location: opts[:location], expr: opts[:expr]
|
||||
@type = opts[:type]
|
||||
end
|
||||
|
||||
def name
|
||||
|
|
|
@ -18,16 +18,16 @@ require_relative 'attribute'
|
|||
class RubyVM::BareInstructions
|
||||
attr_reader :template, :name, :opes, :pops, :rets, :decls, :expr
|
||||
|
||||
def initialize template:, name:, location:, signature:, attributes:, expr:
|
||||
@template = template
|
||||
@name = name
|
||||
@loc = location
|
||||
@sig = signature
|
||||
@expr = RubyVM::CExpr.new expr
|
||||
def initialize opts = {}
|
||||
@template = opts[:template]
|
||||
@name = opts[:name]
|
||||
@loc = opts[:location]
|
||||
@sig = opts[:signature]
|
||||
@expr = RubyVM::CExpr.new opts[:expr]
|
||||
@opes = typesplit @sig[:ope]
|
||||
@pops = typesplit @sig[:pop].reject {|i| i == '...' }
|
||||
@rets = typesplit @sig[:ret].reject {|i| i == '...' }
|
||||
@attrs = attributes.map {|i|
|
||||
@attrs = opts[:attributes].map {|i|
|
||||
RubyVM::Attribute.new insn: self, **i
|
||||
}.each_with_object({}) {|a, h|
|
||||
h[a.key] = a
|
||||
|
@ -148,7 +148,10 @@ class RubyVM::BareInstructions
|
|||
end
|
||||
end
|
||||
|
||||
@instances = RubyVM::InsnsDef.map {|h| new template: h, **h }
|
||||
@instances = RubyVM::InsnsDef.map {|h|
|
||||
hh = h.merge(:template => h)
|
||||
new hh
|
||||
}
|
||||
|
||||
def self.fetch name
|
||||
@instances.find do |insn|
|
||||
|
|
|
@ -17,10 +17,10 @@ class RubyVM::CExpr
|
|||
|
||||
attr_reader :__FILE__, :__LINE__, :expr
|
||||
|
||||
def initialize location:, expr:
|
||||
@__FILE__ = location[0]
|
||||
@__LINE__ = location[1]
|
||||
@expr = expr
|
||||
def initialize opts = {}
|
||||
@__FILE__ = opts[:location][0]
|
||||
@__LINE__ = opts[:location][1]
|
||||
@expr = opts[:expr]
|
||||
end
|
||||
|
||||
# blank, in sense of C program.
|
||||
|
|
|
@ -19,10 +19,10 @@ class RubyVM::InstructionsUnifications
|
|||
|
||||
attr_reader :name
|
||||
|
||||
def initialize location:, signature:
|
||||
@location = location
|
||||
@name = namegen signature
|
||||
@series = signature.map do |i|
|
||||
def initialize opts = {}
|
||||
@location = opts[:location]
|
||||
@name = namegen opts[:signature]
|
||||
@series = opts[:signature].map do |i|
|
||||
RubyVM::BareInstructions.fetch i # Misshit is fatal
|
||||
end
|
||||
end
|
||||
|
@ -34,7 +34,7 @@ class RubyVM::InstructionsUnifications
|
|||
end
|
||||
|
||||
@instances = RubyVM::OptInsnUnifDef.map do |h|
|
||||
new(**h)
|
||||
new h
|
||||
end
|
||||
|
||||
def self.to_a
|
||||
|
|
|
@ -19,13 +19,13 @@ class RubyVM::OperandsUnifications < RubyVM::BareInstructions
|
|||
|
||||
attr_reader :preamble, :original, :spec
|
||||
|
||||
def initialize location:, signature:
|
||||
name = signature[0]
|
||||
def initialize opts = {}
|
||||
name = opts[:signature][0]
|
||||
@original = RubyVM::BareInstructions.fetch name
|
||||
template = @original.template
|
||||
parts = compose location, signature, template[:signature]
|
||||
parts = compose opts[:location], opts[:signature], template[:signature]
|
||||
json = template.dup
|
||||
json[:location] = location
|
||||
json[:location] = opts[:location]
|
||||
json[:signature] = parts[:signature]
|
||||
json[:name] = parts[:name]
|
||||
@preamble = parts[:preamble]
|
||||
|
@ -122,7 +122,7 @@ class RubyVM::OperandsUnifications < RubyVM::BareInstructions
|
|||
end
|
||||
|
||||
@instances = RubyVM::OptOperandDef.map do |h|
|
||||
new(**h)
|
||||
new h
|
||||
end
|
||||
|
||||
def self.to_a
|
||||
|
|
|
@ -18,7 +18,7 @@ class RubyVM::TraceInstructions
|
|||
|
||||
attr_reader :name
|
||||
|
||||
def initialize orig:
|
||||
def initialize orig
|
||||
@orig = orig
|
||||
@name = as_tr_cpp "trace @ #{@orig.name}"
|
||||
end
|
||||
|
@ -61,7 +61,7 @@ class RubyVM::TraceInstructions
|
|||
|
||||
private
|
||||
|
||||
@instances = RubyVM::Instructions.map {|i| new orig: i }
|
||||
@instances = RubyVM::Instructions.map {|i| new i }
|
||||
|
||||
def self.to_a
|
||||
@instances
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue