jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_8_0_9_3_0__0390810200.rb
Y1245a
# 0.step(@@rmth) { |n| # higokan ? touki
# fl.shift && redo if fl[n] && fl[n].resume(n) && 0 == n
# break if n >= ht ||= fl.hgt
# }
.
1240c
# stack.sp rg['sp']
stack.ps rg['sp']
@irep[0] = irep
.
1235d
1230d
1228a
# callinfo, irep, rg = @@jsc.(stack, callinfo, irep, rg, imem) # c
.
1221,1222c
# unless fl.flatten[0] && ! pco # wait
.
1219d
1216,1217c
# ist = Thread.new {
## ise.reject! { |fis| fis.resume} # higokan ? GC 70410200
# }
.
1207,1209c
# pco = rg['pc'] if ?J == rg['sym'].to_s[0] # q
(pco = rg['pc']; pctj<< pco + 1) if ?J == rg['sym'].to_s[0] # q
.
1197,1203c
fl<< fls(rg['pc']) # p
.
1194c
# ise<< iset(rg) if 0 <= rg['pc', nil, '-'] # p # cp
ise<< iset(rg) if 0 <= rg['pc', nil, '-'] && pctj.pop != rg['pc'] # p # cp
.
1190,1192d
1188d
1186c
lpl.verb "#{rg['pc'].to_xeh} #{rg['sym']} #{rg['cop'].to_xeh}" # if rg['sym']
.
1180,1184d
1172,1177c
# c , sym = opf(irep, rg['pc'])
c , sym = @@opf.(irep, rg['pc'], imem) # c
.
1165,1167d
1162,1163d
1147a
.
1146a
# [callinfo, irep, rg]
.
1145a
end
.
1143c
else
if ?J == rg['sym'].to_s[0] # q
jm.(cop, sym) # c
# else
.
1141c
# rg['sp', -1] = @callinfo[@cp]
rg['sp', -1] = callinfo[0]
.
1136,1137c
# rg['pc', -1] = @callinfo[@cp] + 1 # bagu syuusei
rg['pc', -1] = callinfo[0] + 1
# @cp -= 1
callinfo.pd
.
1132c
# @cp -= 1
callinfo.pd
.
1129c
# irep = @callinfo[@cp]
irep = callinfo[0]
.
1125,1127c
# @stack[rg['sp']] = @stack[rg['sp'] + imem.getarg_a(cop)]
stack[0] = stack[imem.getarg_a(cop)]
# @cp -= 1
callinfo.pd
.
1120,1121c
# return @stack[rg['sp'] + imem.getarg_a(cop)]
return stack[imem.getarg_a(cop)]
.
1118c
# if @cp == 0 then
if 0 == callinfo.pg
.
1113,1114c
# @stack[rg['sp'] + a] = @stack[rg['sp'] + a].send(mid, *args)
stack[a] = stack[a].send(mid, *args)
end
.
1109c
args<< stack[a + i + 1] # p
.
1090,1091c
# @callinfo[(@cp += 3) - 3, 3] = [rg['sp'], rg['pc'], irep]
callinfo[0 .. 2] = [rg['sp'], rg['pc'], irep]
callinfo.p += 3
.
1088a
# callinfo[0] = irep
.
1085a
# callinfo[0] = rg['pc']
.
1082a
# callinfo[0] = rg['sp']
.
1079c
# newirep = Irep::get_irep(@stack[rg['sp'] + a], mid)
newirep = Irep::get_irep(stack[a], mid)
.
1076,1077c
n = imem.getarg_c(cop)
.
1073,1074c
mid = irep.syms[imem.getarg_b(cop)]
.
1070,1071c
a = imem.getarg_a(cop)
.
1061a
end
}
# @@jsc = Proc.new { |stack, callinfo, irep, rg, imem|
jsc = Proc.new { # |stack, callinfo, irep, rg, imem|
cop, sym = rg['cop'], rg['sym']
case sym
# case rg['sym']
# 何もしない
# when :NOP
# # JMP nでpcをnだけ増やす。ただし、nは符号付き
# when :JMP
## @pc = @pc + getarg_sbx(cop)
## pc = pc + lpl.getarg_sbx(cop) - 1
# rg['pc', -1] = rg['pc'] + imem.getarg_sbx(cop)
## next
# when :JMPIF
## if @stack[@sp + getarg_a(cop)] then
## if @stack[rg['sp'] + imem.getarg_a(cop)]
# if stack[imem.getarg_a(cop)]
## @pc = @pc + getarg_sbx(cop)
## pc = pc + lpl.getarg_sbx(cop) - 1
# rg['pc', -1] = rg['pc'] + imem.getarg_sbx(cop)
## next
# end
# # JMPNOT Ra, nでもしRaがnilかfalseならpcをnだけ増やす。ただし、nは符号付き
# when :JMPNOT
## if !@stack[@sp + getarg_a(cop)] then
## if !@stack[rg['sp'] + imem.getarg_a(cop)]
# if !stack[imem.getarg_a(cop)]
## @pc = @pc + getarg_sbx(cop)
## pc = pc + lpl.getarg_sbx(cop) - 1
# rg['pc', -1] = rg['pc'] + imem.getarg_sbx(cop)
## next
# end
.
1059c
rg['pc', -1] = rg['pc'] + imem.getarg_sbx(cop)
.
1055,1056c
# if !@stack[rg['sp'] + imem.getarg_a(cop)]
if !stack[imem.getarg_a(cop)]
.
1048c
rg['pc', -1] = rg['pc'] + imem.getarg_sbx(cop)
.
1044,1045c
# if @stack[rg['sp'] + imem.getarg_a(cop)]
if stack[imem.getarg_a(cop)]
.
1039c
rg['pc', -1] = rg['pc'] + imem.getarg_sbx(cop)
.
1032,1033c
case sym
.
1028,1030c
jm = ->(cop, sym) { # l
.
1023a
pctj = []
.
1015,1018d
1011c
@irep[0] = irep
.
1009a
stack = Stack.new
# callinfo = Stack.new(0, 'c')
# callinfo = Pary.new []
callinfo = Stack.new(0, [])
.
1004c
# end
}
.
1001d
992,993c
@@iset2 = nil
def iset(rg)
# rgd = rg.dup
rgd = rg.to_a('pc', 'sp', 'cop', 'sym')
# sl = @@slp
@@iset2 ||= iset2
Fiber.new {
loop {
Fiber.yield(@@iset2.resume(rgd))
rgd &&= nil
# sl.slp 0
}
}
end
# def opf(irep, pc)
@@opf = ->(irep, pc, imem) { # l
# imem = @imem
.
987a
rg = Fiber.yield(0 > thi) ##
thi += 1
.
986c
# Fiber.yield(0 > thi) ##
.
979a
pl.pl_es(pc1, opg.(thi) + [[k_sp, [sp], :ctr_s, pc1], []][thi <=> 0]) # c
# if 0 != thi && ht <= thi
# thi = -1
# end
0 != thi && ht <= thi && thi = -1
.
973,977c
th = [] ##
# thi = 0
.
971c
fml = imem.fml('th', sym) || (
# printf("Unkown code %s \n", OPTABLE_SYM[imem.get_opcode(cop)])
pl.verb("Unkown code #{sym} ") # .to_s
# return nil
# raise
# rg = Fiber.yield(nil)
)
.
966,969c
# [1].cycle.with_index { |t, thi|
if rg
# pc, sp, cop, sym = rg.to_a('pc', 'sp', 'cop', 'sym')
pc, sp, cop, sym = rg
pc1 = pc + 1
.
962,963c
# Fiber.new { ##
Fiber.new { |rg|
loop { ##
.
951,952c
# fv = fvl[1][-1].(oi); fvl[1] = fvl[1][0 .. fvl.size - 2] # c
# when 'th' then fv = fvl.(oi) # c
when 'th' then fv = fvl[oi <=> 0].(oi) # c
.
949a
# when 'th' then fv = fvl[-1].(oi); fvl.delete_at(1) # c
.
938,940c
# fvl = [->(oi) {th += [[fv[oi] && imem.ta(fv[oi], cop)], []][ # l c
# (oi <=> ht = fv.hgt) + 1 >> 1]},
# ->(oi) {[fv[oi] = th[oi] = (imem.ta(fv[oi], cop)), []]}] # .lazy # l c
# fvl = ->(oi) {[ # l
# -> {[fv[oi] = th[oi] = (ta.(fv[oi])), []]}, # l c
# -> {th += [[fv[oi] && ta.(fv[oi])], []][ # l c
# ((ht = fv.hgt) <=> oi) >> 1]}][oi <=> 0].call # .lazy
# }
fvl = [->(oi) {[fv[oi] = th[oi] = (imem.ta(fv[oi], cop)), []]}, # l
->(oi) {th += [[fv[oi] && imem.ta(fv[oi], cop)], []][ # l
((ht = fv.hgt) <=> oi) >> 1]}] # .lazy
.
927,932c
fml = []
.
920,921c
# pc1 = pc + 1
pc1 = 0
.
914,918c
# def iset(rg) ##
def iset2 ##
# pc, sp, cop, sym = rg.to_a('pc', 'sp', 'cop', 'sym')
pc, sp, cop, sym = nil
.
883,886d
880d
875,877c
# sp ||= s.sp(pl[i_sp][0])
sp ||= s.ps(pl[i_sp][0])
# r0, r1 = r
# pr || (pr, sy = imem.fml('st', sym)[1 .. -1])
pr || (pr, sy, mt = imem.fml('st', sym)[1 .. -1])
.
870,872c
f = ! flg.include?(false)
# m = fy.(m, false)
.
865d
856,860c
# pc = ~ pc
# pc1 = pc + 1
# sp = nil; plr = []
# pr = nil
# f = false # ; flg = [false, false]
pc = ini.(pc) # c
.
850,851d
846d
837,840c
} # rs[1] = r0.to_xeh
.
833,835c
# sz = plr.size
# plr += lm.(isr0, s[sz .. sz + ap -= ap >> 2]) # c
# plr += lm.(isr0, s[(sz = plr.size) .. sz + ap -= ap >> 2]) # c
plr +=
lm.(isr0, s[(sz = plr.size) .. sz + ap = (ap >>= 1) + (ap >> 1)]) # c
.
822,825c
# r = plr[r1] || lm.(isr0, r1) # c
# _ = r[1] <= sz && plr[r[1]] || lm.(isr0, r[1]) # c
_ = plr[r[1]] || lm.(isr0, r[1]) # c
# s[r1] = sy ? [s[r1], r].inject(sy) : r
s[r[1]] = sy ? [s[r[1]], _].inject(sy) : _
}, # rs = [r1.to_xeh, r0.to_xeh]},
.
817d
814c
# ini = ->(pc) { [pc = ~ pc, (
ini = ->(pc) { (pc1 = [~ pc, (
# pc1 = pc + 1
sp, pr = nil; plr = []
f = false # ; flg = [false, false]
# )][0]
)][0] + 1) - 1
}
# lm = ->(isr0, r1) {r1 && imem.send(pr, *isr0, r1)} # l
lm = ->(isr0, r1) {r1.nil? ? r1 : imem.send(pr, *isr0, r1, mt)} # l
.
810d
808d
806c
r = nil
.
804d
801,802c
# isr0, r0, r1, pr, sy, sym = nil
# isr0, r0, r1, pr, sy, sym, mt = nil
isr0, pr, sy, sym, mt = nil
.
796d
787,789c
# pc = 0
# pc1 = pc + 1
pc1 = 0
.
778,782c
# def fls(pc) ##
def fls2 ##
.
773,776d
740,741d
725,726c
# @cp = 0 # callinfoのポインタ
@irep = [nil] # 現在実行中の命令列オブジェクト
.
721,722c
# @stack = Stack.new # スタック(@spより上位をレジスタとして扱う)
# @callinfo = [] # メソッド呼び出しで呼び出し元の情報を格納
.
688d
639a
def pg() @p end
def pi() @p += 1 end
def pd() @p -= 1 end
# def sp(*a)
# def sp(pt)
def ps(i)
# id = self.object_id
# a.empty? || @p = a[0]
# @p = pt
@p = i
# @p
end
.
634a
# @s[@p + a[0].sgp] = a[1]
.
613,620c
# @s
.
610a
# s = @s
.
603a
attr_accessor :p
.
602c
# @@s = []
@@s = AryM.new
.
600a
##module M__Pary
## def initialize(*a)
## @a = a.shift
## @i = (a[-1] || 0)
## end
##
### def pg
### @i
### end
##
### def pg
### @i
### end
##
## def pg() @i end
## def ps(i = @i) @i = i end
## def pi() @i += 1 end
## def pd() @i -= 1 end
##
## def []=(i, v)
## @a[ipt(i)] = v
## end
##
## def [](i)
## @a[ipt(i)]
## end
##
### private
##
## def ipt(i)
## @i + ((i + i.abs) >> 1)
## end
##end
##
##class Pary
## include M__Pary
##end
#
## @@stack = Pary.new []
### @@stack = [['s', Pary.new([])], ['c', Pary.new([])]]
# module M__AryM # higokan ? mruby 70410200
class AryM < Array
def [](*a)
super
end
def []=(*a)
super
end
end
# class AryM < Array
# include M__AryM
# end
.
584d
582d
554c
sl.slp(0) # (0, 4096)
.
552c
ckth(th[mx], 3)) &&
.
550a
mx = thn.hgt
# mx ||= thn.hgt
.
547,548d
516c
# (tb == a || knid(a, :Array).! || 1 >= a.size) && (return a)
(tb == a || knid(a, :Array).! || 0 >= a.hgt) && (return a)
.
461a
# ctr = (cta = pl_g(0).afl('ctr', self)).shift
# pl_es(0, ['ctr', cta])
# ctr
.
451a
# i_k = loop {self.afl(k, ?i) && break} # q # fuguai taisaku
.
421d
411d
406d
404d
323,327c
# if self[1]
## self.replace(self[0 .. self.size & ((n = @@rmth + 1) << 1) | n]) # ?? # higokan ? mruby:70410200 monami-ya.mrb:60510200
## self.slice!((self.size & ((n = @@rmth + 1) << 1) | n) + 1 .. -1) # higokan mruby:70410200 monami-ya.mrb:60510200
# self[0 .. -1] = self[0 .. self.size & ((n = @@rmth + 1) << 1) | n]
# end
self[1] && self[0 .. -1] =
self[0 ... self.size & ((n = @@rmth + 1) << 1) | n]
.
316c
# 3080410200 : 5x2 ok ( gc ) : monami-ya.mrb 8270410200 813e2af8 # http://www.monami-ya.jp/
.
152a
# module M__Rou
# class Rou
# include RiteOpcodeUtil
# include M__Rou
# end
.
110c
# def reject_c_th(a, i = nil)
def reject_c_th(a, i)
.
89c
# def reject_c!(i = nil)
def reject_c!(i)
.
--
YAMAGUTIseisei ( str_h__namae = { :sei => "山口" , :mei => "青星" } )
http://hello.to/seisei/ mailto:seisei@.68..net tel:081-70-5152-1104
heiwa furiisekkusu 1tu
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735