class Atomy::Code::Pattern::And
Public Class Methods
new(a, b)
click to toggle source
# File lib/atomy/code/pattern/and.rb, line 8 def initialize(a, b) @a = a @b = b end
Public Instance Methods
assign(gen)
click to toggle source
# File lib/atomy/code/pattern/and.rb, line 23 def assign(gen) # [value, pattern, value, pattern] gen.dup_many(2) # [pattern, value, value, pattern] gen.swap # [a pattern, value, value, pattern] gen.send(:a, 0) # [value, a pattern, value, pattern] gen.swap # [value, a pattern, value, pattern] @a.assign(gen) # [value, pattern] gen.pop_many(2) # [value, pattern, value, pattern] gen.dup_many(2) # [pattern, value, value, pattern] gen.swap # [b pattern, value, value, pattern] gen.send(:b, 0) # [value, b pattern, value, pattern] gen.swap # [value, b pattern, value, pattern] @b.assign(gen) # [value, pattern] gen.pop_many(2) end
bytecode(gen, mod)
click to toggle source
# File lib/atomy/code/pattern/and.rb, line 13 def bytecode(gen, mod) gen.push_cpath_top gen.find_const(:Atomy) gen.find_const(:Pattern) gen.find_const(:And) mod.compile(gen, @a) mod.compile(gen, @b) gen.send(:new, 2) end