Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > tw.bbs.comp.sources > #2 > unrolled thread

jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_7_0_6_3_0__0360710200.rb ( Was : Re: jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_6_0_7_0_7__7070610200.rb )

Started byYAMAGUTIseisei <seisei@hello.to>
First post2017-08-08 03:18 +0000
Last post2020-07-12 14:55 +0000
Articles 20 on this page of 33 — 3 participants

Back to article view | Back to tw.bbs.comp.sources

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_7_0_6_3_0__0360710200.rb ( Was : Re: jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_6_0_7_0_7__7070610200.rb ) YAMAGUTIseisei <seisei@hello.to> - 2017-08-08 03:18 +0000
    jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_7_1_0_0_1__1001710200.rb YAMAGUTIseisei <seisei@x68k.net> - 2017-10-01 12:15 +0000
      jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_7_1_2_3_1__1321710200.rb YAMAGUTIseisei <seisei@x68k.net> - 2017-12-31 12:57 +0000
        jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_8_0_2_0_4__4020810200.rb YAMAGUTIseisei <seisei@hello.to> - 2018-02-04 10:52 +0000
          jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_8_0_4_0_1__1040810200.rb YAMAGUTIseisei <seisei@hello.to> - 2018-04-01 13:24 +0000
            jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_8_0_5_2_0__0250810200.rb YAMAGUTIseisei <seisei@hello.to> - 2018-05-20 12:21 +0000
              jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_8_0_7_0_1__1070810200.rb YAMAGUTIseisei <seisei@hello.to> - 2018-07-01 11:18 +0000
                jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_8_0_9_3_0__0390810200.rb YAMAGUTIseisei <seisei@hello.to> - 2018-09-30 11:48 +0000
                  jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_8_1_2_1_6__6121810200.rb YAMAGUTIseisei <seisei@hello.to> - 2018-12-16 09:16 +0000
                    jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_9_0_2_1_0__0120910200.rb YAMAGUTIseisei <seisei@hello.to> - 2019-02-10 13:16 +0000
                      jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_9_0_3_1_7__7130910200.rb YAMAGUTIseisei <seisei@hello.to> - 2019-03-17 09:53 +0000
                        jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_9_0_4_2_1__1240910200.rb YAMAGUTIseisei <seisei@hello.to> - 2019-04-21 10:40 +0000
                          jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_9_0_6_0_9__9060910200.rb YAMAGUTIseisei <seisei@hello.to> - 2019-06-09 09:28 +0000
                            jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_9_0_8_1_1__1180910200.rb YAMAGUTIseisei <seisei@hello.to> - 2019-08-12 10:10 +0000
                              jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_9_1_0_2_7__7201910200.rb YAMAGUTIseisei <seisei@hello.to> - 2019-10-27 12:29 +0000
                                jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_9_1_2_1_5__5121910200.rb YAMAGUTIseisei <seisei@hello.to> - 2019-12-15 12:24 +0000
                                jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_2_0_0_2_1_6__6120020200.rb YAMAGUTIseisei <seisei@hello.to> - 2020-02-16 16:30 +0000
                                jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_2_0_0_4_1_9__9140020200.rb YAMAGUTIseisei <seisei@hello.to> - 2020-04-19 16:59 +0000
                                  jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_2_0_0_7_0_5__5070020200.rb YAMAGUTIseisei <seisei@hello.to> - 2020-07-05 12:08 +0000
                                  jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_2_0_1_0_2_5__5201020200.rb YAMAGUTIseisei <seisei@hello.to> - 2020-10-25 11:16 +0000
                                  jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_2_1_0_1_1_0__0110120200.rb YAMAGUTIseisei <seisei@hello.to> - 2021-01-10 10:34 +0000
                                  jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_2_1_0_3_2_8_8230120200.rb YAMAGUTIseisei <seisei@hello.to> - 2021-03-28 15:48 +0000
                                  jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_2_1_0_4_2_4__4240120200.rb YAMAGUTIseisei <seisei@hello.to> - 2021-04-25 00:23 +0000
                                    jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_2_1_0_7_1_3__3170120200.rb YAMAGUTIseisei <seisei@hello.to> - 2021-07-13 12:15 +0000
                                      jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_2_1_1_0_0_8__8001120200.rb YAMAGUTIseisei <seisei@hello.to> - 2021-10-08 09:10 +0000
                                      jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_2_2_0_2_0_6__6020220200.rb YAMAGUTIseisei <seisei@hello.to> - 2022-02-06 15:29 +0000
                                      jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_2_2_0_3_0_6__6030220200.rb YAMAGUTIseisei <seisei@hello.to> - 2022-03-06 10:14 +0000
                                        jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_2_2_0_4_0_4__4040220200.rb YAMAGUTIseisei <seisei@hello.to> - 2022-04-04 15:20 +0000
                                          Debug ? ( Was : jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_2_2_0_4_0_4__4040220200.rb ) YAMAGUTIseisei <seisei@hello.to> - 2022-04-24 08:27 +0000
                                          jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_2_2_0_6_2_6__6260220200.rb YAMAGUTIseisei <seisei@hello.to> - 2022-06-26 14:52 +0000
                                            jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_2_2_1_0_1_7__7101220200.rb YAMAGUTIseisei <seisei@hello.to> - 2022-10-17 22:10 +0000
                                              jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_2_3_0_6_1_7__7160320200.rb "YAMAGUTIseisei(MasinZenmetu)" <seisei@hello.to> - 2024-01-07 14:44 +0000
            DoNotOpen:SJIS : Re : jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_2_0_0_7_0_5__5070020200.rb YAMAGUTIseisei <seisei@hello.to> - 2020-07-12 14:55 +0000

Page 1 of 2  [1] 2  Next page →


#2 — jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_7_0_6_3_0__0360710200.rb ( Was : Re: jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_6_0_7_0_7__7070610200.rb )

FromYAMAGUTIseisei <seisei@hello.to>
Date2017-08-08 03:18 +0000
Subjectjit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_7_0_6_3_0__0360710200.rb ( Was : Re: jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_6_0_7_0_7__7070610200.rb )
Message-ID<59892D82.4060203@hello.to>
23,24d22
< #  KS = (0 .. 9).to_a.join + ?-	# * '' higokan mruby 70410200	# ?0.upto # higokan mruby 70410200 # 7221410200 6ccae658 suzukaze	# q
< #  Ks = (0 .. 9).to_a.join + ?-	# * '' higokan mruby 70410200	# ?0.upto # higokan mruby 70410200 # 7221410200 6ccae658 suzukaze	# q
27d24
< #   k = Kernel.const_get k
35d31
< #    ! ! case k = k.to_s[1]
37c33,34
<     when ?r then '[]' == vs[0] + vs[-1]		# , Array	# q
---
> #    when ?r then '[]' == vs[0] + vs[-1]		# , Array	# q
>     when ?r then '[]' == vs[0] << vs[-1]	# , Array	# q
39,40d35
< #      s = KS + ?i == k ? '' : ?.		# Fixnum	# q 2
< #      s = Ks + ?i == k ? '' : ?.		# Fixnum	# q 2
42,43c37,40
< 	@@ks |= (0 .. 9).to_a.join + ?-		# * '' higokan mruby 70410200	# ?0.upto # higokan mruby 70410200 # 7221410200 6ccae658 suzukaze	# q
<       ) + ?i == k ? '' : ?.			# q 2
---
> #	@@ks |= (0 .. 9).to_a.join + ?-		# * '' higokan mruby 70410200	# ?0.upto # higokan mruby 70410200 # 7221410200 6ccae658 suzukaze	# q
> 	@@ks ||= (0 .. 9).to_a.join << ?-	# * '' higokan mruby 70410200	# ?0.upto # higokan mruby 70410200 # 7221410200 6ccae658 suzukaze	# q
> #      ) + ?i == k ? '' : ?.			# q 2
>       ) << ?i == k ? '' : ?.			# q 2
44a42
>     when ?y then vs.to_sym == v			# Symbol	# q
46d43
< #    end
68,71c65
< # def pid_g
< #   $$ || self
< # end
< # def pid_g() $$ || self end
---
> # def pid_g; $$ || self end
88,90d81
< # def asoc
< # end
<
195c186,192
<     @fml.(lb).assoc(sym)	# c
---
> #   @fml.(lb).assoc(sym)	# c
>     @fml.(lb).assoc(sym) || (	# c
> #     printf("Unkown code %s \n", OPTABLE_SYM[imem.get_opcode(cop)])
>       print("Unkown code #{sym} \n") # .to_s
>       return nil
> #     raise
>     )
197a195,210
>   def ta(ta, cop) [ta.shift || 'getarg_a', ta.shift || cop][0 .. ta.pop || 1] end
>
> #  def fvl(oi, th, fv, wd, cop)
> #  def fva(oi, th, fv, cop)
> #    [
> #      [-> {[fv[oi] = th[oi] = (ta(fv[oi], cop)), []]},
> #       -> {th += [[fv[oi] && ta(fv[oi], cop)], []][
> #		((wd = fv.width) <=> oi) >> 1]}][oi <=> 0].call, # .lazy
> #      th,
> #      wd
> #    ]
> #      ->(oi) {[fv[oi] = th[oi] = (ta(fv[oi], cop)), []]},	# l
> #      ->(oi) {th += [[fv[oi] && ta(fv[oi], cop)], []]	# l
> #  end
>
>
205c218,222
<   def s__r1_eq_sr01(*a) a[@@I_s__s][	 a[@@I_s__r1]] == a[@@I_s__s][a[@@I_s__r0] + 1] end
---
> #  def s__r1_eq_sr01(*a) a[@@I_s__s][	 a[@@I_s__r1]] == a[@@I_s__s][a[@@I_s__r0] + 1] end
>   def s__r1_eq_sr01(*a) a[@@I_s__s][	 a[@@I_s__r1]] ==
> 			a[@@I_s__s][	 a[@@I_s__r0] + 1] end
> # def s__r1_eq_sr01(*a) a[@@I_s__r1] &&
> #      a[@@I_s__s][a[@@I_s__r0] + 1] ==	 a[@@I_s__s][a[@@I_s__r1]] end
208d224
< #    knid(op[0], :Numeric) ? op.inject(:+) : self.send(*op)
222a239,242
>   (
> #   @imem = Imem.new	# higokan mruby 80410200
>     @@Imem = Imem.new
>     @@slp = Slp.new
224,234c244,252
< # @imem = Imem.new	# higokan mruby 80410200
<   @@Imem = Imem.new
<
<   @@fl = '~~ritepl'
<   @@idb = @@fl
<   @@fl += '.loc'
< # @@idb = 0.pid_g.to_xeh + @@idb	# +
< #   (rand 0xff).to_xeh +
< #   (Time.now.to_f - 0x3fffffff.to_f << 0x10).to_s.split('.')[0][-8..-1].to_xeh
< # @@dlm = '\n'
< # @@dlm = '__--__'
---
>     @@fl = '~~ritepl'
>     @@idb = @@fl
>     @@fl += '.loc'
> #   @@idb = 0.pid_g.to_xeh + @@idb	# +
> #     (rand 0xff).to_xeh +
> #     (Time.now.to_f - 0x3fffffff.to_f << 0x10).to_s.split(?.)[0][-8..-1].to_xeh	# q
> #   @@dlm = '\n'
> #   @@dlm = '__--__'
>   )
274c292,293
<       Slp.new.slp 0
---
> #      Slp.new.slp 0
>       @@slp.slp 0
408d426
< #    bf = 2 ** bfsz - 1	# kakezan
423,429c441,453
< #   ([] == a || case a when Array then true end.!) && (return a)	# t
<     a.map! { |v|
< ##    v.kind_of?(Array) ?  __send__(v, pc)  : v		# unwork ( thread ? )
< #     knid(v, :Array) ?  __method__(v, pc)  : v		# unwork ( thread ? )
< #     knid(v, :Array) ?  __callee__(v, pc)  : v		# unwork ( thread ? )
< #     knid(v, :Array) ?       st_id(v, pc)  : v
<       case v when Array then  st_id(v, pc)  else v end
---
> #   ([] == a || case a when Array then true end.!) && (return a)	# t 	# higokan mruby70410200 monami-ya.mrb60510200
> #    a.map! { |v|
> ###    v.kind_of?(Array) ?  __send__(v, pc)  : v		# unwork ( thread ? )
> ##     knid(v, :Array) ?  __method__(v, pc)  : v		# unwork ( thread ? )
> ##     knid(v, :Array) ?  __callee__(v, pc)  : v		# unwork ( thread ? )
> #      knid(v, :Array) ?       st_id(v, pc)  : v
> #      case v when Array then  st_id(v, pc)  else v end
>     a.map! { |a|
> ##    v.kind_of?(Array) ?  __send__(a, pc)  : a	 	# unwork ( thread ? )
> #     knid(a, :Array) ?  __method__(a, pc)  : a		# unwork ( thread ? )
> #     knid(a, :Array) ?  __callee__(a, pc)  : a		# unwork ( thread ? )
> #     knid(a, :Array) ?       st_id(a, pc)  : a
>       case a when Array then  st_id(a, pc)  else a end
431c455,456
<     return a[0] if 2 > a.size
---
> #    return a[0] if 2 > a.size
>     return a[0] if 1 >= a.size
437,439c462,465
< #print "#{pc.to_xeh}		#{opc}	#{op.to_xeh}\n" if ! knid(opc, :Numeric)
< case opc when Numeric then else
<   print "#{pc.to_xeh}		#{opc}	#{op.to_xeh}\n" end
---
> #case opc when Numeric then else
>     case opc when Numeric then true end || (
> #  print "#{pc.to_xeh}		#{opc}	#{op.to_xeh}\n" end
> print "#{pc.to_xeh}		#{opc}	#{op.to_xeh}\n")
456c482,483
< 	th[idx] = st_id(th[idx], pc - 1)
---
> 	th[idx] =  st_id(th[idx], pc - 1)  ;
> ####	th[idx] =  st_id(th[idx], pc - 1)  if ckth(th[idx], 0)	# fuguai taisaku
460c487,489
< 	  self.pl_es(pc, ['th', th])
---
> ####	if f = (th[idx].nil?.! && ckth(th[mx], 3))	# fuguai taisaku
> #	  self.pl_es(pc, ['th', th])
> 	  pl_es(pc, ['th', th])
464,465c493,496
< 	Slp.new.slp 0
< #	Slp.new.slp(0, 4096)
---
> #	Slp.new.slp 0
> 	@@slp.slp 0
> ##	Slp.new.slp(0, 4096)
> #	@@slp.slp(0, 4096)
467,468c498,499
< 	idx += f || idx < mx ? 1 : 0	##
< ####	idx += f && idx < mx ? 1 : 0	# fuguai taisaku	##
---
> #	idx += f && idx < mx ? 1 : 0	##
> 	f && idx += idx < mx ? 1 : 0	##
476,477c507,511
<     flg = true
<     loop do
---
>     apc = []
>     fpl = []
> #    flg = true
>     flg = [true]
>     loop {
479c513,514
<       pc = self.ctr_g if flg
---
> #      pc = self.ctr_g if flg
>       apc<< ctr_g if flg[0]	# p
481,482c516,518
< #     if pc != cto || ! flg
<       if 0 <= pc || ! flg
---
> #     if pc != cto or ! flg
> #     if pc >= 0 || ! flg
>       if flg[0].! || (apc.empty?.! && (pc = apc.shift) >= 0)
484c520,521
< 	f = self.plw(pc) if flg
---
> #	f = self.plw(pc) if flg
> 	fpl<< plw(pc) if flg[0]	# p
490,492c527,530
< #	(flg = [true][ith] || false) || (Slp.new.slp 0; redo)	###
< #	(flg = f.resume) ? f = nil : (Slp.new.slp 0; redo)	##
< 	if ! (flg = f.resume) then Slp.new.slp 0; redo end	##
---
> #	(flg = [true][ith] || false) || redo	###
> #	(flg = f.resume) ? f = nil : redo	##
> #	if ! (flg = f.resume) then redo end	##
> 	fpl.reject!.with_index { |v, n| flg[n] = v.resume}
494c532,533
<       Slp.new.slp
---
> #      Slp.new.slp
>       @@slp.slp
496c535
<     end
---
>     }
502,504c541,543
< #class ENVary < Array
< #  include M__ENVary
< #end
---
> # class ENVary < Array
> #   include M__ENVary
> # end
508c547
<   @@m = Mutex.new
---
> # @@m = Mutex.new
512,516c551,554
<     @s = s
<     @p = sp
<     @@m.lock
<       s = @s
<     @@m.unlock
---
> #   @@m.lock
>       @s = s
>       @p = sp
> #   @@m.unlock
521,523c559,563
< #   p id = self.object_id
< #    @p = a[0] if 0 < a.size
<     @p = a[0] if ! a.empty?
---
> #   id = self.object_id
> #   @@m.lock
>       @p = a[0] unless a.empty?
> #     p = @p
> #   @@m.unlock
524a565
> #   p
528,533c569,575
<     @@m.lock
<       s = @s
<     @@m.unlock
< #   s[@p.ipt a[0]]
< #    s[@p.sgp a[0]]
<     s[@p + a[0].sgp]
---
> #   @@m.lock
>       @s[@p + a[0].sgp]
> #     s[@p.ipt a[0]]
> #     s[@p.sgp a[0]]
> #     s[@p + a[0].sgp]
> #   @@m.unlock
> #   [mloc, @s[@p + a[0].sgp], @@m.unlock][1]
537c579
<     @@m.lock
---
> #   @@m.lock
541,542c583,585
<     @@m.unlock
<     a
---
> #   @@m.unlock
> #    a
> #   [mloc, @s[@p + a[0].sgp] = a[1], @@m.unlock][1]
543a587,592
>
>   def size; @s.size end
>
> # def mloc
> #   begin @@m.lock; rescue Slp.new.slp(0); retry end
> # end
597a647
>     @@slp = Slp.new
661c711,713
<   def fls(pc)	##
---
>   def fls2(pc, pl = [])	###
> # def fls2(pc)		###
> # def fls(pc)		##
675,676c727,728
< #     sp, wd, isr0, r0, r1, lm, sy = []		# higokan ? mruby 70410200
< #     sp, wd, isr0, r0, r1, lm, sy = [][0]
---
> #     sp, sz, isr0, r0, r1, lm, sy = []		# higokan ? mruby 70410200
> #     sp, sz, isr0, r0, r1, lm, sy = [][0]
681,684c733,735
< #      wd = 2
< #      ap = 0xf - 1; ap = (ap << wd) + ap + (1 << (wd - 1)) >> wd
<       wd = 4; ap = (1 << wd) - 1 - 1
<       wd -= 2; ap = (ap << wd) + ap + (1 << (wd - 1)) >> wd
---
> #      sz = 4; ap = (1 << sz) - 1 - 1
>       sz = 4; ap = 1 << sz
>       sz -= 2; ap = (ap << sz) + ap + (1 << (sz - 1)) >> sz
687a739
> #   lm = ->(isr0, r1) {imem.send(pr, *isr0, r1)}	# l
691c743,744
< 	r = (plr[r1] if 0 <= wd && r1 <= wd) || lm.(isr0, r1)	# c
---
> #	r = (plr[r1] if 0 <= sz && r1 <= sz) || lm.(isr0, r1)	# c
> 	r = if r1 <= sz && plr[r1].nil?.! then plr[r1] else lm.(isr0, r1) end	# c
695,696c748,753
< #	((sw = sp + wd) + 0xe).step(sw, -1) {	# memo	# higokan mruby 70410200	# bbab89e7 5211410200 tmtm
< 	wd.step(wd + ap -= ap >> 2) { |n| plr<< lm.(isr0, s[n])}	# p c
---
> #	((sw = sp + sz) + 0xe).step(sw, -1) {	# memo	# higokan mruby 70410200	# bbab89e7 5211410200 tmtm
> #	sz.step(sz - 1 + ap -= ap >> 2)	{ |n| plr<< lm.(isr0, s[n])}	# p c
> 	mx = sz - 1 + ap -= ap >> 2
> 	s.size < mx && mx = s.size
> 	(mx - sz).times { |n| plr<< lm.(isr0, s[n])}	# p c
> #	(mx - sz).times { |n| s[n] && plr<< lm.(isr0, s[n])}	# p c
703,706c760,764
<     Fiber.new {
<       loop do	##
< 	pl = lpl.pl_g(pc)	##
< 	sp ||= s.sp(pl[i_sp][0])
---
> #   Fiber.new {	##
> #     loop {	##
> #	pl = lpl.pl_g(pc)		##
> #	sp ||= s.sp(pl[i_sp][0])	##
> 	sp = s.sp(pl[i_sp][0])		###
714c772,773
< 	wd = plr.width
---
> #	sz = plr.width
> 	sz = plr.size
720,722c779,800
< #	return([! flg.include?(false), pl])	###
< 	Fiber.yield(! flg.include?(false))	##
<       end	##
---
> 	return([! flg.include?(false), pl])	###
> #	return(! flg.include?(false))		###
> #	Fiber.yield(! flg.include?(false))	##
> #     }		##
> #   }		##
>   end
>
>   def fls(pc)	###
>     lpl = @pl
>     i_th = lpl.affil('th', ?i)	# q
>
>     flg, pl = true
>
>     Fiber.new {
>       loop {
> 	flg ? pl = lpl.pl_g(pc) : pl[i_th] = lpl.pl_eg(pc, 'th')
> #	pl = lpl.pl_g(pc)	####
>
> 	flg, pl = fls2(pc, pl)
> 	Fiber.yield(flg)
> #	Fiber.yield(fls2(pc))	####
>       }
727c805,806
<   def iset(rg)	##
---
>   def iset2(rg, thi = 0, th = [])		###
> # def iset(rg)	##
735,739c814,818
<     fml = imem.fml('th', sym) || (
<       printf("Unkown code %s \n", OPTABLE_SYM[imem.get_opcode(cop)])
<       return
<     )
<     fmla = fml
---
>     fml = imem.fml('th', sym) # || (
> #     printf("Unkown code %s \n", OPTABLE_SYM[imem.get_opcode(cop)])
> #     return
> #   )
> #    fmla = fml
742,743c821
< #    ta = ->(l) { [l.shift || 'getarg_a', l.shift || cop][0 .. l.pop || 1] }	# l
<     ta = ->(ta) { [ta.shift || 'getarg_a', ta.shift || cop][0 .. ta.pop || 1] }	# l
---
> #    ta = ->(ta) { [ta.shift || 'getarg_a', ta.shift || cop][0 .. ta.pop || 1] }	# l
745,746c823
<
<     th = []	##
---
> #   th = []	##
749,755c826,829
< #    fvl = ->(oi) {[	# l
< #      -> {[fv[oi] = th[oi] = (ta.(fv[oi])), []]},	# l c
< #      -> {th += [[fv[oi] && ta.(fv[oi])], []][		# l c
< #	((wd = fv.width) <=> oi) >> 1]}][oi <=> 0].call # .lazy
< #    }
<     fvl = [->(oi) {[fv[oi] = th[oi] = (ta.(fv[oi])), []]},	# l c
< 	   ->(oi) {th += [[fv[oi] && ta.(fv[oi])], []][		# l c
---
> #    fvl = [->(oi) {[fv[oi] = th[oi] = (ta.(fv[oi])), []]},	# l c
> #	   ->(oi) {th += [[fv[oi] && ta.(fv[oi])], []][		# l c
>     fvl = [->(oi) {[fv[oi] = th[oi] = (imem.ta(fv[oi], cop)), []]},	# l
> 	   ->(oi) {th += [[fv[oi] && imem.ta(fv[oi], cop)], []][	# l
759c833
<       fml = fmla.dup
---
> #      fml = fmla.dup
760a835,836
>       i = -1
> #     bt[oi].each_slice(2).with_index { |k, i| k, v = k		# higokan mruby:70410200 monami-ya.mrb:60510200
762c838,839
< 	fv = fml.shift
---
> #	fv = fml.shift
> 	fv = fml[i += 1]
765d841
< #	  when 'th' then fv = fvl.(oi)	# c
766a843
> #	  when 'th' then (fv, th, wd) = imem.fvl(oi, th, fv, wd, cop)
774c851
<     thi = 0	##
---
> #    thi = 0	##
777,778c854,855
<     Fiber.new {
<       loop do	##
---
> #   Fiber.new {	##
> #     loop {	##
786c863,864
< 	Slp.new.slp 0
---
> #	Slp.new.slp 0
> 	@@slp.slp 0
788d865
< #	pl.pl_es(pc1, ['sym', 'th', k_sp_r].flat_map { |o| [o]<< ops.shift})	# p
793,795c870,885
< #	[thi + 1, th]	###
< 	Fiber.yield(thi += 1)	##
<       end	##
---
> 	[thi + 1, th]	###
> #	Fiber.yield(thi += 1)	##
> #     }		##
> #   }		##
>   end
>
>   def iset(rg)
>     thi = 0
>     th = []
>
>     Fiber.new {
>       loop {
> 	thi, th = iset2(rg, thi, th)
>
> 	Fiber.yield(thi)
>       }
939,940c1029,1030
< 	      @callinfo[@cp] = rg['sp']
< 	      @cp += 1
---
> #	      @callinfo[@cp] = rg['sp']
> #	      @cp += 1
942,943c1032,1033
< 	      @callinfo[@cp] = rg['pc']
< 	      @cp += 1
---
> #	      @callinfo[@cp] = rg['pc']
> #	      @cp += 1
945,946c1035,1037
< 	      @callinfo[@cp] = irep
< 	      @cp += 1
---
> #	      @callinfo[@cp] = irep
> #	      @cp += 1
> 	      @callinfo[@cp ... @cp += 3] = [rg['sp'], rg['pc'], irep]
1023c1114,1115
< 	Slp.new.slp 0
---
> #	Slp.new.slp 0
> 	@@slp.slp 0
1025c1117,1118
< 	Slp.new.slp
---
> #	Slp.new.slp
> 	@@slp.slp



-- 
YAMAGUTIseisei ( str_h__namae = { :sei => "山口" , :mei => "青星" } )
http://hello.to/seisei/	mailto:seisei@.68..net	tel:081-70-5152-1104
heiwa furiisekkusu 1tu

[toc] | [next] | [standalone]


#3 — jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_7_1_0_0_1__1001710200.rb

FromYAMAGUTIseisei <seisei@x68k.net>
Date2017-10-01 12:15 +0000
Subjectjit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_7_1_0_0_1__1001710200.rb
Message-ID<59D0DC7D.8010704@x68k.net>
In reply to#2
33d32
< #    when ?r then '[]' == vs[0] + vs[-1]		# , Array	# q
37d35
< #	@@ks |= (0 .. 9).to_a.join + ?-		# * '' higokan mruby 70410200	# ?0.upto # higokan mruby 70410200 # 7221410200 6ccae658 suzukaze	# q
39d36
< #      ) + ?i == k ? '' : ?.			# q 2
41c38,39
<       vs.each_byte { |c| s.include?(c) || break}
---
> #      vs.each_byte { |c| s.include?(c) || break}
>       vs.all? { |c| s.include?(c)}
195c193,194
<   def ta(ta, cop) [ta.shift || 'getarg_a', ta.shift || cop][0 .. ta.pop || 1] end
---
> #  def ta(ta, cop) [ta.shift || 'getarg_a', ta.shift || cop][0 .. ta.pop || 1] end
>   def ta(l, cop) [l.shift || 'getarg_a', l.shift || cop][0 .. l.pop || 1] end
218d216
< #  def s__r1_eq_sr01(*a) a[@@I_s__s][	 a[@@I_s__r1]] == a[@@I_s__s][a[@@I_s__r0] + 1] end
278,280c276,280
<     # 3080410200 : 5x2 ok ( gc ) : monami-ya.mrb 8270410200 813e2af8	# http://www.monami-ya.jp/
<     self[0] = [['th',	 'sym', 'ctr', 'cto'],	# mruby 20410200 : higokan ? : ary_many
< 	       [[thini], 0,	[0],   [0]]]	# mruby 70410200 : 4x2 ok , 5x2 ng
---
>     # 3080410200 : 5x2 ok ( gc ) : monami-ya.mrb 8270410200 813e2af8	# www.monami-ya.jp
> #    self[0] = [['th',	 'sym', 'ctr', 'cto'],	# mruby 20410200 : higokan ? : ary_many
> #	       [[thini], 0,	[0],   [0]]]	# mruby 70410200 : 4x2 ok , 5x2 ng
>     self[0] = [['th',	 'sym',	'ctr'],	# mruby 20410200 : higokan ? : ary_many
> 	       [[thini], 0,	[-1]]]	# mruby 70410200 : 4x2 ok , 5x2 ng
292d291
< #      Slp.new.slp 0
361a361,369
>
> #   n >= 0 && p(
> #     to_ia(n)
> ##    to_ia(n, pl)
> ##    Rg.new(to_ia(n)).to_ra
> ##    Rg.new(to_ia(n)).to_ra('th')
> ##    rg = Rg.new(to_ia(n)); rg['ctr']
> #   )
>
382a391,401
>   @@Plmg = ->(pi, pv) {pi.map { |v| [v, pv.shift]}}	# l
>   def to_ia(n, lpl = self)
>     if 0 == n
> #      self[n]
>       @@Plmg.(pl_g(-1), lpl[n][1])	# c
>     else
> #      @@Plmg.(pl_g(-1), self[n])	# c
>       @@Plmg.(pl_g(-1), lpl[n])		# c
>     end
>   end
>
387c406,411
<     (ctr = ctr_r.abs) != cto_r ? (ctr_s(-ctr); cto_s ctr) : -ctr
---
>
> ##    ctr = ctr.abs
> ##    ctr != cto ? (ctr_s -ctr; cto_s ctr) : -ctr
> #    (ctr = ctr_r.abs) != cto_r ? (ctr_s -ctr; cto_s ctr) : -ctr
>
>     [ctr = ctr_r, 0 <= ctr && ctr_s(-ctr)][0]
397,399c421,423
<   def cto_r
<     pl_eg('cto')[0]
<   end
---
> #  def cto_r
> #    pl_eg('cto')[0]
> #  end
406,409c430,433
<   def cto_s(cto)
<     pl_es(0, ['cto', [cto]])
<     cto
<   end
---
> #  def cto_s(cto)
> #    pl_es(0, ['cto', [cto]])
> #    cto
> #  end
438c462,463
<   def st_id(a, pc)
---
> #  def st_id(a, pc)
>   def s_id(a, pc)
442,447d466
< #    a.map! { |v|
< ###    v.kind_of?(Array) ?  __send__(v, pc)  : v		# unwork ( thread ? )
< ##     knid(v, :Array) ?  __method__(v, pc)  : v		# unwork ( thread ? )
< ##     knid(v, :Array) ?  __callee__(v, pc)  : v		# unwork ( thread ? )
< #      knid(v, :Array) ?       st_id(v, pc)  : v
< #      case v when Array then  st_id(v, pc)  else v end
449c468
< ##    v.kind_of?(Array) ?  __send__(a, pc)  : a	 	# unwork ( thread ? )
---
> ##    v.kind_of?(Array) ?  __send__(a, pc)  : a		# unwork ( thread ? )
452,453c471,474
< #     knid(a, :Array) ?       st_id(a, pc)  : a
<       case a when Array then  st_id(a, pc)  else a end
---
> ##     knid(a, :Array) ?       st_id(a, pc)  : a
> #     knid(a, :Array) ?       s_id(a, pc)  : a
> #      case a when Array then  st_id(a, pc)  else a end
>       case a when Array then  s_id(a, pc)  else a end
455d475
< #    return a[0] if 2 > a.size
460d479
< #    a.inject { |opc, op|
462d480
< #case opc when Numeric then else
464d481
< #  print "#{pc.to_xeh}		#{opc}	#{op.to_xeh}\n" end
468d484
< #    }
482,483c498,501
< 	th[idx] =  st_id(th[idx], pc - 1)  ;
< ####	th[idx] =  st_id(th[idx], pc - 1)  if ckth(th[idx], 0)	# fuguai taisaku
---
> #	th[idx] =  st_id(th[idx], pc - 1)  ;
> 	th[idx] =  s_id(th[idx], pc - 1)  ;
> #####	th[idx] =  st_id(th[idx], pc - 1)  if ckth(th[idx], 0)	# fuguai taisaku
> ####	th[idx] =  s_id(th[idx], pc - 1)  if ckth(th[idx], 0)	# fuguai taisaku
488d505
< #	  self.pl_es(pc, ['th', th])
493d509
< #	Slp.new.slp 0
495d510
< ##	Slp.new.slp(0, 4096)
498,499c513,514
< #	idx += f && idx < mx ? 1 : 0	##
< 	f && idx += idx < mx ? 1 : 0	##
---
> #	f && idx += idx < mx ? 1 : 0	##
> 	f && idx += (mx <=> idx) + 1 >> 1	##
532d546
< #      Slp.new.slp
572d585
< #     s[@p.sgp a[0]]
575d587
< #   [mloc, @s[@p + a[0].sgp], @@m.unlock][1]
581d592
< #      a = @s[@p.sgp a[0]] = a[1]
585d595
< #   [mloc, @s[@p + a[0].sgp] = a[1], @@m.unlock][1]
589,592d598
<
< # def mloc
< #   begin @@m.lock; rescue Slp.new.slp(0); retry end
< # end
619c625,626
<     i ||= @a.assoc('ctr')[1]
---
> #    i ||= @a.assoc('ctr')[1]
>     i ||= @a.assoc('ctr')[1] + 1
621d627
< #    self[@i] = a[0]
624d629
< #  def []=(*a, v)
627c632,633
<     i ||= @a.assoc('ctr')[1]
---
> #    i ||= @a.assoc('ctr')[1]
>     i ||= @a.assoc('ctr')[1] + 1
670d675
< #    (@pl = ENVary.new(rmth + 1, [thini], [], [])).plini
703c708
<     r = [r, r.map { |v| lpl.ckth(v, 1)}]
---
> #    r = [r, r.map { |v| lpl.ckth(v, 1)}]
706c711,712
<     r.map! { |v| [v[0], v[-1]]}
---
> #    r.map! { |v| [v[0], v[-1]]}
>     r = [r, r.map { |v| lpl.ckth(v, 1)}].map { |v| [v[0], v[-1]]}
733d738
< #      sz = 4; ap = (1 << sz) - 1 - 1
735c740,741
<       sz -= 2; ap = (ap << sz) + ap + (1 << (sz - 1)) >> sz
---
> #      sz -= 2; ap = (ap << sz) + ap + (1 << (sz - 1)) >> sz
>       sz -= 2; ap = ((ap << sz) + ap >> sz - 1) + 1 >> 1
743d748
< #	r = (plr[r1] if 0 <= sz && r1 <= sz) || lm.(isr0, r1)	# c
749,750c754,755
< #	sz.step(sz - 1 + ap -= ap >> 2)	{ |n| plr<< lm.(isr0, s[n])}	# p c
< 	mx = sz - 1 + ap -= ap >> 2
---
> #	mx = sz - 1 + ap -= ap >> 2
> 	mx = sz - 1 + ap = ap - (ap >> 2) & 0x3f
752,753c757,758
< 	(mx - sz).times { |n| plr<< lm.(isr0, s[n])}	# p c
< #	(mx - sz).times { |n| s[n] && plr<< lm.(isr0, s[n])}	# p c
---
> #	(mx - sz).times { |n| plr<< lm.(isr0, s[n])}	# p c
> 	(sz .. mx - 1).each { |n| plr<< lm.(isr0, s[n])}	# p c
772d776
< #	sz = plr.width
774d777
< #	ca[flg.inject(0) { |rv, v| rv <<= 1; rv |= v ? 0 : 1}].call
782c785
< #     }		##
---
> #     }	##
790c793,795
<     flg, pl = true
---
> #    flg, pl = true
>
>     pl = lpl.pl_g(pc)
794c799
< 	flg ? pl = lpl.pl_g(pc) : pl[i_th] = lpl.pl_eg(pc, 'th')
---
> #	flg ? pl = lpl.pl_g(pc) : pl[i_th] = lpl.pl_eg(pc, 'th')
799a805,806
>
> 	pl[i_th] = lpl.pl_eg(pc, 'th')
805,806c812,813
<   def iset2(rg, thi = 0, th = [])		###
< # def iset(rg)	##
---
> # def iset2(rg, thi = 0, th = [])		###
>   def iset(rg)	##
815,819d821
< #     printf("Unkown code %s \n", OPTABLE_SYM[imem.get_opcode(cop)])
< #     return
< #   )
< #    fmla = fml
<
821d822
< #    ta = ->(ta) { [ta.shift || 'getarg_a', ta.shift || cop][0 .. ta.pop || 1] }	# l
823c824
< #   th = []	##
---
>     th = []	##
826,830c827,832
< #    fvl = [->(oi) {[fv[oi] = th[oi] = (ta.(fv[oi])), []]},	# l c
< #	   ->(oi) {th += [[fv[oi] && ta.(fv[oi])], []][		# l c
<     fvl = [->(oi) {[fv[oi] = th[oi] = (imem.ta(fv[oi], cop)), []]},	# l
< 	   ->(oi) {th += [[fv[oi] && imem.ta(fv[oi], cop)], []][	# l
< 		((wd = fv.width) <=> oi) >> 1]}] # .lazy
---
> #    fvl = [->(oi) {[fv[oi] = th[oi] = (imem.ta(fv[oi], cop)), []]},	# l c
> #	   ->(oi) {th += [[fv[oi] && imem.ta(fv[oi], cop)], []][	# l c
> #		((wd = fv.width) <=> oi) >> 1]}] # .lazy
>     fvl = [->(oi) {th += [[fv[oi] && imem.ta(fv[oi], cop)], []][		# l c
> 	     ((wd = fv.width) <=> oi) >> 1]},
> 	   ->(oi) {[fv[oi] = th[oi] = (imem.ta(fv[oi], cop)), []]}] # .lazy	# l c
833d834
< #      fml = fmla.dup
838d838
< #	fv = fml.shift
842,843c842,843
< 	  when 'th' then fv = fvl[oi <=> 0].(oi)	# c
< #	  when 'th' then (fv, th, wd) = imem.fvl(oi, th, fv, wd, cop)
---
> #	  when 'th' then fv = fvl[oi <=> 0].(oi)	# c
> 	  when 'th' then fv = (fvl.delete_at(1) || fvl[0]).(oi)	# c
851,852c851,852
< #    thi = 0	##
< #    k_sp_r = pla.assoc('sp')[1]
---
>     thi = 0	##
> #    thio = thi - 1
854,863c854,867
< #   Fiber.new {	##
< #     loop {	##
< 	opa = opg.(thi)	# c
< #	opa.push(k_sp_r, [sp]) if 0 == thi
< 	opa.push(k_sp, [sp]) if 0 == thi
<
< 	pl.pl_es(pc1, opa)
< 	pl.ctr_s(pc1) if 0 == thi
<
< #	Slp.new.slp 0
---
>     Fiber.new {	##
>       loop {	##
> 	if 0 > pl.ctr_r || 0 != thi # && thi != thio
> 	  opa = opg.(thi)	# c
> 	  opa.push(k_sp, [sp]) if 0 == thi
>
> 	  pl.pl_es(pc1, opa)
>
> 	  pl.ctr_s(pc1) if 0 == thi
>
> #	  thio = thi
> 	  if 0 != thi && wd <= thi then thi = -1 end
> #	  if 0 != thi && wd <= thi && 0 < thio then thi = -1 end
> 	end
864a869
> #	@@slp.slp
869,882c874,887
< 	if 0 != thi && wd <= thi then thi = -1 end
< 	[thi + 1, th]	###
< #	Fiber.yield(thi += 1)	##
< #     }		##
< #   }		##
<   end
<
<   def iset(rg)
<     thi = 0
<     th = []
<
<     Fiber.new {
<       loop {
< 	thi, th = iset2(rg, thi, th)
---
> #	if 0 != thi && wd <= thi then thi = -1; th = [] end
> #	[thi + 1, th]	###
> 	Fiber.yield(thi += 1)	##
>       }		##
>     }		##
>   end
>
> #  def iset(rg)
> #    thi = 0
> #    th = []
>
> #    Fiber.new {
> #      loop {
> #	thi, th = iset2(rg, thi, th)
884,887c889,892
< 	Fiber.yield(thi)
<       }
<     }
<   end
---
> #	Fiber.yield(thi)
> #      }
> #    }
> #  end
919c924,925
<     rg = Rg.new([['ctr', 1], ['thi', 0], ['pc', @pc], ['sp', @sp], ['cop'], ['sym']])
---
> #    rg = Rg.new([['ctr', 1], ['thi', 0], ['pc', @pc], ['sp', @sp], ['cop'], ['sym']])
>     rg = Rg.new([['ctr', 0], ['thi', 0], ['pc', @pc], ['sp', @sp], ['cop'], ['sym']])
935,937d940
< #	  rg['cop'] = c
< #	  rg['sym'] = s
< #	  rg['cop'], rg['sym'] = opf(irep, rg['pc'])
956d958
< #####	  ise = iset(rg) if 0 == rg['thi']	##
958d959
< #	  rg['thi'] = ise.resume	##
962c963,968
< 	  (rg.push('pc', rg['pc']); rg.push('sp', rg['sp'])) if 0 == rg['thi']	##
---
> 	  if 0 <= rg['ctr', 1] && 0 == rg['thi']
> #	    (rg.push('pc', rg['pc']); rg.push('sp', rg['sp'])) if 0 == rg['thi']	##
> 	    rg.push('pc', rg['pc'])	##
> 	    rg.push('sp', rg['sp'])	##
> 	    rg['ctr', 1] += 1
> 	  end
965,973c971,975
< #	  rga.('push', nil, 'pc', rg['pc'])	# c
< 	  rg.push('pc', rg['pc'])
< 	  rg.push('sp', rg['sp'])
< 	  rg['ctr', 1] *= -1	# kakezan
<
< #	  while ! lpl.ctr_c do Slp.new.slp end
<
< 	  lpl.plini
< 	  @flag[0] = 2
---
> 	  if 0 <= rg['ctr', 1]
> 	    rg.push('pc', rg['pc'])
> 	    rg.push('sp', rg['sp'])
> 	    rg['ctr', 1] *= -1	# kakezan
> 	  end
974a977,978
> 	  if 0 == rg['ctr', 1]
> #	    while ! lpl.ctr_c do Slp.new.slp end
976c980,981
< 	  case rg['sym']
---
> 	    lpl.plini
> 	    @flag[0] = 2
978,979d982
< 	    # 何もしない
< #	  when :NOP
981,986c984
< 	    # 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(rg['cop']) - 1
< #	    next
---
> 	    case rg['sym']
988,996c986,987
< 	  when :JMPIF
< #	    if @stack[@sp + getarg_a(cop)] then
< #	    if @stack[sp + lpl.getarg_a(cop)] then
< 	    if @stack[imem.getarg_a(rg['cop'])] then
< #	      @pc = @pc + getarg_sbx(cop)
< #	      pc = pc + lpl.getarg_sbx(cop) - 1
< 	      rg['pc', -1] = rg['pc'] + imem.getarg_sbx(rg['cop']) - 1
< #	      next
< 	    end
---
> 	      # 何もしない
> #	    when :NOP
998,1002c989,990
< 	    # JMPNOT Ra, nでもしRaがnilかfalseならpcをnだけ増やす。ただし、nは符号付き
< 	  when :JMPNOT
< #	    if !@stack[@sp + getarg_a(cop)] then
< #	    if !@stack[sp + lpl.getarg_a(cop)] then
< 	    if !@stack[imem.getarg_a(rg['cop'])] then
---
> 	      # JMP nでpcをnだけ増やす。ただし、nは符号付き
> 	    when :JMP
1007d994
< 	    end
1009,1048c996,1004
< 	    # メソッドの先頭で引数のセットアップする命令。面倒なので詳細は省略
< 	  when :ENTER
< #	    rg['pc', -1] = rg['pc']
<
< 	    # SEND Ra, mid, anumでRaをレシーバにしてシンボルmidの名前のメソッドを
< 	    # 呼び出す。ただし、引数はanum個あり、R(a+1), R(a+2)... R(a+anum)が引数
< 	  when :SEND
< #	    a = getarg_a(cop)
< #	    a = lpl.getarg_a(cop)
< 	    a = imem.getarg_a(rg['cop'])
< #	    mid = @irep.syms[getarg_b(cop)]
< #	    mid = irep.syms[lpl.getarg_b(cop)]
< 	    mid = irep.syms[imem.getarg_b(rg['cop'])]
< #	    n = getarg_c(cop)
< #	    n = lpl.getarg_c(cop)
< 	    n = imem.getarg_c(rg['cop'])
< #	    newirep = Irep::get_irep(@stack[@sp + a], mid)
< 	    newirep = Irep::get_irep(@stack[a], mid)
< 	    if newirep then
< #	      @callinfo[@cp] = @sp
< #	      @callinfo[@cp] = rg['sp']
< #	      @cp += 1
< #	      @callinfo[@cp] = @pc
< #	      @callinfo[@cp] = rg['pc']
< #	      @cp += 1
< #	      @callinfo[@cp] = @irep
< #	      @callinfo[@cp] = irep
< #	      @cp += 1
< 	      @callinfo[@cp ... @cp += 3] = [rg['sp'], rg['pc'], irep]
<
< #	      @sp += a
< #	      rg['sp'] += a
< 	      rg['sp', -1] = rg['sp'] + a
<
< #	      @pc = 0
< 	      rg['pc', -1] = -1
< #	      @irep = newirep
< 	      irep = newirep
< #	      @irepid = @irep.id
< 	      @irepid = irep.id
---
> 	    when :JMPIF
> #	      if @stack[@sp + getarg_a(cop)] then
> #	      if @stack[sp + lpl.getarg_a(cop)] then
> 	      if @stack[imem.getarg_a(rg['cop'])] then
> #		@pc = @pc + getarg_sbx(cop)
> #		pc = pc + lpl.getarg_sbx(cop) - 1
> 		rg['pc', -1] = rg['pc'] + imem.getarg_sbx(rg['cop']) - 1
> #		next
> 	      end
1050,1055c1006,1014
< #	      next
< 	    else
< 	      args = []
< 	      n.times do |i|
< #		args.push @stack[@sp + a + i + 1]
< 		args<< @stack[a + i + 1]	# p
---
> 	      # JMPNOT Ra, nでもしRaがnilかfalseならpcをnだけ増やす。ただし、nは符号付き
> 	    when :JMPNOT
> #	      if !@stack[@sp + getarg_a(cop)] then
> #	      if !@stack[sp + lpl.getarg_a(cop)] then
> 	      if !@stack[imem.getarg_a(rg['cop'])] then
> #		@pc = @pc + getarg_sbx(cop)
> #		pc = pc + lpl.getarg_sbx(cop) - 1
> 		rg['pc', -1] = rg['pc'] + imem.getarg_sbx(rg['cop']) - 1
> #		next
1058,1060c1017,1065
< #	      @stack[@sp + a] = @stack[@sp + a].send(mid, *args)
< 	      @stack[a] = @stack[a].send(mid, *args)
< 	    end
---
> 	      # メソッドの先頭で引数のセットアップする命令。面倒なので詳細は省略
> 	    when :ENTER
> #	      rg['pc', -1] = rg['pc']
>
> 	      # SEND Ra, mid, anumでRaをレシーバにしてシンボルmidの名前のメソッドを
> 	      # 呼び出す。ただし、引数はanum個あり、R(a+1), R(a+2)... R(a+anum)が引数
> 	    when :SEND
> #	      a = getarg_a(cop)
> #	      a = lpl.getarg_a(cop)
> 	      a = imem.getarg_a(rg['cop'])
> #	      mid = @irep.syms[getarg_b(cop)]
> #	      mid = irep.syms[lpl.getarg_b(cop)]
> 	      mid = irep.syms[imem.getarg_b(rg['cop'])]
> #	      n = getarg_c(cop)
> #	      n = lpl.getarg_c(cop)
> 	      n = imem.getarg_c(rg['cop'])
> #	      newirep = Irep::get_irep(@stack[@sp + a], mid)
> 	      newirep = Irep::get_irep(@stack[a], mid)
> 	      if newirep then
> #		@callinfo[@cp] = @sp
> #		@cp += 1
> #		@callinfo[@cp] = @pc
> #		@cp += 1
> #		@callinfo[@cp] = @irep
> #		@cp += 1
> 		@callinfo[@cp ... @cp += 3] = [rg['sp'], rg['pc'], irep]
>
> #		@sp += a
> #		rg['sp'] += a
> 		rg['sp', -1] = rg['sp'] + a
>
> #		@pc = 0
> 		rg['pc', -1] = -1
> #		@irep = newirep
> 		irep = newirep
> #		@irepid = @irep.id
> 		@irepid = irep.id
>
> #		next
> 	      else
> 		args = []
> 		n.times do |i|
> #		  args.push @stack[@sp + a + i + 1]
> 		  args<< @stack[a + i + 1]	# p
> 		end
>
> #		@stack[@sp + a] = @stack[@sp + a].send(mid, *args)
> 		@stack[a] = @stack[a].send(mid, *args)
> 	      end
1062,1085c1067,1094
< 	    # RETURN Raで呼び出し元のメソッドに戻る。Raが戻り値になる
< 	  when :RETURN
< 	    if @cp == 0 then
< #	      return @stack[@sp + getarg_a(cop)]
< #	      return @stack[sp + lpl.getarg_a(cop)]
< 	      return @stack[imem.getarg_a(rg['cop'])]
< 	    else
< #	      @stack[@sp] = @stack[@sp + getarg_a(cop)]
< #	      @stack[sp] = @stack[sp + lpl.getarg_a(cop)]
< 	      @stack[0] = @stack[imem.getarg_a(rg['cop'])]
< 	      @cp -= 1
< #	      @irep = @callinfo[@cp]
< 	      irep = @callinfo[@cp]
< #	      @irepid = @irep.id
< 	      @irepid = irep.id
< 	      @cp -= 1
< #	      @pc = @callinfo[@cp]
< #	      pc = @callinfo[@cp] # - 1
< 	      rg['pc', -1] = @callinfo[@cp] # - 1
< 	      @cp -= 1
< #	      @sp = @callinfo[@cp]
< #	      sp = @callinfo[@cp]
< #	      rg['sp'] = @callinfo[@cp]
< 	      rg['sp', -1] = @callinfo[@cp]
---
> 	      # RETURN Raで呼び出し元のメソッドに戻る。Raが戻り値になる
> 	    when :RETURN
> 	      if @cp == 0 then
> #		return @stack[@sp + getarg_a(cop)]
> #		return @stack[sp + lpl.getarg_a(cop)]
> 		return @stack[imem.getarg_a(rg['cop'])]
> 	      else
> #		@stack[@sp] = @stack[@sp + getarg_a(cop)]
> #		@stack[sp] = @stack[sp + lpl.getarg_a(cop)]
> 		@stack[0] = @stack[imem.getarg_a(rg['cop'])]
> 		@cp -= 1
> #		@irep = @callinfo[@cp]
> 		irep = @callinfo[@cp]
> #		@irepid = @irep.id
> 		@irepid = irep.id
> 		@cp -= 1
> #		@pc = @callinfo[@cp]
> #		pc = @callinfo[@cp] - 1
> 		rg['pc', -1] = @callinfo[@cp] # - 1
> 		@cp -= 1
> #		@sp = @callinfo[@cp]
> #		sp = @callinfo[@cp]
> #		rg['sp'] = @callinfo[@cp]
> 		rg['sp', -1] = @callinfo[@cp]
> 	      end
> #	    else
> #	      printf("Unkown code %s \n", OPTABLE_SYM[get_opcode(cop)])
> #	      printf("Unkown code %s \n", OPTABLE_SYM[imem.get_opcode(cop)])
1087,1089d1095
< #	  else
< #	    printf("Unkown code %s \n", OPTABLE_SYM[get_opcode(cop)])
< #	    printf("Unkown code %s \n", OPTABLE_SYM[imem.get_opcode(cop)])
1091a1098
> 	rg['ctr', 1] -= 1 if 0 < rg['ctr', 1]
1093a1101,1102
> #	  rg['ctr', 1] -= 1 if flg[0]
>
1102,1103c1111,1112
<
< 	  rg['ctr', 1] *= -1	# kakezan
---
> 	  @pc = rg['pc']
> #	  rg['ctr', 1] *= -1	# kakezan
1114d1122
< #	Slp.new.slp 0
1117d1124
< #	Slp.new.slp



-- 
YAMAGUTIseisei ( str_h__namae = { :sei => "山口" , :mei => "青星" } )
http://hello.to/seisei/	mailto:seisei@.68..net	tel:081-70-5152-1104
heiwa furiisekkusu 1tu

[toc] | [prev] | [next] | [standalone]


#4 — jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_7_1_2_3_1__1321710200.rb

FromYAMAGUTIseisei <seisei@x68k.net>
Date2017-12-31 12:57 +0000
Subjectjit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_7_1_2_3_1__1321710200.rb
Message-ID<5A48DEAC.1030603@x68k.net>
In reply to#3
patch -e



942c
# print "#{rg['pc'].to_xeh}	#{rg['sym']}	#{rg['cop'].to_xeh}\n"
	  lpl.verb "#{rg['pc'].to_xeh}	#{rg['sym']}	#{rg['cop'].to_xeh}"
.
924d
842,843c
#	  when 'th' then fv = (fvl.delete_at(1) || fvl[0]).(oi)	# c
	  when 'th' then fv = fvl[-1].(oi); fvl.delete_at(1)	# c
.
831c
	     (oi <=> wd = fv.width) + 1 >> 1]},
.
827,829c
#    fvl = [->(oi) {th += [[fv[oi] && imem.ta(fv[oi], cop)], []][		# l c
#	     ((wd = fv.width) <=> oi) >> 1]},
#	   ->(oi) {[fv[oi] = th[oi] = (imem.ta(fv[oi], cop)), []]}] # .lazy	# l c
.
821c
    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
    )
.
814c
#    pc, sp, cop, sym = [rg['pc'], rg['sp'], rg['cop'], rg['sym']]
    pc, sp, cop, sym = rg.to_ra('pc', 'sp', 'cop', 'sym')
.
806,809c
#	pl[i_th] = lpl.pl_eg(pc, 'th')
#      }
#    }
#  end
.
802,803c
#	flg, pl = fls2(pc, pl)
#	Fiber.yield(flg)
.
797,800c
#    Fiber.new {
#      loop {
.
795c
#    pl = lpl.pl_g(pc)
.
789,793c
#  def fls(pc)	###
#    lpl = @pl
#    i_th = lpl.affil('th', ?i)	# q
.
785,786c
	Fiber.yield(flg.all?)			##
      }		##
    }		##
.
782c
#	return([! flg.include?(false), pl])	###
.
780c
# print "#{(pc - 1).to_xeh}			#{sym}	#{rs[1]}	#{rs[0]}\n"
	lpl.verb "#{(pc - 1).to_xeh}			#{sym}	#{rs[1]}	#{rs[0]}"
.
778a
	rs = [r1.to_xeh, r0.to_xeh]
.
765,769c
    Fiber.new {	##
      loop {	##
	pl = lpl.pl_g(pc)		##
	sp ||= s.sp(pl[i_sp][0])	##
#	sp = s.sp(pl[i_sp][0])		###
.
761c
#	rs[0] = r1.to_xeh
      },
.
759c
#	rs[1] = r0.to_xeh
      },
.
757d
754d
751c
#	rs = [r1.to_xeh, r0.to_xeh]
      },
.
749c
#	r = if r1 <= sz && plr[r1].nil?.! then plr[r1] else lm.(isr0, r1) end	# c
	r = r1 <= sz && plr[r1] || lm.(isr0, r1)	# c
.
745d
740d
719,722c
  def fls(pc)		##
.
717c
# def fls2(pc, pl = [])	###
.
711d
708d
701c
#      ENVary.new(0).plm(pc)
      Pl.new.plm(pc)
.
674,675c
#    thini = [false, 0]
#    @pl = ENVary.new(rmth + 1, [thini], [], [])
    @pl = ENVary.new
.
671c
#    rmth = @@rmth
.
651c
#   @@rmth = 39
    @@rmth = RMTH
.
640c
class Rg	# higokan ? mruby-thread:410200
.
637a

  def to_ra(*a)
    r = []
    a.each { |v| r<< self[v]}	# p
    r
  end
.
555,556c
# class Pl < ENVary
#   include M__Pl
.
551,552d
548c
####  GC.start	# g
.
513,514c
#	f && idx += (mx <=> idx) + 1 >> 1	##
	f && idx -= (idx <=> mx) >> 1	##
.
505a
#	  self.pl_es(pc, ['th', th])
.
498,501c
	th[idx] = s_id(th[idx], pc - 1)
####	th[idx] = s_id(th[idx], pc - 1) if ckth(th[idx], 0)	# fuguai taisaku
.
480,484c
#   opc, op = a
#    case opc when Numeric then true end || (
#print "#{pc.to_xeh}		#{opc}	#{op.to_xeh}\n")
#    (imem = @@Imem).mcall(opc, op) || op
    a, op = a
    case a when Numeric then true end || (
# print "#{pc.to_xeh}		#{a}	#{op.to_xeh}\n")
      verb "#{pc.to_xeh}		#{a}	#{op.to_xeh}")
    (imem = @@Imem).mcall(a, op) || op
#   (imem = @@Imem).send(opc, op) || op
.
468,474c
##    v.kind_of?(Array) ?	__send__(a, pc)  :    a		# unwork ( thread ? )
#     knid(a, :Array)	?     __method__(a, pc)  :    a
      case a when Array then  __method__(a, pc)  else a end
##    knid(a, :Array)	?     __callee__(a, pc)  :    a		# unwork ( thread ? )
#      case a when Array then  s_id(a, pc) else a end
.
466c
#   ([] == a || case a when Array then true end.!) && (return a)	# t 	# higokan mruby:70410200 monami-ya.mrb:60510200
.
464c
#   ([] == a || ! knid(a, :Array)) && return(a)		# t 	# higokan mruby:70410200 monami-ya.mrb:60510200
.
462c
  def verb(s)
    @@m.lock
      print s << "\n"
    @@m.unlock
  end

# private
end

# module M__Pl	# higokan ? mruby 70410200
class Pl < ENVary
  def initialize; end

.
458c
#      0 == lf && break
      0 == md >> bfsz && break
.
456c
#      lf = (md >>= bfsz) >> bfsz
      md >>= bfsz
.
430,434d
421,424d
403,410d
393,399c
#    if 0 == n
#      @@Plmg.(pl_g(-1), lpl[n][1])	# c
#    else
#      @@Plmg.(pl_g(-1), lpl[n])		# c
#    end
#    @@Plmg.(pl_g(-1), 0 == n ? lpl[n][1] : lpl[n])	# c
    @@Plmg.(@@pl0i, 0 == n ? lpl[n][1] : lpl[n])	# c
.
390a
  def ref_pl0i; @@pl0i = pl_g(-1) end
.
374c
#   self[n] = 0 == n ? [pl_g(-1), pl] : pl
    self[n] = 0 == n ? [@@pl0i, pl] : pl
.
358a
    else
#     case pl when Array then else pl = @@plini end	# higokan ? mruby 70410200
#     case pl when Array then true end || pl = @@plini	# higokan ? mruby 70410200
      unless knid(pl, :Array) then pl = @@plini end
.
356c
#      pl = pl[self.idx0(n)]
      pl = pl[idx0(n)]
.
353c
#    pl = self[self.idx0(n, 0)]
    pl = self[idx0(n, 0)]
.
316c
#   ploc(n) { |a| JSON::parse(ENV[@@idb + a[0]])}
#    ploc(n) { |a| JSON::parse(ENV[@@idb + a[0]] || 'null')}
#    ploc(n) { |a| JSON::parse((a = ENV[@@idb + a[0]]) && '[]' == (a[0] + a[-1])) ? a : 'null'))}
    ploc(n) { |a| (a = ENV[@@idb + a[0]]).nil? ? a :
	if '[]' == (a[0] + a[-1]) then JSON::parse(a) else a end}	# hoken
.
279,280c
#    self[0] = [['th',	 'sym',	'ctr'],
#    self[0] = [@@pl0i = pl0i, [[thini], 0, [-1]]]
    self[0] = [pl0i, [[thini], 0, [-1]]]

    ref_pl0i
.
276c
    # 3080410200 : 5x2 ok ( gc ) : monami-ya.mrb 8270410200 813e2af8	# http://www.monami-ya.jp/
.
272a
    pl0i = ['th', 'sym', 'ctr']
.
264c

    n = RMTH + 1
    a = @@plini
#    (0 .. n).each{ |i|
    0.step(n) { |i|
.
258,262c
#    if 1 > n
##     @n = -n
##     return self[@n]
#      return
#    end
.
256c
#    n = a.shift
.
252c
#  def initialize(*a)
  def initialize
.
249a

    @@thini = [false, 0]
    @@plini = [[@@thini], [], []]
    @@pl0i = nil
.
247c
#     (Time.now.to_f - 0x3fffffff.to_f << 0x10).to_s.split('.')[0][-8..-1].to_xeh
.
237a
    @@m = Mutex.new

.
219,220d
183,207c
#  def ta(l, cop) [l.shift || 'getarg_a', l.shift || cop][0 .. l.pop || 1] end
  def ta(l, cop) [l.shift || :getarg_a, l.shift || cop][0 .. l.pop || 1] end
.
108,126c
    @fml = @@fml
  end

  def fml(lb, sym)
    @fml.(lb).assoc(sym) # || (	# c
##     printf("Unkown code %s \n", OPTABLE_SYM[imem.get_opcode(cop)])
##     print("Unkown code #{sym} \n") # .to_s
#      return nil
##     raise
#    )
.
106a
  @@fml = ->(lb) { [	# l
    ['st',
      [:MOVE,	  :s__sr0],	 [:LOADL,   :s__i_pool_r0],
      [:LOADI,	  :s__r0 ],	 [:LOADSYM, :s__i_syms_r0],
      [:LOADSELF, :s__sr0],	 [:LOADT,   :s__r0],
      [:ADD,	  :s__sr01, :+], [:ADDI,    :s__r0,  :+],
      [:SUB,	  :s__sr01, :-], [:SUBI,    :s__r0,  :-],
      [:MUL,	  :s__sr01, :*], [:DIV,     :s__r01, :/],
      [:EQ,	  :s__r1_eq_sr01]],
    ['th',
      ['bt', ['sym', true, 'th', true], ['sym', false, 'th', true]],
      [:MOVE,	  [[:getarg_b    ], []]], [:LOADL,   [[:getarg_bx ], []]],
      [:LOADI,	  [[:getarg_sbx  ], []]], [:LOADSYM, [[:getarg_bx ], []]],
      [:LOADSELF, [[:mk_opcode, 0], []]], [:LOADT,   [[true, '', 0], []]],	# mk_opcode 0
      [:ADD,	  [[]		      ]], [:ADDI,    [[:getarg_c  ], []]],
      [:SUB,	  [[]		      ]], [:SUBI,    [[:getarg_c  ], []]],
      [:MUL, [[]]], [:DIV, [[]]], [:EQ, [[]]]
    ]].assoc(lb) # .lazy
  }

.
92c
#  @@slp = 0.00001
  @@slp = 0.000005
.
90c
## @@slp = 10	# conf.gem :github => 'kimushu/mruby-sleep'	# msleep usleep
# @@slp = 5	# conf.gem :github => 'kimushu/mruby-sleep'	# msleep usleep
.
55,59c
#  def sgp # (i)
#    self + self.abs >> 1
#  end
  def sgp; self + self.abs >> 1 end
.
51,53c
# def to_xeh	# unwork mruby 60410200 # mrblib/
#   self.to_i.to_s(0x10).reverse
# end
.
42c
    end # .!.!
  end

  def to_xeh
    case self when Numeric then self.to_i.to_s(0x10).reverse else ?- end
.
37,38c
#      ) << ?i == k ? '' : ?.			# q 2
      ) << :Fixnum == k.to_sym ? '' : ?.	# q
.
31,32c
#    case k = k.to_s[1]
    case k.to_s[1]	# .to_sym[1] # higokan mruby 70410200
.
2a
# RMTH = 39
RMTH = 7


.



-- 
YAMAGUTIseisei ( str_h__namae = { :sei => "山口" , :mei => "青星" } )
http://hello.to/seisei/	mailto:seisei@.68..net	tel:081-70-5152-1104
heiwa furiisekkusu 1tu

[toc] | [prev] | [next] | [standalone]


#5 — jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_8_0_2_0_4__4020810200.rb

FromYAMAGUTIseisei <seisei@hello.to>
Date2018-02-04 10:52 +0000
Subjectjit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_8_0_2_0_4__4020810200.rb
Message-ID<5A76E605.8090801@hello.to>
In reply to#4
-e



1157,1158c
# ensure
#   @rmt.kill	# nil ( monami-ya.mrb 60510200 ) , Assertion failed: ((obj)->tt != MRB_TT_FREE), function mrb_gc_mark, file src/gc.c, line 591. ( mruby 70410200 )
#   @rmt.join	# fuyou
.
1155a
#   }
.
1153c
#	@@slp.slp
	sl.slp
.
1151c
#	@@slp.slp 0
	sl.slp 0
.
1100c
#		return @stack[imem.getarg_a(rg['cop'])]
		break @stack[imem.getarg_a(rg['cop'])]
.
1097a
#		@rmt.kill
#		@rmt.join	# fuyou

.
1070c
#		@callinfo[@cp ... @cp += 3] = [rg['sp'], rg['pc'], irep]
		@callinfo[(@cp += 3) - 3, 3] = [rg['sp'], rg['pc'], irep]
.
969d
954a
#   loop {		# higokan ? monami-ya.mrb:60510200 mruby:70410200

.
936a
    sl = @@slp
.
909,921d
904c
#	Fiber.yield(thi += 1)	##
	Fiber.yield(thi + 1)	##
.
902d
896,897c

#	@@slp.slp 0
##	@@slp.slp
	sl.slp 0
#	sl.slp
.
892,894c
	if 0 == thi
	  pl.ctr_s(pc1)
	elsif wd <= thi
	  thi = -1
.
890c
	pl.pl_es(pc1, opa)
#	pl.ctr_s(pc1) if 0 == thi
#
#	if 0 != thi && wd <= thi then thi = -1 end
.
888c
#	opa = opg.(thi)	# c 
#	opa.push(k_sp, [sp]) if 0 == thi
	opa = opg.(thi) + [[k_sp, [sp]], []][thi <=> 0]	# c 
.
883,886c
#     loop {	##
#     7.times { |thi|
#     0.upto(NaN) { |thi|	# higokan ? mruby 70410200
      [1].cycle.with_index { |t, thi|
#	if ! pl.ctr_r || 0 != thi # && thi != thio
#	if 0 > pl.ctr_r || 0 != thi # && thi != thio
.
879,880c
#   thi = 0	##
.
870,871c
#	  when 'th' then fv = fvl[-1].(oi); fvl.delete_at(1)	# c 
	  when 'th'
	    fv = fvl[-1].(oi); fvl.delete_at(-(((fvl.size <=> 1) << 1) - 1))	# c 
.
842a
    sl = @@slp
.
815,832d
804,805c
#	lpl.verb "#{(pc - 1).to_xeh}			#{sym}	#{rs[1]}	#{rs[0]}"
	lpl.verb "#{(pc - 1).to_xeh}			#{sym}	#{r[0].to_xeh}	#{r[1].to_xeh}"
.
802c
#	rs = [r1.to_xeh, r0.to_xeh]
.
800c
#	sz = plr.size
.
797c
#	pr, sy = imem.fml('st', sym)[1 .. -1]
	pr || (pr, sy = imem.fml('st', sym)[1 .. -1])
.
783,784c
      },	# rs[0] = r1.to_xeh
.
776,781c
#	((sw = sp + sz) + 0xe).step(sw, -1) {	# higokan mruby 70410200	# bbab89e7 5211410200 tmtm
	if 0 == s.size
#	  @@slp.slp 0
	  sl.slp 0
	else
	  sz = plr.size
	  mx = sz - 1 + ap = ap - (ap >> 2) & 0x3f
	  s.size < mx && mx = s.size
#	  (sz .. mx - 1).each { |n| plr<< lm.(isr0, s[n])}	# p c 
	  (sz .. mx).each { |n| plr<< lm.(isr0, s[n])}	# p c 
	end
      },	# rs[1] = r0.to_xeh
.
773,774c
      },	# rs = [r1.to_xeh, r0.to_xeh]
.
771c
#	r = r1 <= sz && plr[r1] || lm.(isr0, r1)	# c 
	r = plr[r1] || lm.(isr0, r1)			# c 
#	r = (plr[r1] if r1 <= sz) || lm.(isr0, r1)	# c 
.
766a
#   lm = ->(isr0, r1) {imem.send(pr, *isr0, r1)}	# l 
.
762c
#      sz = 4; ap = 1 << sz
      sz = 4; ap = (1 << sz) + sz + 1
#      sz -= 2; ap = (ap << sz) + ap + (1 << (sz - 1)) >> sz
.
760c
#      rs = [?-, ?-]	# q 2 
.
751c
      sl = @@slp
.
728d
708,710c
    GC.disable	# g 	# gene gc enable : mruby 6170410200 d17506c1
.
697,702d
686a
#   @pla = Array.new($pcmax)
#   $pltini.call()
    @pl = ENVary.new

    @rmt = wkth


.
659,661c
#    r = []
#    a.each { |v| r<< self[v]}	# p 
#    r
    a.map { |v| self[v]}
.
614a
#   [@s[@p + a[0].sgp] = a[1]], @@m.unlock][0]
.
606a
#   [@s[@p + a[0].sgp], @@m.unlock][0]
.
594c
#      @p = a[0] unless a.empty?
      a.empty? || @p = a[0]
.
568c
#      @@slp.slp
      sl.slp
.
560,561d
557c
	fpl<< plw(pc) if flg[0]		# p 
.
554c
#      if flg[0].! || (apc.empty?.! && (pc = apc.shift) >= 0)
      if flg[0].! || (apc.empty?.! && 0 <= pc = apc.shift)
.
549d
545d
542a
    sl = @@slp
.
524,534c
#	if f = ckth(th[mx], 3)
#####	if f = (th[idx].nil?.! && ckth(th[mx], 3))	# fuguai taisaku
#	  pl_es(pc, ['th', th])
##	  idx = idx == mx ? 0 : idx + 1	###
#	  flg = true	##
#	end
#	@@slp.slp 0
##	@@slp.slp(0, 4096)
#	sl.slp 0
##	sl.slp(0, 4096)
#	Fiber.yield(flg && idx >= mx)	##
	Fiber.yield([if f = ckth(th[mx], 3)
####	Fiber.yield([if f = (th[idx].nil?.! && ckth(th[mx], 3))	# fuguai taisaku
			pl_es(pc, ['th', th])
			true
		      end,
#		      @@slp.slp(0)
		      sl.slp(0)
		    ][0] && idx >= mx)
.
512a
    sl = @@slp

.
503d
498,500d
496c
#   GC.start	# g 
.
487,491c
##    v.kind_of?(Array) ?				# unwork ( thread ? )
#     knid(a, :Array)	?     __method__(a, pc)	 :    a
      case a when Array then  __method__(a, pc)	 else a end
.
471c
#      print s << "\n"
      print s
.
469a
    s <<= "\n"
.
466c
#    end == true
    end.!.!
.
464d
461d
440,443d
426,428d
415,421c
#    @@Plmg.(@@pl0i, 0 == n ? lpl[n][1] : lpl[n])	# c 
    (@@plmg ||= ->(pi, pv) {pi.map { |v| [v, pv.shift]}}).(	# l 	# c 
	@@pl0i, 0 == n ? lpl[n][1] : lpl[n])
.
413c
#  @@Plmg = ->(pi, pv) {pi.map { |v| [v, pv.shift]}}	# l 
  @@plmg = nil
.
408c
    ary.each_slice(2) { |k, v| pl[self.affil(k, ?i)] = v}	# .shift(2) higokan mruby 70410200	# q 
.
371,372c
#      pl = pl[idx0(n)]
      pl = pl[@@Idx0.(n)]
.
368c
#    pl = self[idx0(n, 0)]
    pl = self[@@Idx0.(n, 0)]	# c 
.
365c
#   sleep 0; GC.start; sleep 0	# g 
.
363a
  @@Idx0 = ->(n = 0, t = 1) {n - ((n <=> t) >> 1)}	# l 
.
350,361c
# def idx0(n = 0, t = 1)
##  t > n ? n + 1 : n
##  n + (t > n ? 1 : 0)
##  n + [false, true].index(t > n)
##  n + (((t > n) && 1) || 0)
##  n + (t > n && 1 || 0)
##  n + ((t <=> n) & 1)[0]		# higokan mruby 70410200
##  n + (((t <=> n) + 1) & 2)[1]	# higokan mruby 70410200
##  n + ((((t <=> n) + 1) & 2) >> 1)
##  n + ((t <=> n) + 1 >> 1)
#   n - ((n <=> t) >> 1)
# end
.
339,341c
#     (0 .. @sz).each { |i| ary[i] = JSON::parse(ENV[@@idb] + n)}
.
327,330c
#    ploc(n) { |a| (a = ENV[@@idb + a[0]]).nil? ? a :
#	if '[]' == (a[0] + a[-1]) then JSON::parse(a) else a end}	# hoken
    ploc(n) { |a| (a = ENV[@@idb + a[0]]
#	).nil? ? a : if '[]' == (a[0] + a[-1]) then JSON::parse(a) else a end}	# hoken
	) && ('[]' == (a[0] << a[-1]) && a = JSON::parse(a)); a}	# hoken
.
321a

.
312d
302a
#     (s ||= @@slp).slp 0
.
295a
#   s = nil
.
293,294d
283c
    # 3080410200 : 5x2 ok ( gc ) : monami-ya.mrb 8270410200 813e2af8	# www.monami-ya.jp
.
269d
258,266d
216a
# def method_missing(*a) self.send(?s + a[0], *a[1 .. -1]) end	# higokan mruby 70410200
  def method_missing(*a) self.send(?s + a[0].to_s, *a[1 .. -1]) end


.
203,204c
#  def ta(l, cop) [l.shift || :getarg_a, l.shift || cop][0 .. l.pop || 1] end
  def ta(l, cop) [l.shift || :getarg_a, l.shift || cop][0 .. l[-1] || 1] end
.
201c
#     @stack[r1] = val
.
141,146c
#   @fml.(lb).assoc(sym)	# c 
    @@fml.(lb).assoc(sym)	# c 
.
136,138c
# def initialize
##  @fml = @@fml
# end
.
127,128c
      [:MOVE,	  [[:getarg_b	 ], []]], [:LOADL,   [[:getarg_bx ], []]],
      [:LOADI,	  [[:getarg_sbx	 ], []]], [:LOADSYM, [[:getarg_bx ], []]],
.
118,124c
#      [:MOVE,	  :s__sr0],	 [:LOADL,   :s__i_pool_r0],
#      [:LOADI,	  :s__r0 ],	 [:LOADSYM, :s__i_syms_r0],
#      [:LOADSELF, :s__sr0],	 [:LOADT,   :s__r0],
#      [:ADD,	  :s__sr01, :+], [:ADDI,    :s__r0,  :+],
#      [:SUB,	  :s__sr01, :-], [:SUBI,    :s__r0,  :-],
#      [:MUL,	  :s__sr01, :*], [:DIV,     :s__r01, :/],
#      [:EQ,	  :s__r1_eq_sr01]],
      [:MOVE,	  :__sr0],	[:LOADL,   :__i_pool_r0],
      [:LOADI,	  :__r0 ],	[:LOADSYM, :__i_syms_r0],
      [:LOADSELF, :__sr0],	[:LOADT,   :__r0],
      [:ADD,	  :__sr01, :+], [:ADDI,	   :__r0,   :+],
      [:SUB,	  :__sr01, :-], [:SUBI,	   :__r0,   :-],
      [:MUL,	  :__sr01, :*], [:DIV,	   :__sr01, :/],
      [:EQ,	  :__r1_eq_sr01]],
.
105a
#   (self.size << 4).times {
.
103,104c
#   (r - 1).times {usleep 0}; GC.start; r.times {usleep t}	# g 	# conf.gem :github => 'kimushu/mruby-sleep'	# msleep usleep
    (r - 1).times {sleep 0}; GC.start; r.times {sleep t}	# g 
.
99,100c
# @@slp = 100	# usleep	# hayai masin
.
97d
50c
#    case self when Numeric then self.to_i.to_s(0x10).reverse else ?- end
    case self when Numeric then self.to_s(0x10).reverse else ?- end
.
35,46c
#    case k.to_s[1]	# .to_sym[1] # higokan mruby 70410200
#    when ?r then '[]' == vs[0] << vs[-1]	# , Array	# q 
#    when ?u, ?i, ?l				# , Numeric, Fixnum, Float	# q 3 
#      s = (					# Fixnum
#	@@ks ||= (0 .. 9).to_a.join << ?-	# * '' higokan mruby 70410200	# ?0.upto # higokan mruby 70410200 # 7221410200 6ccae658 suzukaze	# q 
#      ) << :Fixnum == k.to_sym ? '' : ?.	# q 
#      vs.all? { |c| s.include?(c)}
#    when ?y then vs.to_sym == v			# Symbol	# q 
#    when ?t then vs == v			# String	# q 
#    end # .!.!
.
33c
#    vs = v.to_s
.
29,31c
#   return v.kind_of?(Object.const_get k) # if 0.kind_of?(Numeric)	# super
    return v.kind_of?(Kernel.const_get k) # if 0.kind_of?(Numeric)	# super
#   return v.kind_of?(k.constantize) # if 0.kind_of?(Numeric)	# RoR	# super
.
27c
#  @@ks = nil
.



-- 
YAMAGUTIseisei ( str_h__namae = { :sei => "山口" , :mei => "青星" } )
http://hello.to/seisei/	mailto:seisei@.68..net	tel:081-70-5152-1104
heiwa furiisekkusu 1tu

[toc] | [prev] | [next] | [standalone]


#7 — jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_8_0_4_0_1__1040810200.rb

FromYAMAGUTIseisei <seisei@hello.to>
Date2018-04-01 13:24 +0000
Subjectjit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_8_0_4_0_1__1040810200.rb
Message-ID<5AC0DD87.5060605@hello.to>
In reply to#5
e



./build/mrbgems/mruby-process/src/process.c

357a
  mrb_define_method(mrb, mrb->kernel_module, "usleep", mrb_ker_usleep, MRB_ARGS_REQ(1));	// kimushu/mruby-sleep
// mrb_define_method(mrb, mrb->kernel_module, "msleep", mrb_ker_msleep, MRB_ARGS_REQ(1));	// kimushu/mruby-sleep
.
191a

static mrb_value
mrb_ker_usleep(mrb_state *mrb, mrb_value self)	// kimushu/mruby-sleep
{
  mrb_int usecs;
  mrb_get_args(mrb, "i", &usecs);
  usleep(usecs);
  return mrb_nil_value();
}

/*
static mrb_value
mrb_ker_msleep(mrb_state *mrb, mrb_value self)	// kimushu/mruby-sleep	usleep yobi
{
  mrb_int msecs;
  mrb_get_args(mrb, "i", &msecs);

// for (; msecs > 0; --msecs) {
//  usleep(1000);
// }
// return mrb_nil_value();
				// IIJ , Tomoyuki Sahara , YAMAGUTIseisei
  time_t beg; // , end;
  struct timeval tv;

  beg = time(0);
  tv.tv_sec = 0;		// fuyou ?
  tv.tv_usec = msecs;
  if (0 > select(0, 0, 0, 0, &tv)) mrb_sys_fail(mrb,
	"mrb_ker_msleep failed"
//	"mrb_f_msleep failed"
  );
  return mrb_fixnum_value(time(0) - beg);	// float ?
}
*/

.



mruby-meta-circular-heiretu/mrblib/irep.rb 

53a
#	>> 1	# monami-ya.mrb
.
30a
#class Kernel
#  def const_get(k)
#    super(k.size > 1 ? k :	[[?r, :Array], [?u, :Numeric], [?i, :Fixnum],	# q 3 
#				 [?l, :Float], [?y, :Symbol],  [?t, :String]	# q 3 
#      ].assoc(k)[1]
#    )
#  end
#end

.
27c
#   ?i == m ? self[0][0].index(k) : self[m.afl(k, ?i)]	# q 2 
##  ?i != m ? self[m.__method__(k, ?i)] : self[0].index(self[0].assoc(k))	# q 2	# higokan mruby 70410200
    ?i != m ? self[m.afl(	k, ?i)] : self[0].index(self[0].assoc(k))	# q 2 
#   ?i != m ? self[m.afl(	k, ?i)] : loop {self[0].index(self[0].assoc(k) && break)}	# self.index(idx)	# fuguai taisaku	# q 2 
.
25c
  def afl(k, m = self)
.
21c
# alias_method hgt 
#  def width
  def hgt
.
11,13c
#  def to_xeh
#    self.to_i.to_s(0x10).reverse
#  end
.
3,6c
#  def to_i_from(k, i = 0)	# unwork ? ( thread ? )
##   self.is_a?(k) ? i + self.to_i : self	# unwork ? ( thread ? )
##   Class::k == self.class ? i + self.to_i : self	# unwork ? ( thread ? )
#    k.to_s == self.class.to_s ? i + self.to_i : self	# unwork ? ( thread ? )
#  end

  def to_xeh 
     case self when Numeric then self.to_s(0x10).reverse else ?- end	# q 
#    return ?- unless self.is_a?(Numeric)	# q 	# ok
#    self.to_s(0x10).reverse
.
1a
# gcc -Os

# class GC	# monami-ya.mrb	# http://www.monami-ya.jp/
# end
# def GC.start()   end
# def GC.disable() end

.



mruby-meta-circular-heiretu/sample/jit-1.rb

1146c
      end	# fl.empty?
.
1144d
1141d
1139d
1129a
	  pco = rg['pc']

.
1128c
####	  pco = rg.shift('pc')
	  rg['pc'] = rg['pc', 1]
.
1125c
#	  rg['pc', -1] += 1
.
1118c
#	if [true][rg['thi']]
	if ise.empty?
.
1115a
      end

      if fl.empty? # || ! ise.empty?
.
1102,1103c
#		pc = @callinfo[@cp]
#		rg['pc', -1] = @callinfo[@cp]
		rg['pc', -1] = @callinfo[@cp] + 1
.
1089d
1084,1086d
1063c
		rg['pc', -1] = 0 # -1
.
1055,1056c
#		@callinfo[(@cp += 3) - 3, 3] = [rg['sp'], rg['pc'], irep]
		@callinfo[(@cp += 3) - 3, 3] = [@sp, @pc, @irep]
.
1032d
1026c
		rg['pc', -1] = rg['pc'] + imem.getarg_sbx(rg['cop']) # - 1
.
1015c
		rg['pc', -1] = rg['pc'] + imem.getarg_sbx(rg['cop']) # - 1
.
1006c
	      rg['pc', -1] = rg['pc'] + imem.getarg_sbx(rg['cop']) # - 1
.
997a
#	    case sym.to_sym
.
990c
#	  if 0 == rg['ctr', 1]
	  if fl.empty?
	    rg['ctr', 1] = rg['ctr', 1].abs
.
985c
#	    rg.push('pc', rg['pc'])
	    rg.push('pc', rg['pc'] + 1)
.
983c
      else
        if fl.empty? || ! ise.empty?
.
976,981c
#	if 0 <= rg['ctr', 1] && 0 == rg['thi']
	if 0 <= rg['ctr', 1] && ! ise.empty?
#	  rg.push('pc', rg['pc'])	##
#	  rg.push('sp', rg['sp'])	##
#	  rg.push('pc', rg['pc', -1])
	  rg.push('pc', rg['pc', -1] + 1)
	  rg.push('sp', rg['sp', -1])
#	  rg['ctr', 1] += 1
	end
#	rg['ctr', 1] += 1 if 0 == rg['thi']
.
971,974c
#	thi, th = iset(sym, cop, sp, pc, thi, th)	###
#	  ise ||= iset(rg)
#	  [true][rg['thi'] = ise.resume] && ise = nil	##
#	[true][thi = (ise ||= iset(rg)).resume] && ise = nil	##	# higokan ? mruby 70410200
#	ise<< iset(rg) if 0 == rg['thi']	# p 	##
#	ise<< iset(rg) if ise.empty?		# p 
	ise<< iset(rg) if 0 == fl.size + ise.size	# p 
#	rg['thi'] = ise.resume	##
#	ise.reject! { |fis| [true][fis.resume]}
	ise.reject! { |fis| [true][rg['thi'] = fis.resume]}
.
968,969c
#     if 'J' != rg['sym'][0]	# higokan mruby 70410200
      if ?J != rg['sym'].to_s[0] && ! [:ENTER, :SEND, :RETURN, :NOP].include?(rg['sym'])	# q 
#      if ?J != sym = rg.shift('sym').to_s[0] && ! [:ENTER, :SEND, :RETURN, :NOP].include?(rg['sym'])	# q 
.
966c
#      if flg[0] || 0 != rg['thi']
#      if fl.empty? || 0 != rg['thi']
#	if fl.empty? || ! ise.empty?
.
964c
#      fl && (flg[0] = fl.resume) && fl = nil	##
      fl[0] && fl[0].resume && fl = (fl[1 .. -1] || [])
.
962d
957d
954a
#	    fl ||= [fls(rg['pc'])][@flag[0] <=> 0]	##
#	    fl = fls(rg['pc'])	##
#	    fl += [[fls(rg['pc'])], []][@flag[0] <=> 0] 	##
	    fl += [[fls(pco)], []][@flag[0] <=> 0] 	##
	  end
.
951,953c
	    c, s = opf(irep, rg['pc'])
	    rg.push('cop', c)
	    rg.push('sym', s)
.
945,949c
#	    rg['ctr', 1] *= -1	# kakezan
#	  end
	  if 0 <= rg['ctr', 1]
#	    sp = @sp
	    @stack.sp(rg['sp'] = @sp) # + 0
#	    @stack.sp(rg.push('sp', @sp) # + 0
.
943c
#	  if 0 > rg['ctr', 1]
.
941c
#      if flg[0]
      if fl.empty?
.
936a
    pco = rg['pc']
.
934a
    fl = []
    ise = []
.
932c
#    flg = Array.new(@@rmth + 1) {true}
.
928c
    i_th = lpl.afl('th', ?i)	# q 
.
890,891d
886c
	elsif ht <= thi
.
882c
#	if 0 != thi && ht <= thi then thi = -1 end
.
857c
#	    fv = fvl[-1].(oi); fvl.delete_at(-(((fvl.size <=> 1) << 1) - 1))	# c 
	    fv = fvl[-1].(oi); fvl.delete_at(((1 <=> fvl.size) << 1) + 1)	# c 
.
855c
#	  when 'th' then fv = (fvl.delete_at(1) || fvl[0]).(oi)	# c 
.
844c
#	     (oi <=> ht = fv.hgt) + 1 >> 1]},
	     ((ht = fv.hgt) <=> oi) >> 1]},
.
840,842d
838c
    ht = 1
.
820d
816a
  @@fls2 = nil
  def fls(pc)
    pc = ~ pc
#    lpl = @pl
#    i_th = lpl.afl('th', ?i)	# q 

#    pl = lpl.pl_g(pc)

    @@fls2 ||= fls2
    Fiber.new {
      Fiber.yield(false)
      loop {
#	flg, pl = fls2(pc, pl)
#	Fiber.yield(flg)
#	Fiber.yield(fls2(pc))	####
	Fiber.yield(@@fls2.resume(pc))
#	Fiber.yield(flg.resume(pc))
	0 > pc && pc = ~ pc

#	pl[i_th] = lpl.pl_eg(pc, 'th')
      }
    }
  end

.
811,812c
#	Fiber.yield(flg.all?)			##
	pc = Fiber.yield(flg.all?)		##
.
802d
798d
790a
	if 0 > pc
	  pc = ~ pc
#	  s = Stack.new; sp = nil; plr = []
#	  i = @irep #.dup
	  sp = nil; plr = []
	  pr = nil
	end

.
789c
#    Fiber.new {	##
    Fiber.new { |pc|	##
.
778,781c
#	  mx = sz - 1 + ap = ap - (ap >> 2) & 0x3f
#	  s.size < mx && mx = s.size
#	  (sz .. mx).each { |n| plr<< lm.(isr0, s[n])}	# p c 
	  plr += lm.(isr0, s[sz .. sz - 1 + ap = ap - (ap >> 2) & 0x3f])	# c 
.
774d
760,761c
#    lm = ->(isr0, r1) {r1 && imem.send(pr, *isr0, r1)}	# l 
    lm = ->(isr0, r1) {imem.send(pr, *isr0, r1)}	# l 
.
756d
754d
752d
748d
745a
#      s = []; sp = nil; plr = []
.
741c
#     i_th = lpl.afl('th', ?i)	# q 
.
736,737c
# def fls2(pc)		##
# def fls(pc)		##
  def fls2		##
.
730,731c
#    r = [r, r.map { |v| lpl.ckth(v, 1)}].map { |v| [v[0], v[-1]]}
#    [pl[lpl.afl('sym', ?i)].to_sym, *r]	# q 
    [pl[lpl.afl('sym', ?i)].to_sym,	# q 
	*[r, r.map { |v| lpl.ckth(v, 1)}].map { |v| [v[0], v[-1]]}]
.
727c
    r = pl[lpl.afl('th', ?i)]		# q 
.
700,701c
#   @plb = @pla.dup.map { |a| a[1] = @pl.afl(a[1], ?i); a}	# higokan ? mruby 70410200	# q 
    @@plb ||= @@pla.map { |a| [a[0], @pl.afl(a[1], ?i)]}	# q 
.
652,654d
607c
#   [@s[a[0] + @p] = a[1]], @@m.unlock][0]
.
604c
#      a = @s[@p + a[0].sgp] = a[1]
      @s[a[0] + @p] = a[1]
.
597,598c
#   [@s[a[0] + @p], @@m.unlock][0]
.
594c
#      @s[@p + a[0].sgp]
      @s[a[0] + @p]
.
588c
#    @p
.
586a
      @p = pt
.
584,585c
#      a.empty? || @p = a[0]
.
581c
# def sp(*a)
  def sp(pt)
.
555,558c
#	fpl.reject!.with_index { |v, n| flg[n] = v.resume}
      fpl.reject! { |fb| fb.resume}
#      end
####  sl.slp
.
547,548c
#	fpl<< plw(pc) if flg[0]		# p 
.
544,545c
#      if flg[0].! || (apc.empty?.! && 0 <= pc = apc.shift)
.
539,540c
      sl.slp

      pc = ctr_g
#      apc<< ctr_g if flg[0]	# p 
      fpl<< plw(pc) if pc && 0 <= pc	# p 
.
537c
#    flg = [true]
.
535c
#    apc = []
.
525,526c
#		    ][0] && idx >= mx)
		    ][0] && f2)
#	f && idx -= (idx <=> mx) >> 1	##
	f && f2.! && idx += 1	##
.
523d
520c
#			pl_es(pc, ['th', th])
			f2 = idx >= mx && pl_es(pc, ['th', th])
.
505,514c
	mx = thn.hgt
#	mx ||= thn.hgt
.
502c
#	th = th[0 .. (mx = thn.hgt)]	####
.
497c
    f = nil; mx = nil
#   f2 = false
.
492c
#   i_th = self.afl('th', ?i)	# # higokan mruby 10410200 ( irep.rb )	# q 
.
457d
444,451c
#   while (0 == 1 & md) == a[(md & bf) >> 1]
##	((a[(md & bf) >> 1] ? 0 : 1) == 1 & md)
##	([true, false][1 & md] == a[(md & bf) >> 1])
#     md >>= bfsz
###   0 == lf ? return(false) : (md &= bf if 0 == lf >> bfsz)	# ? mruby 70410200
#     0 == md >> bfsz && break
#   end.!.!

    (0 == 1 & md) == a[(md & bf) >> 1]
.
441d
426c
#    pl_es(0, ['ctr', [ctr]])
    pl_es(0, ['ctr', ctr])
.
422c
#    pl_eg('ctr')[0]
    pl_eg('ctr')
.
418c
#    [ctr = ctr_r, 0 <= ctr && ctr_s(-ctr)][0]
    cta = pl_g(0).afl('ctr', self)
    [cta.shift, pl_es(0, ['ctr', cta])][0]
.
408,415c
#  def ref_pl0i; @@pl0i = pl_g(-1) end
#  @@plmg = nil
#  def to_ia(n, lpl = self)
#    (@@plmg ||= ->(pi, pv) {pi.map { |v| [v, pv.shift]}}).(	# l 	# c 
#	@@pl0i, 0 == n ? lpl[n][1] : lpl[n])
#  end
.
404c

#    ary.each_slice(2) { |k, v| pl[self.afl(k, ?i)] = v}	# .shift(2) higokan mruby 70410200	# q 
    ary.each_slice(2) { |k, v|	# .shift(2) higokan mruby 70410200
      i_k = self.afl(k, ?i)	# q 
#     'ctr' == k && case v when Array then true end.! ? pl[i_k]<< v : pl[i_k] = v	# p 	# higokan ? mruby 70410200
      'ctr' == k && knid(v, :Array).! ? pl[i_k]<< v : pl[i_k] = v	# p 
##    pl[i_k] = 'ctr' == k ? [v].flatten : v
    }
.
402d
395c
    pl_g(n).afl(k, self)
.
391c
#   self[n] = 0 == n ? pl_g(-1).transpose[0].zip(pl) : pl	# higokan mruby 70410200
    self[n] = 0 == n ? (@@plmg ||= ->(pi, pv) {pi.map { |v|	# l 
#	v[1] = pv.shift; v}}).(pl_g(-1), pl) : pl	# c 
	[v[0], pv.shift]}}).(pl_g(-1), pl) : pl		# c 
.
389a
#    (@@plmg ||= ->(pi, pv) {pi.map { |v| [v, pv.shift]}}).(	# l 	# c 
#	@@pl0i, (0 == n && lpl = lpl[0]; lpl[n + (n <=> 0 & 1 ^ 1)]))
.
388a
  @@plmg = nil
.
377,385d
374c
#      unless knid(pl, :Array) then pl = @@plini end
      pl ||= @@plini
.
370a
#     (nil == @@fxnm) && @@fxnm = (Float == self.afl('Numeric')[0].class)
#     (nil == @@fxnm) && @@fxnm = (Float == self.afl('sym')[0].class)
.
366,369c
#   if 1 > n then pl = pl[idx0(n)] end
#    if 1 > n
    if 0 == n
      pl = @@Pldv.(pl)	# c 
#     (nil == @@fxnm) && @@fxnm = (Float == self.afl('ctr')[0].class
.
364c
#    pl = self[@@Idx0.(n, 0)]	# c 
    pl = self[@@idx0.(n, 0)]	# c 
.
362d
360a

.
358c
# @@Idx0 = ->(n = 0, t = 1) {n - ((n <=> t) >> 1)}	# l 
  @@idx0 = nil
  @@Pldv = ->(pl) {pl.map { |a| a[1]}}	# l 
.
322,323d
285c
#    ref_pl0i
    @@idx0 ||= ->(n = 0, t = 1) {n - ((n <=> t) >> 1)}	# l 
.
278,283c
    # 3080410200 : 5x2 ok ( gc ) : monami-ya.mrb 8270410200 813e2af8	# http://www.monami-ya.jp/
    # mruby 20410200 : higokan ? : ary_many
    # mruby 70410200 : 4x2 ok , 5x2 ng
#    self[0] = [['th',	 'sym',	'ctr'],	# mruby 20410200 : higokan ? : ary_many
#	       [[thini], 0,	[-1]]]	# mruby 70410200 : 4x2 ok , 5x2 ng
#    self[0] = [pl0i, [[thini], 0, [-1]]]
#    self[0] =
#      [['th', [[thini]]], ['sym', [0]], ['ctr', []], ['Numeric', [0]]]
    self[0] = [['th', [[thini]]], ['sym', [6309]], ['ctr', []]]
.
274c
#    pl0i = ['th', 'sym', 'ctr']
.
265c
#    0.step(n) { |i|
    0.step(@@rmth + 1) { |i|
.
263c
#    n = RMTH + 1
.
258d
255c
#    @@pl0i = nil
.
252a
    @@rmth = RMTH
.
218,219c
#  def method_missing(*a) self.send(?s + a[0].to_s, *a[1 .. -1]) end
  def method_missing(*a)
    a[0] = ?s + a[0].to_s
    case a[4]
    when Array then return a[4].map{ |v| v.nil? ? v : send(*a[0 .. 3], v)}
    else send(*a)
    end
  end
.
116,122d
100,102c
    (r - 1).times {usleep 0}; GC.start; r.times {usleep t}	# g 	# conf.gem :github => 'kimushu/mruby-sleep'	# msleep usleep
#   (r - 1).times {msleep 0}; GC.start; r.times {msleep t}	# g 	# usleep yobi
#   (r - 1).times {sleep 0}; GC.start; r.times {sleep t}	# g 
.
96,98c
  @@slp = 5	# conf.gem :github => 'kimushu/mruby-sleep'	# msleep usleep
# @@slp = 0xbe	# nanosleep()
# @@slp = 0.000005
.
86c
# def hgt	# unwork ( thread ? ) # mrblib/
# def height	# unwork ( thread ? ) # mrblib/
.
83c
#    ?i != m ? self[m.afl(k, ?i)] : self[0][0].index(k)	# self.index(idx)	# q 2 
    ?i != m ? self[m.afl(k, ?i)] : self[0].index(self[0].assoc(k))	# self.index(idx)	# q 2 
.
81c
  def afl(k, m = self)	# unwork ( thread ? ) # mrblib/
.
75a
module M__Range
  def +(i = 1)
    (i + self.first .. i + self.last - (self.exclude_end? ? 1 : 0))
  end
end

class Range
  include M__Range
end

.
62,64d
48d
33,44c
#   case k.to_s[1]	# .to_sym[1] # higokan mruby 70410200
#	@@ks ||= (0 .. 9).to_a.join + ?-	# * '' higokan mruby 70410200	# ?0.upto # higokan mruby 70410200 # 7221410200 6ccae658 suzukaze	# q 
.
27d



-- 
YAMAGUTIseisei ( str_h__namae = { :sei => "山口" , :mei => "青星" } )
http://hello.to/seisei/	mailto:seisei@.68..net	tel:081-70-5152-1104
heiwa furiisekkusu 1tu

[toc] | [prev] | [next] | [standalone]


#8 — jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_8_0_5_2_0__0250810200.rb

FromYAMAGUTIseisei <seisei@hello.to>
Date2018-05-20 12:21 +0000
Subjectjit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_8_0_5_2_0__0250810200.rb
Message-ID<5B016832.8070806@hello.to>
In reply to#7
1198,1204c
      rg.shift 'cop'
#     rg.shift 'sym'
#      sl.slp 0
      sl.slp
.
1193,1196c
      rg.shift 'sp'
#     @sp = sp
      @sp = rg['sp']
      @irep = irep
.
1191c
#     @pc = pc + 1
#     rg['pc', -1] += 1
#     rg.delete_at('pc', 1)
      rg.shift 'pc'
      rg['pc'] = rg['pc', 1]
      @pc = rg['pc']
.
1172,1189c
#      if fl.empty? # || ! ise.empty?
#	rg['ctr', 1] -= 1 if 0 < rg['ctr', 1]
#
#	if ise.empty?
#
#	  @flag[0] >>= 1
##	  @flag[0] >>= (1 - (thi <=> 0))
.
1169c
	else
	  sl.slp
	  next
	end	# fl[0].empty?
.
1167a
#	  else
#	    printf("Unkown code %s \n", OPTABLE_SYM[get_opcode(cop)])
#	    printf("Unkown code %s \n", OPTABLE_SYM[imem.get_opcode(cop)])
.
1138,1166c
#	      @stack[@sp + a] = @stack[@sp + a].send(mid, *args)
	      @stack[a] = @stack[a].send(mid, *args)
	    end

	    # RETURN Raで呼び出し元のメソッドに戻る。Raが戻り値になる
	  when :RETURN
	    if @cp == 0 then
#	      return @stack[@sp + getarg_a(cop)]
#	      return @stack[sp + lpl.getarg_a(cop)]
#	      return @stack[imem.getarg_a(rg['cop'])]
	      break @stack[imem.getarg_a(rg['cop'])]
	    else
#	      @stack[@sp] = @stack[@sp + getarg_a(cop)]
#	      @stack[sp] = @stack[sp + lpl.getarg_a(cop)]
	      @stack[0] = @stack[imem.getarg_a(rg['cop'])]
	      @cp -= 1
#	      @irep = @callinfo[@cp]
	      irep = @callinfo[@cp]
#	      @irepid = @irep.id
	      @irepid = irep.id
	      @cp -= 1
#	      @pc = @callinfo[@cp]
#	      pc = @callinfo[@cp] # - 1
#	      rg['pc', -1] = @callinfo[@cp]
	      rg['pc', -1] = @callinfo[@cp] + 1		# bagu syuusei
	      @cp -= 1
#	      @sp = @callinfo[@cp]
#	      sp = @callinfo[@cp]
#	      rg['sp'] = @callinfo[@cp]
	      rg['sp', -1] = @callinfo[@cp]
.
1134,1135c
#	      next
	    else
	      args = []
	      n.times do |i|
#		args.push @stack[@sp + a + i + 1]
		args<< @stack[a + i + 1]	# p 
.
1126,1132c
#	      @pc = 0
	      rg['pc', -1] = 0
#	      @irep = newirep
	      irep = newirep
#	      @irepid = @irep.id
	      @irepid = irep.id
.
1119,1124c
#	      @sp += a
	      rg['sp', -1] = rg['sp'] + a
.
1115,1117c
	    # SEND Ra, mid, anumでRaをレシーバにしてシンボルmidの名前のメソッドを
	    # 呼び出す。ただし、引数はanum個あり、R(a+1), R(a+2)... R(a+anum)が引数
	  when :SEND
#	    a = getarg_a(cop)
#	    a = lpl.getarg_a(cop)
	    a = imem.getarg_a(rg['cop'])
#	    mid = @irep.syms[getarg_b(cop)]
#	    mid = irep.syms[lpl.getarg_b(cop)]
	    mid = irep.syms[imem.getarg_b(rg['cop'])]
#	    n = getarg_c(cop)
#	    n = lpl.getarg_c(cop)
	    n = imem.getarg_c(rg['cop'])
#	    newirep = Irep::get_irep(@stack[@sp + a], mid)
	    newirep = Irep::get_irep(@stack[a], mid)
	    if newirep then
#	      @callinfo[@cp] = @sp
#	      @cp += 1
#	      @callinfo[@cp] = @pc
#	      @cp += 1
#	      @callinfo[@cp] = @irep
#	      @cp += 1
#	      @callinfo[(@cp += 3) - 3, 3] = [@sp, @pc, @irep]
	      @callinfo[-3 + @cp += 3, 3] = [@sp, @pc, @irep]
.
1091,1113c
	    # メソッドの先頭で引数のセットアップする命令。面倒なので詳細は省略
	  when :ENTER
.
1067,1089c
	    # JMPNOT Ra, nでもしRaがnilかfalseならpcをnだけ増やす。ただし、nは符号付き
	  when :JMPNOT
#	    if !@stack[@sp + getarg_a(cop)] then
#	    if !@stack[sp + lpl.getarg_a(cop)] then
	    if !@stack[imem.getarg_a(rg['cop'])] then
#	      @pc = @pc + getarg_sbx(cop)
#	      pc = pc + lpl.getarg_sbx(cop) - 1
	      rg['pc', -1] = rg['pc'] + imem.getarg_sbx(rg['cop'])
#	      next
	    end
.
1065a
	    end
.
1064c
	      rg['pc', -1] = rg['pc'] + imem.getarg_sbx(rg['cop'])
.
1060,1061c
	    # 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(rg['cop'])
#	    next

	  when :JMPIF
#	    if @stack[@sp + getarg_a(cop)] then
#	    if @stack[sp + lpl.getarg_a(cop)] then
	    if @stack[imem.getarg_a(rg['cop'])] then
.
1057,1058c
	    # 何もしない
	  when :NOP
.
1054,1055c
	  case sym
#	  case rg.shift('sym')
#	  case rg['sym']
.
1052a
	  lpl.plini
#	  @flag[0] = 2
.
1050,1051c
#	if fl.empty?
	unless fl[0][0]
	  rg.push('pc', rg['pc'] + 1)
	  rg.push('sp', rg['sp'])
	  rg['ctr', 1] = rg['ctr', 1].abs
#	  while ! lpl.ctr_c do Slp.new.slp end
.
1045,1048c
	if 0 <= rg['ctr', 1]
	  sym = rg.shift('sym')
#	  rg.push('pc', rg['pc'] + 1)
#	  rg.push('sp', rg['sp'])
	  rg['ctr', 1] *= -1	# kakezan
	end
.
1037,1043c
#	sym = rg.shift('sym')
.
1034d
1032c
	  rg.shift('sym')
.
1025,1029d
1014,1023c
#      if ?J != rg['sym'].to_s[0] && ! [:ENTER, :SEND, :RETURN, :NOP].include?(rg['sym'])	# q 
#     if rg['sym'] && ?J != rg['sym'][0]	# higokan mruby 70410200	# q 
      if rg['sym'] && ?J != rg['sym'].to_s[0] && ! [:ENTER, :SEND, :RETURN, :NOP].include?(rg['sym'])	# q 
	if 0 <= rg['ctr', 1] # && ! ise.empty?
#	  thi, th = iset(sym, cop, sp, pc, thi, th)	###
	  ise<< iset(rg)	# p 
#	  ise.reject! { |fis| [true][rg['thi'] = fis.resume]}
#	  fl<< fls(rg['pc'])	# p 
	  fl[0]<< fls(rg['pc'])	# p 
.
1010,1012c
#     flg[0], pl = fls(pc, pl) if 0 == @flag[0]	###
#      fl[0] && fl[0].resume && fl = (fl[1 .. -1] || [])
      fl[0][0] && fl[0][0].resume && fl[0] = (fl[0][1 .. -1] || [])
.
1006,1008c
#      ise.reject! { |fis| rg['thi'] = fis.resume; 0 == rg['thi']}
      ise.reject! { |fis| fis.resume}
.
1002,1004c
#	  lpl.verb "#{rg['pc'].to_xeh}	#{rg['sym']}	#{rg['cop'].to_xeh}"
      lpl.verb "#{rg['pc'].to_xeh}	#{rg['sym']}	#{rg['cop'].to_xeh}" if rg['sym']
.
998,999c
	c, s = opf(irep, rg['pc']) #### if pco != pc
	rg.push('cop', c)
	rg.push('sym', s)
.
975,996c
      if 0 <= rg['ctr', 1]
#	sp = @sp
#	@stack.sp(rg['sp'] = @sp) # + 0
	@stack.sp(rg['sp']) # + 0
.
969,970c
#    rg = Rg.new([['ctr', 0], ['thi', 0], ['pc', @sp], ['sp', @sp], ['cop'], ['sym']])
    rg = Rg.new([['ctr', 1], ['pc', @sp], ['sp', @sp], ['cop'], ['sym']])
#    pco = rg['pc']
.
966c
#    fl = []
    fl = [[], []]
.
963d
961c
#    @flag[0] = 1
.
931c
#	Fiber.yield(0 == thi)	##
	Fiber.yield(0 > thi)	##
#	rg = Fiber.yield(0 > thi)	##
#	thi += 1
.
929c
#	[thi, th]	###
.
924d
921a
#	thi += 1
.
905,915c
#	opa = opg.(thi) + [[k_sp, [sp]], []][thi <=> 0]	# c 
#	pl.pl_es(pc1, opa)
	pl.pl_es(pc1, opg.(thi) + [[k_sp, [sp]], []][thi <=> 0])	# c 
.
889,890c
#	    fv = fvl[-1].(oi); fvl.delete_at(((1 <=> fvl.size) << 1) + 1)	# c 
	    fv = (fvl.delete_at(((1 <=> fvl.size) << 1) + 1) || fvl[0]).(oi)	# c 
.
887d
875d
857a
#   pc1 = 0
.
855c
# def iset2	##
    pc, sp, cop, sym = rg.to_a('pc', 'sp', 'cop', 'sym')
#   pc, sp, cop, sym = nil
.
853d
846,847c
	@@slp.slp 0
.
842d
840d
838c
#     Fiber.yield(false)
.
836a

.
831,835d
821,822d
817,819c
#	lpl.verb "#{(pc - 1).to_xeh}			#{sym}	#{r[0].to_xeh}	#{r[1].to_xeh}"
	lpl.verb "#{pc.to_xeh}			#{sym}	#{r[0].to_xeh}	#{r[1].to_xeh}"
.
814,815c
#	ca[flg.inject(0) { |rv, v| rv = v ? 0 : 1 | rv << 1}].call
	flg[0] && ca[flg[1] ? 0 : 1].call
.
804,808c
#	sym, (r0, r1) = rslt pl	# higokan mruby 70410200	# bce75e27 2211410200 matz
.
802a
#	pl = lpl.pl_g(pc)	##
	pl = lpl.pl_g(pc1)	##
	sp ||= s.sp(pl[i_sp][0])
.
798,799c
	  pc1 = pc + 1
.
793c
#      sz = 4; ap = (1 << sz) + sz + 1

#	sz.step(wd - 2 + ap -= (ap + 2) >> 2)		{ |n| plr<< lm.(isr0, s[n])}	# p c 
#	sz.step(wd - 1 + ap -= ((ap + 2) >> 2) + 1)	{ |n| plr<< lm.(isr0, s[n])}	# p c 
#	sz.step(wd - 1 + ap -= (ap >> 2) + 1)		{ |n| plr<< lm.(isr0, s[n])}	# p c 
#	sz.step(wd - 1 + ap -= ((ap + 2) >> 1) + 1 >> 1)	{ |n| plr<< lm.(isr0, s[n])}	# p c 
#	sz.step(wd - 1 + ap -= (ap >> 1) >> 1) + 1)		{ |n| plr<< lm.(isr0, s[n])}	# p c 


.
787,790c
      } # ,	# rs[1] = r0.to_xeh
#     -> {	# flg[-1]
#     },	# rs[0] = r1.to_xeh
#     -> {}
.
782,785c
#	  plr += lm.(isr0, s[sz .. sz - 1 + ap = ap - (ap >> 2) & 0x3f])	# c 
	  plr += lm.(isr0, s[sz, -1 + ap -= (ap + 3) >> 2])	# c 
.
777c
##	((sw = sp + sz) + 0xe).step(sw, -1) {	# higokan mruby 70410200	# bbab89e7 5211410200 tmtm
#	sz.step(sz - 1 + ap -= (ap + 3) >> 2)	     { |n| plr<< lm.(isr0, s[n])}	# p c 
.
765,766c
    lm = ->(isr0, r1) {r1 && imem.send(pr, *isr0, r1)}	# l 
.
761,762c
#      sz = 4; ap = 1 << sz
#      sz -= 2; ap = ((ap << sz) + ap >> sz - 1) + 1 >> 1
      sz = 1; ap = @@fls_m
.
758a

.
754d
749c
      i_th = lpl.afl('th', ?i)	# q 
.
746a
      pc1 = 0
.
745a
##	  pl = lpl.pl_g(pc) ### fls
##	pl[i_th] = lpl.pl_eg(pc, 'th')	### fls

.
740a
  @@fls_w = 4; (@@fls_m = 1 << @@fls_w) + @@fls_w + 1
  @@fls_w -= 2
  @@fls_m = ((@@fls_m << @@fls_w) + @@fls_m >> @@fls_w - 1) + 1 >> 1
  @@fls_w = nil
.
735,736d
732c
    r = pl[lpl.afl('th', ?i)]	 	# q 
.
707a
#    @pl.nmrcf

.
702a
#   @pla = Array.new($pcmax)
#   $pltini.call()
    @pl = ENVary.new

    @rmt = wkth

.
684,691c
#    @flag = []
.
659c
  def to_a(*a)
.
653,655c
    i ||= @a.assoc('ctr')[1].abs
#   i ||= @a.assoc('ctr')[1] + 1
#   @a.assoc(a[0])[@i] = a[1]
#   @a.assoc(a.shift)[a[0] || @i] = v
.
646c
    i ||= @a.assoc('ctr')[1].abs
#   i ||= @a.assoc('ctr')[1] + 1
.
615d
611d
601d
590,596c
#   a.empty? || @p = a[0]
    @p = pt
#   @p
.
581,582c
      @p = sp; @s = s
#     @p = sp; @m = m; @s = s
.
578a
# def initialize(sp = 0, s = @@s, m = @@m)
.
567a

# private
# def nmrcf
#   @@nmrcf = Float == self.afl('Numeric')[0].class
# end
.
563d
561d
552d
547d
542d
540d
518,530c
	(mx &&= thn.hgt) || mx = 1
#	sl.slp(0, 4096)
#	Fiber.yield([if f = ckth(th[mx], 3)
#####	Fiber.yield([if f = (th[idx].nil?.! && ckth(th[mx], 3))	# fuguai taisaku
#			f2 = idx >= mx && pl_es(pc, ['th', th])
#			true
#		      end,
	Fiber.yield([(f = #### (th[idx].nil?.! && # fuguai taisaku
			ckth(th[mx], 3)) &&
			f2 = idx >= mx && (pl_es(pc, ['th', th]); true),
		sl.slp(0)
#	][0] && idx >= mx)
	][0] && f2)
#	(f =
#		ckth(th[mx], 3)
#####		th[idx].nil?.! && ckth(th[mx], 3)	# fuguai taisaku
#	) && f2 = idx >= mx && pl_es(pc, ['th', th])
#	sl.slp(0)
##	Fiber.yield(f && idx >= mx)
#	Fiber.yield(f && f2)
##	f && idx -= (idx <=> mx) >> 1	##
.
516c
#	mx = thn.hgt
.
508d
488,489c
#   return a[0] if 1 >= a.size
##  return a.ijr { |v| v.inject(@@imem.mcall) || v[0]}
.
485,486c
#     knid(a, :Array)	?     __method__(a, pc)  :    a
      case a when Array then  __method__(a, pc)  else a end
.
482a
    ([] == a || knid(a, :Array).! || 1 >= a.size) && (return a)		# t 
.
481c
#   ([] == a || ! knid(a, :Array)) && (return a)	# t 
.
436d
431d
425d
417,423d
406,407d
392,394c
#   self[n] = 0 == n ? (@@plmg ||= ->(pi, pv) {pi.map { |v|	# l 
#	[v[0], pv.shift]}}).(pl_g(-1), pl) : pl		# c 
    self[n] = 0 == n ? @@Plmg.(pl_g(-1), pl) : pl	# c 
#   self[n] = 0 == n ? pl_g(-1).map { |v| [v[0], pl.shift]} : pl
.
388,390d
386c
# @@plmg = nil
  @@Plmg = ->(pi, pv) {pi.map { |v| [v[0], pv.shift]}}	# l 
.
381a
#    @@nmrcf ? pl.mapr { |v| v.to_i_from(Numeric)} : pl	# furui mattn/mruby-json
.
379d
374d
370a
#    if 0 == n && ! flg
.
368,369c
#   if 1 > n then pl = pl[self.idx0(n)] end
.
364,366c
#    pl = self[@@idx0.(n, 0)]	# c 
    pl = self[0 > n ? ‾ n : n]
.
362a
#    if 0 > n then flg = true; n = ‾ n end
.
361c
#   sleep 0; GC.start; sleep 0
.
358c
#  @@idx0 = nil
.
323,325c
    ploc(n) { |a| (a = ENV[@@idb + a[0]]) &&
	('[]' == (a[0] << a[-1]) && a = JSON::parse(a)); a}
#	(('[]' == (a.rotate(-1)[0 .. 1]) && a = JSON::parse(a)); a}	# higokan monami-ya.mrb:60510200 mruby:70410200
#	knid(a, :Array) && JSON::parse(a)}
.
285,286c
#    @@idx0 ||= ->(n = 0, t = 1) {n - ((n <=> t) >> 1)}	# l 
.
280,282d
271d
266c
#    plini
.
261,262c
#    0.step(@@rmth + 1) { |i|
#    (0 .. @@rmth + 1).each{ |i|
    1.step(@@rmth + 1) { |i|
.
259c
    plini

.
252d
210c
#    a[0] = ?s + a[0].to_s
    a[0] = ?s << a[0].to_s
.
208d
194d
93c
  @@slp = 5	# conf.gem :github => 'matsumotory/mruby-sleep'	# msleep usleep
.
82d
78d
33a

    case v when Kernel.const_get(k) then true end.!.!
.
28,30c
##  return v.kind_of?(Object.const_get k) # if 0.kind_of?(Numeric)	# super
#   return v.kind_of?(Kernel.const_get k) # if 0.kind_of?(Numeric)	# super
##  return v.kind_of?(k.constantize) # if 0.kind_of?(Numeric)	# RoR	# super
.



-- 
YAMAGUTIseisei ( str_h__namae = { :sei => "山口" , :mei => "青星" } )
http://hello.to/seisei/	mailto:seisei@.68..net	tel:081-70-5152-1104
heiwa furiisekkusu 1tu

[toc] | [prev] | [next] | [standalone]


#9 — jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_8_0_7_0_1__1070810200.rb

FromYAMAGUTIseisei <seisei@hello.to>
Date2018-07-01 11:18 +0000
Subjectjit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_8_0_7_0_1__1070810200.rb
Message-ID<5B38B86E.7090806@hello.to>
In reply to#8
1134,1156c
      if 0 <= rg['ctr', 1]
	rg.shift 'pc'
#      rg['pc'] = rg['pc', 1]
	@pc = rg['pc']

	rg.shift 'sp'
	@sp = rg['sp']
	@irep = irep

	rg.shift 'cop'
	rg.shift 'sym'
      end
#     ise.reject! { |fis| fis.resume}		# higokan ? GC 70410200
.
1003,1131c
	lpl.plini

	jsc.call

#     else
.
996,1001c
#      unless fl[0][0]
      unless fl.flatten[0]
#	rg.push('pc', rg['pc'] + 1)
#	rg.push('sp', rg['sp'])
	rg['ctr', 1] = rg['ctr', 1].abs
#	while ! lpl.ctr_c do Slp.new.slp end
.
993,994c
#     ise.reject! {&:resume}	# higokan ? monami-ya.mrb:60510200 mruby:70410200
#     ise.reject! { |fis| fis.resume}	# higokan ? GC 70410200
.
991a
	rg.push('pc', rg['pc', -1] + 1)
	rg.push('sp', rg['sp', -1])
      end
.
988,990c
	else
	  next if pcoj.call
#	if 0 <= rg['ctr', 1]
#	  sym = rg.shift('sym')
	  pco = rg['pc'] if ?J == rg['sym'].to_s[0]	# q 
	  rg['ctr', 1] *= -1	# kakezan
.
986c
	  fl<< fls(rg['pc'] + 0)	# p 
#	  fl[0].push fls(rg['pc'])
#	  rg.push('pc', rg['pc', -1] + 1)
#	  rg.push('sp', rg['sp', -1])
#	  rg.shift('sym')
#	end
.
983,984c
#	  ise<< iset(rg)	# p 
	  0 <= rg['pc', nil, '-'] && ise<< iset(rg)	# p 
	  next if pcoj.call

.
978,981c
#	sp = @sp
	@stack.sp(rg['sp']) # + 0

#	c, s = opf(irep, rg['pc'])
	c, sym = opf(irep, rg['pc'])
	rg.push('cop', c)
	rg.push('sym', sym)
#	rg.push('sym', s)
#      end

#      lpl.verb "#{rg['pc'].to_xeh}	#{rg['sym']}	#{rg['cop'].to_xeh}" # if rg['sym']
	lpl.verb "#{rg['pc'].to_xeh}	#{rg['sym']}	#{rg['cop'].to_xeh}" if rg['sym']

#	rg['pc'] *= -1 if pco == rg['pc']	# kakezan

#	if rg['sym'] && ?J != rg['sym'].to_s[0] && ! [:ENTER, :SEND, :RETURN, :NOP].include?(rg['sym'])		# q 
	if ?J != rg['sym'].to_s[0] && ! [:ENTER, :SEND, :RETURN, :NOP].include?(rg['sym'])	# q 
#	if ?J != sym.to_s[0] && ! [:ENTER, :SEND, :RETURN, :NOP].include?(sym)	# q 
#	if 0 <= rg['ctr', 1]
.
975,976c
#      fl[0][0] && fl[0][0].resume && fl[0] = (fl[0][1 .. -1] || [])
#      fl.reject!.with_index { |v, n| v.resume(n)}
      fl.reject_c!(1) { |v, n| v.resume(n)}

      if 0 <= rg['ctr', 1] || pco
	pco &&= nil
.
972a
#      ise.reject_c!(1) { |fis, n| fis.resume}
#      ise = reject_c_th(ise, 1) { |fis, n| fis.resume}
.
971d
968,969c
    while true
#   loop {		# higokan ? monami-ya.mrb:60510200 mruby:70410200
#   begin
.
966a
    }
    pco = nil
    pcoj = -> {		# l 
      if 0 > rg['ctr', 1]
	rg.pop 'cop'
	rg.pop 'sym'
#	true
      end # || false
    }
.
963,965c
	# メソッドの先頭で引数のセットアップする命令。面倒なので詳細は省略
      when :ENTER

	# SEND Ra, mid, anumでRaをレシーバにしてシンボルmidの名前のメソッドを
	# 呼び出す。ただし、引数はanum個あり、R(a+1), R(a+2)... R(a+anum)が引数
      when :SEND
#	a = getarg_a(cop)
#	a = lpl.getarg_a(cop)
	a = imem.getarg_a(rg['cop'])
#	mid = @irep.syms[getarg_b(cop)]
#	mid = irep.syms[lpl.getarg_b(cop)]
	mid = irep.syms[imem.getarg_b(rg['cop'])]
#	n = getarg_c(cop)
#	n = lpl.getarg_c(cop)
	n = imem.getarg_c(rg['cop'])
#	newirep = Irep::get_irep(@stack[@sp + a], mid)
	newirep = Irep::get_irep(@stack[a], mid)
	if newirep then
#	  @callinfo[@cp] = @sp
#	  @callinfo[@cp] = rg['sp']
#	  @cp += 1
#	  @callinfo[@cp] = @pc
#	  @callinfo[@cp] = rg['pc']
#	  @cp += 1
#	  @callinfo[@cp] = @irep
#	  @callinfo[@cp] = irep
#	  @cp += 1
#	      @callinfo[-3 + @cp += 3, 3] = [@sp, @pc, @irep]
	  @callinfo[-3 + @cp += 3, 3] = [rg['sp'], rg['pc'], irep]

#	  @sp += a
#	  rg['sp'] += a
	  rg['sp', -1] = rg['sp'] + a

#	  @pc = 0
	  rg['pc', -1] = 0
#	  @irep = newirep
	  irep = newirep
#	  @irepid = @irep.id
	  @irepid = irep.id

#	  next
	else
	  args = []
	  n.times do |i|
#	    args.push @stack[@sp + a + i + 1]
	    args<< @stack[a + i + 1]	# p 
	  end

#	  @stack[@sp + a] = @stack[@sp + a].send(mid, *args)
	  @stack[a] = @stack[a].send(mid, *args)
	end

	# RETURN Raで呼び出し元のメソッドに戻る。Raが戻り値になる
      when :RETURN
	if @cp == 0 then
#	  return @stack[@sp + getarg_a(cop)]
#	  return @stack[sp + lpl.getarg_a(cop)]
	  return @stack[imem.getarg_a(rg['cop'])]
#	  break @stack[imem.getarg_a(rg['cop'])]
	else
#	  @stack[@sp] = @stack[@sp + getarg_a(cop)]
#	  @stack[sp] = @stack[sp + lpl.getarg_a(cop)]
	  @stack[0] = @stack[imem.getarg_a(rg['cop'])]
	  @cp -= 1
#	  @irep = @callinfo[@cp]
	  irep = @callinfo[@cp]
#	  @irepid = @irep.id
	  @irepid = irep.id
	  @cp -= 1
#	  @pc = @callinfo[@cp]
#	  pc = @callinfo[@cp]
#	  rg['pc', -1] = @callinfo[@cp]
	  rg['pc', -1] = @callinfo[@cp] + 1	# bagu syuusei
	  @cp -= 1
#	  @sp = @callinfo[@cp]
#	  sp = @callinfo[@cp]
#	  rg['sp'] = @callinfo[@cp]
	  rg['sp', -1] = @callinfo[@cp]
	end
#     else
#	printf("Unkown code %s ¥n", OPTABLE_SYM[get_opcode(cop)])
#	printf("Unkown code %s ¥n", OPTABLE_SYM[imem.get_opcode(cop)])
.
958,961c
	# JMPNOT Ra, nでもしRaがnilかfalseならpcをnだけ増やす。ただし、nは符号付き
      when :JMPNOT
#	if !@stack[@sp + getarg_a(cop)] then
#	if !@stack[sp + lpl.getarg_a(cop)] then
	if !@stack[imem.getarg_a(rg['cop'])] then
#	  @pc = @pc + getarg_sbx(cop)
#	  pc = pc + lpl.getarg_sbx(cop) - 1
	  rg['pc', -1] = rg['pc'] + imem.getarg_sbx(rg['cop'])
#	  next
	end
.
955,956c
    jsc = Proc.new {
#      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(rg['cop'])
#	next

      when :JMPIF
#	if @stack[@sp + getarg_a(cop)] then
#	if @stack[sp + lpl.getarg_a(cop)] then
	if @stack[imem.getarg_a(rg['cop'])] then
#	  @pc = @pc + getarg_sbx(cop)
#	  pc = pc + lpl.getarg_sbx(cop) - 1
	  rg['pc', -1] = rg['pc'] + imem.getarg_sbx(rg['cop'])
#	  next
	end
.
951,953c
    rg = Rg.new([['ctr', 1], ['pc', @pc], ['sp', @sp], ['cop'], ['sym']])
.
949a
    sym = nil
.
947,948c
    fl = []
#   fl = [[], []]
.
941c
#    i_th = lpl.afl('th', ?i)		# q 
.
912,913c
#	Fiber.yield(0 != thi && ht <= thi)	##
.
909,910d
901d
892,898c
#	pl.pl_es(pc1, opg.(thi) + [[k_sp, [sp]], []][thi <=> 0])	# c 
#	pl.pl_es(pc1, opg.(thi) + [[k_sp, [sp], 'ctr', -pc1], []][thi <=> 0])	# c 
	pl.pl_es(pc1, opg.(thi) + [[k_sp, [sp], :ctr_s, pc1], []][thi <=> 0])	# c 

#	(0 != thi && ht <= thi) ? thi = 0 : thi += 1

#	if 0 == thi
#	  pl.ctr_s(pc1)
#	elsif ht <= thi
	if 0 != thi && ht <= thi
.
885c
    thi = 0	##
.
875,877c
#	  when 'th'
#	    fv = (fvl.delete_at(((1 <=> fvl.size) << 1) + 1) || fvl[0]).(oi)	# c 
	  when 'th' then fv = fvl[-1].(oi); fvl = fvl[0 .. fvl.size - 2]	# c 
.
834c
#	sl.slp 0
.
831c
#	Fiber.yield(@@fls2.resume(pc))
	m = Fiber.yield(@@fls2.resume(pc, m))
.
828a
#     m = Fiber.yield(false)
.
827c
#    Fiber.new {
    Fiber.new { |m = 1|
.
824a
#   sl = @@slp
.
817c
#	Fiber.yield(! flg.include?(false))	##
#	pc = Fiber.yield(flg.all?)		##
#	m = fy.(m, f)	# c 
	pc, m = fy.(m, f, pc)	# c 
.
810,815c
	unless f
	  pl = lpl.pl_g(pc1)	##
#	sp ||= s.sp(pl[i_sp][0])

#	  sym, (r0, r1) = rslt pl	# higokan mruby 70410200	# bce75e27 2211410200 matz
	  sym, r, flg = rslt(pl); r0, r1 = r

#	unless flg.include?(true) then fy(m, f); redo end
#	  f = ! flg.include?(false)
	  f = flg.all?
	end
	if 0 == m
	  sp ||= s.sp(pl[i_sp][0])
	  r0, r1 = r
	  pr || (pr, sy = imem.fml('st', sym)[1 .. -1])

	  isr0 = [i, s, r0]
#	  flg[0] && ca[flg[1] ? 0 : 1].call
	  flg[0] && ca[flg[1] ? 0 : 1].(r)	# c 
	end
#	@@slp.slp 0
.
801,808d
799a
	  f = false # ; flg = [false, false]
.
793c
#    Fiber.new { |pc|	##
#    Fiber.new {
#    Fiber.new { |m = 1|
    Fiber.new { |pc, m = 1|
.
784,791c
#    fy = ->(m, f) { @@slp.slp 0
    fy = ->(m, f, pc) { @@slp.slp 0
      lpl.verb "#{pc.to_xeh}			#{sym}	#{r[0].to_xeh}	#{r[1].to_xeh}"
#      Fiber.yield(0 == m && f)
      Fiber.yield(f && 0 == m)
    }
.
775,776c
#	  plr += lm.(isr0, s[sz, -1 + ap -= (ap + 3) >> 2])	# c 
	  plr += lm.(isr0, s[sz .. sz + ap -= ap >> 2])		# c 
.
768,770c
#      -> {	# flg[0]
      ->(r) {	# flg[0]
#	((sw = sp + sz) + 0xe).step(sw, -1) {	# higokan mruby 70410200	# bbab89e7 5211410200 tmtm
#	sz.step(sz + ap -= ap >> 2) { |n| plr<< lm.(isr0, s[n])}	# p c 
.
761c
#      -> {	# flg[0] && flg[-1]
#      -> {	# f
      ->(r) {	# f
.
753,755c
#      sz = 1; ap = @@fls_m
      sz = 4; ap = @@fls_w ||= (1 << sz) - 1 - 1
#     sz = 4; @@fls_m || (ap = @@fls_w ||= (1 << sz) - 1 - 1; @@fls_w = nil)
      sz -= 2; ap = @@fls_m ||= ((ap << sz) + ap >> sz - 1) + 1 >> 1
.
751a
      f = false; flg = [false, false]
      r = [] # nil # ; rs = [?-, ?-]	# q 2 
.
749c
#      isr0, r0, r1, pr, sy = nil
      isr0, r0, r1, pr, sy, sym = nil
.
745c
#      s = Stack.new; sp = nil; plr = nil
      pl = nil; s = Stack.new; sp = nil; plr = []
.
738c
      pc = 0
      pc1 = pc + 1
#      pc1 = 0
.
725,728c
#  @@fls_w = 4; @@fls_m = (1 << @@fls_w) - 1 - 1
#  @@fls_w -= 2
#  @@fls_m = ((@@fls_m << @@fls_w) + @@fls_m >> @@fls_w - 1) + 1 >> 1
#  @@fls_w = nil
  @@fls_w, @@fls_m = nil
.
718c
    r = pl[lpl.afl('th', ?i)]		# q 
.
669d
640a
#    v = -v if 'pc' == k && v == @a.assoc(k)[i] && knid(v, :Numeric)
    'pc' == k && case v when Numeric then v == @a.assoc(k)[i] && v = -v end	# cp 
.
636,637c
#    i ||= @a.assoc('ctr')[1].abs
    i ||= @a.assoc('ctr')[1]
.
631c
#   @a.assoc(k)[i]
    v = @a.assoc(k)[i]
#   v = v.abs if knid(v, :Numeric)		# cp 
    v = v.abs if 'pc' == k && ?- != m		# cp 	# q 
    v
.
626,629c
# def [](k, i = @i)
  def [](k, i = nil, m = nil)
#   i ||= @a.assoc('ctr')[1].abs
    i ||= @a.assoc('ctr')[1]
.
617a
  def pop(*a)
    @a.assoc(a.shift).pop
  end

.
595a
#      a = @s[@p + a[0].sgp] = a[1]
.
547c
#      fpl.reject! { |fb| fb.resume}
#     fpl.reject! {&:resume}		# higokan ? monami-ya.mrb:60510200 mruby:70410200
#      fpl.reject_c!(1) { |fb, n| fb.resume}
      fpl = reject_c_th(fpl, 1) { |fb, n| fb.resume}
.
498,521c
	Fiber.yield([(f = #### th[idx].nil?.! && # fuguai taisaku
			ckth(th[mx], 3)) && # ))) &&
				(pl_es(pc, ['th', th]); true),
			sl.slp(0)
	][0] && idx >= mx)
	f && idx -= (idx <=> mx) >> 1	##
.
495a
	mx = thn.hgt
#	mx ||= thn.hgt
.
490c
    f = nil # ; mx = nil
.
465c
    (tb == a || knid(a, :Array).! || 1 >= a.size) && (return a)
.
463c
#   ([] == a || knid(a, :Array).! || 1 >= a.size) && (return a)	# t 
.
461a
    tb = TB
.
406a
    aa.each_slice(2) { |k, v| send(k, v)}
.
404c
#     'ctr' == k && case v when Array then true end.! ? pl[i_k]<< v : pl[i_k] = v	# p 	# higokan ? mruby 70410200
.
402d
400a
#     'ctr_s' == k && break(-v)	# higokan ? mruby 70410200
#     knid(k, :Symbol) && (aa.push(k, v); next)
#     knid(k, :Symbol) && (aa.push(k, v); break)
      case k when Symbol then aa.push(k, v); break end
.
395a
    aa = []
.
357c
#   sleep 0; GC.start; sleep 0	# g 
.
353,354c
# @@Idx0 = ->(n = 0, t = 1) {n + (t > n ? 1 : 0)}	# l 
.
281c

#   if 1 < self.size	#    self.size : 0 ?? 	# higokan ? mruby:70410200 monami-ya.mrb:60510200
    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
.
277,278d
274c
    # 3080410200 : 5x2 ok ( gc ) : monami-ya.mrb 8270410200 813e2af8	# www.monami-ya.jp
.
266d
260,261d
210,211c
#    case a[4]
    case a[@@I_s__r1 + 1]
#    when Array then return a[4].map{ |v| v.nil? ? v : send(*a[0 .. 3], v)}
    when Array
      a[@@I_s__r1 + 1].map{ |v| v.nil? ? v : send(*a[0 .. @@I_s__r0 + 1], v)}
.
208d
136,137c
#   @fml.(lb).assoc(sym)		# c 
    @@fml.(lb).assoc(sym)		# c 
.
85a

  def reject_c!(i = nil)
    a = self
#    unless i
#      a.reject! { |v| yield v}
#    else
#     a.compact!
#      a.each.with_index(0) { |v, n| break if n >= i
#	v && yield(v, n) && a.delete_at(n)
#      }

      (i > n = a.size) && i = n
      n = c = 0
      while c < i
	a[n] && yield(a[n], c) && a.delete_at(n) || n += 1
#	(v = a[n]) && yield(v, c) && a.delete_at(n) || n += 1
	c += 1
      end
#    end
    self.replace a
  end

  def reject_c_th(a, i = nil)
#    unless i
#      a.reject! { |v| yield v}
#    else
#     a.compact!
#      a.each.with_index(0) { |v, n| break if n >= i
#	v && yield(v, n) && a.delete_at(n)
#      }

      (i > n = a.size) && i = n
      n = c = 0
      while c < i
	a[n] && yield(a[n], c) && a.delete_at(n) || n += 1
#	(v = a[n]) && yield(v, c) && a.delete_at(n) || n += 1
	c += 1
      end
#    end
    a
  end
.
2a
TB = []

.



-- 
YAMAGUTIseisei ( str_h__namae = { :sei => "山口" , :mei => "青星" } )
http://hello.to/seisei/	mailto:seisei@.68..net	tel:081-70-5152-1104
heiwa furiisekkusu 1tu

[toc] | [prev] | [next] | [standalone]


#10 — jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_8_0_9_3_0__0390810200.rb

FromYAMAGUTIseisei <seisei@hello.to>
Date2018-09-30 11:48 +0000
Subjectjit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_8_0_9_3_0__0390810200.rb
Message-ID<5BB0B825.8070403@hello.to>
In reply to#9
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

[toc] | [prev] | [next] | [standalone]


#11 — jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_8_1_2_1_6__6121810200.rb

FromYAMAGUTIseisei <seisei@hello.to>
Date2018-12-16 09:16 +0000
Subjectjit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_8_1_2_1_6__6121810200.rb
Message-ID<5C161805.5090308@hello.to>
In reply to#10
1387c

#     redo
#     next
    end # while true
.
1357d
1344,1345c
#	  (pco = rg['pc']; pctj<< pco + 1) if ?J == rg['sym'].to_s[0]	# q 
	  (pctj<< (pco = rg['pc']) + 1) if ?J == rg['sym'].to_s[0]	# p 	# q 
.
1335,1336d
1327,1328c
#	c, sym = opf(irep, rg['pc'])
	c, sym = @@opf.(irep, rg['pc'], imem)	# c 
.
1323c
#      fl.reject_c!(1) { |v, n| v.resume(n)}
      fl.delete_if__c(1) { |v, n| v.resume(n)}
.
1321c
#      ise.reject! { |fis| fis.resume}
      ise.delete_if(&:resume)
.
1312a
	sl.slp 0
.
1286c
#	      rg['pc', -1] = @callinfo[@cp] + 1
.
1234d
1176c
      when :NOP
	sl.slp 0
.
1116,1117d
1095a
# def rou(*a)
  @@rou = ->(*a) {	# l 
#   (imem = @Imem).send(*a)
    (imem = @@Imem).send(*a)
# end
  }

.
1087,1093c
#    Fiber.new {
#    loop {
##	Fiber.yield(@@iset2.resume(rgd))
#	Fiber.yield(@@iset2.resume(rgd, 0))
#	rgd &&= nil
##	sl.slp 0
#      }
#    }

#    fibi(@@iset2, rgd, 0) {|rgd| rgd &&= nil}
    fibi(@@iset2 ||= iset2, rgd, 0) {|rgd| rgd &&= nil}
.
1085c
#    @@iset2 ||= iset2
.
1083a
#    rgd = rg.to_a('pc', 'sp', 'cop', 'sym').dup
.
1074c
#	Fiber.yield(0 != thi && ht <= thi && thi = -1)	##
#	rg = Fiber.yield(0 != thi && ht <= thi && thi = -1)	##
	rg, m = Fiber.yield(0 != thi && ht <= thi && (thi = -1; true))	##
#	rg, m = Fiber.yield(0 != thi && ht <= thi)	##
#	rg = Fiber.yield(0 > thi)	##
#	rg, m = Fiber.yield(0 > thi)	##
.
1072d
1061,1064c
#	0 != thi && ht <= thi && thi = -1
.
1059c
#	pl.pl_es(pc1, opg.(thi) + [[k_sp, [sp], :ctr_s, pc1], []][thi <=> 0])	# c 
	pl.pl_es(pc1, opg.(thi) + [oa, []][thi <=> 0])	# c 
.
1055,1056c
#	  th = []	##
#	  oa = [k_sp, [sp], :ctr_s, pc1]
.
1043,1053c
##	  pc, sp, cop, sym = rg.to_a('pc', 'sp', 'cop', 'sym')
#	  pc, sp, cop, sym = rg
##	  pc1 = pc + 1

#	  ini.call
	  ini.(rg)	# c
.
1039d
1037c
#   Fiber.new { |rg|
    Fiber.new { |rg, m = 0|
.
1035c
#    k_sp = pla.assoc('sp')[1]
#    oa = []
.
1022,1024d
1014,1015c
#    opg = ->(oi) {	# l 
#      lopa = []
    opg = ->(oi, lopa = []) {	# l 
.
1002,1004d
996c
#    fml = []
    k_sp = pla.assoc('sp')[1]
    pc1, fml, oa, th = nil

#    ini = ->{
    ini = ->(rg) {
#     pc, sp, cop, sym = rg.to_a('pc', 'sp', 'cop', 'sym')
      pc, sp, cop, sym = rg
#     pc1 = pc + 1
      fml = imem.fml('th', sym) || (
#	printf("Unkown code %s \n", OPTABLE_SYM[imem.get_opcode(cop)])
#	printf("Unkown code %s \n", OPTABLE_SYM[rou(:get_opcode, cop)])
#	printf("Unkown code %s \n", OPTABLE_SYM[@@rou.(:get_opcode, cop)])	# c 
	pl.verb("Unkown code #{sym} ") # .to_s
	return nil
#	raise
##	rg = Fiber.yield(nil)
      )

      pc1 = pc + 1
      oa = [k_sp, [sp], :ctr_s, pc1]
      th = []	##
    }

.
989,990c
#    pc = 0
#    pc1 = pc + 1
#    pc1 = 0
.
987a
#    sp, cop, sym = nil
.
969,981c
#    Fiber.new { |m = 1|
#      m = Fiber.yield(false)
#      loop {
#	m = Fiber.yield(@@fls2.resume(pc, m))
##	Fiber.yield(flg.resume(pc))
#	0 > pc && pc = ~ pc
##	sl.slp 0
#      }
#    }

#   fibi(@@fls2, pc, 1) {|pc| 0 > pc ? ~ pc : pc}
    fibi(@@fls2 ||= fls2, pc, 1) {|pc| 0 > pc ? ~ pc : pc}
.
966,967c
##  sl = @@slp
#    @@fls2 ||= fls2
.
957d
955c
#	  flg[0] && ca[flg[1] ? 0 : 1].(r)	# c 
	  ca[flg[1] ? 0 : 1].(r)	# c 
.
950,951d
947,948c
#	if 0 == m
	if 0 == m && flg[0]
.
944,945c
#	  f = ! flg.include?(false)
	  f = flg.all?
#	  pc, m = fy.(m, false, pc)	# c 
.
935,936c
	0 > pc && pc = ini.(pc)		# c 
.
928,933c
#	if 0 > pc
#	  pc = ini.(pc) # c 
#	end
.
925d
919,920c
#    fy = ->(m, f) { sl.slp 0
    fy = ->(m, f, pc) { sl.slp 0
.
915c
#	end
.
907,913c
#	if 0 == s.size
#	  sl.slp 0
#	else
	0 == s.size ? sl.slp(0) : plr +=
.
903d
895,900c
#	_ = plr[r[1]] || lm.(isr0, r[1])		# c 
	_ = (_ = plr[r[1]]).nil? ? lm.(isr0, r[1]) : _	# c 
.
893d
889,890c
#   lm = ->(isr0, r1) {r1.nil? ? r1 : imem.send(pr, *isr0, r1, mt)}	# l 
    lm = ->(isr0, r1) {imem.send(pr, *isr0, r1, mt)}			# l 
.
884,886c
	f = false
#      )][0] + 1) - 1
      )][0] - 1
.
880,881c
#    ini = ->(pc) { (pc1 = [~ pc, (
    ini = ->(pc) { [pc1 = ~ pc + 1, (
.
876,877c
      sz = 4; ap = @@fls_w ||= (1 << sz) # - 1 - 1
#      sz -= 2; ap = @@fls_m ||= ((ap << sz) + ap >> sz - 1) + 1 >> 1
      ap = @@fls_m ||=
	((ap += (ap <<= 1) + (ap <<= 2) + (ap << 2)) >> sz) + 1 >> 1
.
874c
#      r = nil
.
869,870d
865,866c
#      pl = nil; s = Stack.new; sp = nil; plr = []
#      i = @irep
      i = @irep; s = Stack.new
      sp, pl, r = nil
      plr = []
.
839a
  def fibi(fb, p1, ctr = 0)
    sl = @@slp
    Fiber.new { |m = 1|
      ctr.times {m = Fiber.yield(false)}
      loop {
	sl.slp 0
	m = Fiber.yield(fb.resume(p1, m))
	p1 = yield(p1)
#	sl.slp 0
      }
    }
  end

.
795c
#   @Imem = Imem.new
    @Imem = @@Imem
.
789a
    @@Imem = Imem.new
.
787d
719c
#  def size; @s.size end
  def size; @s.length - @p end
.
714d
710d
702a
#   [@s[a[0] + @p] = a[1], @@m.unlock][0]
.
697,699d
690,691d
684c
#   [s, @@m.unlock][0]
.
670d
655a
  @@f = ''

  def initialize
#   @f = ''		# cannot set instance variable (ArgumentError)
  end

.
613,653d
602,606d
596,598c
#     fpl.reject!(&:resume)
#      fpl = reject_c_th(fpl, 1) { |fb, n| fb.resume}
#      fpl = reject_c!(1, fpl) { |fb, n| fb.resume}
      fpl = delete_if__c(1, fpl) { |fb, n| fb.resume}
#####      fpl.reject!.with_index { |fb, i| break if i > 0; fb.resume}
#####      fpl.reject!.with_index { |fb, i| next if i > 0; fb.resume}
#####      fpl.reject!.with_index { |fb, i| p i; fb.resume}
#####      fpl.empty? || fpl[0].resume && fpl.shift
      sl.slp
.
581c
#      sl.slp
.
578c
#    sl = @@slp
    (sl = @@slp).slp
.
563,569c
#	mx = thn.hgt
##	mx ||= thn.hgt
#	Fiber.yield([(f = #### th[idx].nil?.! && # fuguai taisaku
	Fiber.yield((f = #### th[idx].nil?.! && # fuguai taisaku
#			ckth(th[mx], 3)) &&
			ckth(th[mx = thn.hgt], 3)) && (
#				(pl_es(pc, ['th', th]); true),
#			sl.slp(0) # (0, 4096)
				pl_es(pc, ['th', th]); sl.slp(0) # (0, 4096)
#	][0] && idx >= mx)
				true) && idx >= mx)

.
555c
    f = nil; mx = nil
.
544,545c
#    (imem = @@Imem).mcall(a, op) || op
#    (imem = @@Imem).send(opc, op) || op
    (imem = @@Imem).send(a, op) || op
.
529,530c
#    (tb == a || knid(a, :Array).! || 0 >= a.hgt) && (return a)
    (tb == a || case a when Array then 0 >= a.hgt end) && (return a)
.
513c
#      print s
      puts s
.
511c
#    s <<= "\n"
.
472,474c
#   ctr = (cta = pl_g(0).afl('ctr', self)).shift
#   pl_es(0, ['ctr', cta])
#   ctr
.
468a
#    [(cta = pl_g(0).afl('ctr', self)).shift, pl_es(0, ['ctr', cta])][0]

.
465a
##  pl_s(n, pl)
##  pl
  end

  def ref_pl0i; @@pl0i = pl_g(-1) end
#  def to_ia(n)
  def to_ia(n, lpl = self)
    if 0 == n
#      self[n]
      lpl[n]
    else
#      @@Plmg.(pl_g(-1), self[n])	# c 
      @@Plmg.(@@pl0i, lpl[n])		# c 
    end
.
464c
    pl_s(n, pl)	#   @@m.unlock
.
462a
#     pl[i_k] = 'ctr' == k && ! knid(v, :Array) ? pl[i_k] + [v] : v	# p 
      pl[i_k] = 'ctr' == k && ! knid(v, :Array) ? pl[i_k]<< v : v	# p 
##    pl[i_k].send(('ctr' == k && ! knid(v, :Array) ? '<<' : '='), v)		# p 
##    pl[i_k].send(('ctr' == k && ! knid(v, :Array) ? '<<' : 'replace'), v)	# p 
#     pl[i_k = self.afl(k, ?i)] += [v]	# q 	# ? 
#     pl[i_k] = (pl[i_k]<< v).send('ctr' == k && knid(v, :Array).! ? 'itself' : 'pop')	# p 	# .itself higokan monami-ya.mrb:60510200 mruby:70410200
#     pl[i_k] = (pl[i_k]<< v)['ctr' == k && knid(v, :Array).! ? 0 .. -1 : -1]	# p 	# ? 
.
461c
#     'ctr' == k && knid(v, :Array).! ? pl[i_k]<< v : pl[i_k] = v	# p 
.
448c
#  def pl_es(n = 0, ary)
  def pl_es(n = 0, ary = nil, pl = nil)
.
440c
#   self[n] = 0 == n ? (@@plmg ||= ->(pi, pv) {pi.map { |v| [v[0], pv.shift]}}
#	).(pl_g(-1), pl) : pl		# c 
#    self[n] = 0 == n ? @@Plmg.(pl_g(-1), pl) : pl	# c 
    self[n] = 0 == n ? @@Plmg.(@@pl0i, pl) : pl		# c 
#	).(@@pl0i, pl) : pl		# c 
.
430a
##p      to_ia(n, pl)
##n >= 0 && p( Rg.new(to_ia(n)).to_ra)
##n >= 0 && ( rg = Rg.new(to_ia(n)); p(rg.to_ra('th')))
#n >= 0 && ( rg = Rg.new(to_ia(n)); p(rg['ctr']))
##n >= 0 && p( to_ia(n))
.
412c
#  @@Pldv = ->(pl) {pl.map { |a| a[1]}}	# l 
  @@Pldv = ->(pl, n = 1) {pl.map { |a| a[n]}}	# l 

.
398,407c
##  t > n ? n + 1 : n			##  n + (t > n ? 1 : 0)
##  n + [false, true].index(t > n)	##  n + (((t > n) && 1) || 0)
##  n + (t > n && 1 || 0)		#   n - ((n <=> t) >> 1)
##  n + ((t <=> n) & 1)[0]		##  n + (((t <=> n) + 1) & 2)[1]	# higokan mruby 70410200
##  n + ((((t <=> n) + 1) & 2) >> 1)	##  n + ((t <=> n) + 1 >> 1)
.
359d
355,356c
#    [yield(a), f.close][0]
##   [yield(a), @m.unlock][0]
    [yield(a), ## flg &&
	f.close][0]
#	@m.unlock][0]
.
353c
    end ## if flg
.
339a

    ref_pl0i
.
332,336c
#     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
.
328c
#    self[0] = [['th', [[thini]]], ['sym', [6309]], ['ctr', []]]
    self[0] = [[pl0i[0], [[thini]]], [pl0i[1], [6309]], [pl0i[2], []]]
.
325c
    # 3080410200 : 5x2 ok ( gc ) : monami-ya.mrb 8270410200 813e2af8	# www.monami-ya.jp
.
321a
    pl0i = ['th', 'sym', 'ctr']
.
315d
307c
#  def initialize
  def initialize(*a)
.
304a
    @@pl0i = nil
.
295a
#   @@fl += '/loc'	# RISC OS ?

.
274a
    case op[0] when Numeric then op.inject(:+) else self.__send__(*op) end
.
271,273c
# def mcall(*op)
#   case op[0] when Numeric then op.inject(:+) else self.send(*op) end
  def send(*op)		# fuantei ? mruby 70410200
.
263d
261d
246c
#  def ta(l, cop) [l.shift || :getarg_a, l.shift || cop][0 .. l[-1] || 1] end
  def ta(l, cop) [l[0] || :getarg_a, l[1] || cop][0 .. l[2] || 1] end
.
189a
#   (f = @@fml).(lb).assoc(sym)		# c 
.
141a
#   t -= t <=> 1
.
138c
  @@slp = (((@@slp = NSLP_ >> 2) + (@@slp >> 5)) >> 7) + 1 >> 1		# conf.gem :github => 'matsumotory/mruby-sleep'	# msleep usleep
#  @@slp = 5	# conf.gem :github => 'matsumotory/mruby-sleep'	# msleep usleep
.
121,130c
#      (i > n = a.size) && i = n
#      n = c = 0
#      while c < i
#	a[n] && yield(a[n], c) && a.delete_at(n) || n += 1
##	(v = a[n]) && yield(v, c) && a.delete_at(n) || n += 1
#	c += 1
#      end
##    end
#    a
#  end
.
116,119d
114d
111,112c
## def reject_c_th(a, i = nil)
#  def reject_c_th(a, i)
.
108c
#    self.replace a
    f ? self.replace(a) : a
.
105c
#	c += 1
.
101,102c
#      n = c = 0
      n = 0; c = -1
#      while c < i
      while i > c += 1	# c += 1 < i # -e:1: non float value (TypeError) ( monami-ya.mrb:60510200 mruby:70410200 )
.
90,91c
#  def reject_c!(i)
# def reject_c!(i, a = self)	# higokan ? mruby-thread:410200 monami-ya.mrb:60510200 mruby:70410200
  def delete_if__c(i, a = nil)
#    a = self
#   f = (a == self)		# higokan ? mruby-thread:410200 monami-ya.mrb:60510200 mruby:70410200
    f = ! a
    a ||= self
.
54,56c
#  def sgp; self + self.abs >> 1 end
.
7a
TB = []

.
4a
NSLP_ = 6309	# nanosleep()
.
3c
((((((((([
	:Array,	:Numeric,	:Fixnum,	# :Float,	:Bignum,
	:Symbol,	:String,	# :Object,
	:getarg_a,	:getarg_b,	:getarg_sbx,	:getarg_bx,
	:mk_opcode,	:getarg_c,
	:MOVE,	:LOADL,	:LOADI,	:LOADSYM,	:LOADSELF,	:LOADT,
	:ADD,	:ADDI,	:SUB,	:SUBI,	:MUL,	:DIV,	:EQ,
	:JMP,	:JMPIF,	:JMPNOT,	:RETURN,	:SEND,	:ENTER,	:NOP,
	:+,	:-,	:*,	:/,
	:__sr0,	:__r0,	:__sr01,	:__r1_eq_sr01,	:__i__r0,
	:pool,	:syms,

	:ctr_s,	:p
])))))))))

.



-- 
YAMAGUTIseisei ( str_h__namae = { :sei => "山口" , :mei => "青星" } )
http://hello.to/seisei/	mailto:seisei@.68..net	tel:081-70-5152-1104
heiwa furiisekkusu 1tu

[toc] | [prev] | [next] | [standalone]


#12 — jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_9_0_2_1_0__0120910200.rb

FromYAMAGUTIseisei <seisei@hello.to>
Date2019-02-10 13:16 +0000
Subjectjit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_9_0_2_1_0__0120910200.rb
Message-ID<5C602426.2000502@hello.to>
In reply to#11
1428,1429c
#	stack.ps rg['sp']
	stack.p = rg['sp']
.
1415c
#	lpl.plini
	plini(@@rmth, lpl)	# 310200plini ?
#	lpl.plini(@@rmth)	# 410200plini
.
1413c
#	rg['ctr', 1] = rg['ctr', 1].absb
#	rg['ctr', 1] = absb(rg['ctr', 1])

#	unless lpl.ctr_c {Slp.new.slp}
.
1411c
#      unless fl.flatten[0]
      if fl.empty?	# && ! pco # d~ng
.
1399d
1392c
#	  ise<< iset(rg) if 0 <= rg['pc', nil, '-'] && pctj.pop != rg['pc']	# p 	# cp 
	  ise<< iset(rg) if 0 <= rg['pc', nil, ?-] && pctj.pop != rg['pc']	# p 	# q	# cp 
.
1379d
1376,1377c
#      ise.delete_if(&:resume)
      ise.delete_if__c(1) { |fis, n| fis.resume}
.
1343c
#	  callinfo.pd
	  callinfo.p -= 1
.
1340c
#	  rg['pc', -1] = @callinfo[@cp] + 1
.
1336c
#	  callinfo.pd
	  callinfo.p -= 1
.
1329c
#	  callinfo.pd
	  callinfo.p -= 1
.
1319c
#	if 0 == callinfo.pg
	if 0 == callinfo.p
.
1233,1260d
1141,1142c
#   fibi(@@iset2 ||= iset2, rgd, 0) {|rgd| rgd &&= nil}
    fibi(@@iset2 ||= iset2, rgd) {rgd &&= nil}
.
1130,1139d
1128d
1116d
1108,1113d
1104,1105d
1101d
1089,1099c
#	if rg
#	  ini.(rg)	# c
#	end
	rg && ini.(rg)	# c
.
1081,1082d
1070,1074c
#	  case k
#	  when 'th' then fv = fvl[oi <=> 0].(oi)	# c 
#	  end
#	  lopa.push(k, fv)
	  lopa.push(k, 'th' == k ? fvl[oi <=> 0].(oi) : fv)	# c 
.
1062,1065c
#    opg = ->(oi, lopa = []) {	# l 
#      i = -1
    opg = ->(oi, lopa = []) { i = -1	# l 
.
1053,1057d
1050c
#    th = []	##
.
1048c
    bt = imem.fml('th', 'bt') # [1 .. -1]
.
1041c
      ))
.
1033c
#      fml = imem.fml('th', sym) || (
      fml = [sym] + (imem.fml('th', sym) || (
.
1030,1031c
      pc, sp, cop, sym = rg # .to_a('pc', 'sp', 'cop', 'sym')
.
1028d
1026c
#    pc1, fml, oa, th = nil
    pc1, fml, oa, th, cop = nil
.
1012,1018c
#    pc, sp, cop, sym = nil

.
1006,1007c
#    fibi(@@fls2 ||= fls2, pc) {|pc| 0 > pc ? ~ pc : pc}
    fibi(@@fls2 ||= fls2, pc, 1) {0 > pc ? ~ pc : pc}
.
994,1004d
982d
978,979c
#	  sp ||= s.ps(pl[i_sp][0])
	  sp ||= s.p = pl[i_sp][0]
	  pr || (pr, sy, mt = imem.fml('st', sym)) #[1 .. -1])
.
976d
972,973c
	  f = flg.all? # && r.all? { |f| case f when Numeric then true end}
.
960,962d
952d
947,948c
#	    lm.(isr0, s[(sz = plr.size) .. sz + ap = (ap >>= 1) + (ap >> 1)])	# c 
	  lm.(isr0, s[(sz = plr.size) .. sz + ap = (ap += ap >> 1) >> 1])	# c 
.
943,945d
936,938c
#	r[0] = plr[r[1]] || lm.(isr0, r[1])		# c 	# r[0] ??
#	_ = (_ = plr[r[1]]).nil? ? lm.(isr0, r[1]) : _	# c 
	pc1 = (pc1 = plr[r[1]]).nil? ? lm.(isr0, r[1]) : pc1	# c 
#	s[r[1]] = sy ? [s[r[1]], _].inject(sy) : _
	s[r[1]] = sy ? [s[r[1]], pc1].inject(sy) : pc1
.
927,928c
#      )][0] - 1
	(pc1 = ~ pc + 1) - 1
.
922,924c
#    ini = ->(pc) { [pc1 = ~ pc + 1, (
    ini = ->(pc) {
.
916,918c
#      sz = 4; ap = @@fls_w ||= (1 << sz)
      ap = 1 << sz = 4; ap = @@fls_m ||=
.
914d
904,905d
888c
#  @@fls_w, @@fls_m = nil
  @@fls_m = nil
.
874d
868,869c
#    Fiber.new { |m = 1|
#      ctr.times {m = Fiber.yield(false)}
    Fiber.new { |m = 1| ctr.times {m = Fiber.yield(false)}
.
856a

# include M__PlIni	# 310200plini ?	# ok ? ( osx10.4/ppc 1koa )	# omoi ? ( osx10.4/ppc 2koa )

# module M__PlIni	# osx/ppc http://master.dl.sourceforge.net/project/hpc/OldFiles/gcc-bin.tar.gz#4p3__3.400 #gcc-tiger-bin.tar.gz#4p1__1.400	# cctools-590.36.dmg
#  def plini
  def plini(rmth = nil, pl = self)
    thini = false
    pl0i = ['th', 'sym', 'ctr']

    # 3080410200 : gene gc off : mruby 6170410200 d17506c1
    # 3080410200 : 5x2 ng ( segmentation fault ) : mruby 3080410200 0878900f
    # 3080410200 : 5x2 ok ( gc ) : monami-ya.mrb 8270410200 813e2af8	# http://www.monami-ya.jp/
    # mruby 20410200 : higokan ? : ary_many
    # mruby 70410200 : 4x2 ok , 5x2 ng
#    self[0] = [['th', [[thini]]], ['sym', [6309]], ['ctr', []]]
#    self[0] = [[pl0i[0], [[thini]]], [pl0i[1], [6309]], [pl0i[2], []]]
    pl[0] = [[pl0i[0], [[thini]]], [pl0i[1], [6309]], [pl0i[2], []]]
#   pl[0] = [[[thini]], [68000], []].map.with_index { |v, i| [pl0i[i], v]}


#   if 1 < self.size	#    self.size : 0 ?? 	# higokan ? mruby:70410200 monami-ya.mrb:60510200
#     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[1] && self[0 .. -1] =
#	self[0 ... self.size & ((n = @@rmth + 1) << 1) | n]
    pl[1] && pl[0 .. -1] = pl[0 .. pl.hgt & ((n = rmth + 1) << 1) | n]

#    ref_pl0i
    pl.ref_pl0i
  end
# end


.
835c
#    @pl = ENVary.new
#   @pl = ENVary.new(true)			# 410200plini
    plini(@@rmth, @pl = ENVary.new(true))	# 310200plini ?
.
743d
731,741c
# def pg() @p	   end
# def pi() @p += 1 end
# def pd() @p -= 1 end

# def ps(i)
##  id = self.object_id
##   a.empty? || @p = a[0]
#   @p = i
##  @p
# end
.
711d
703c
#  attr_accessor :p
  attr_accessor :p, :s
.
681c
#  @@f = ''
  @@f = 0x0.chr * 0x20
.
662,663d
642,643c
    sl = @@slp
#    (sl = @@slp).slp
.
628,632c
#				pl_es(pc, ['th', th]); sl.slp(0) # (0, 4096)
				pl_es(pc, ['th', th]); sl.slp 0 # (0, 4096)
#				true) && idx >= mx)
				f) && idx >= mx)
.
626d
619,624c
	th[idx] = s_id(th[idx], pc - 1) #### if ckth(th[idx], 0) # fuguai taisaku
.
614c
#    f = nil; mx = nil
    f, mx = nil
.
603d
591,592c
#     knid(a, :Array)	?     __method__(a, pc)  :    a		# s_id(a, pc)  :    # 310200plini ?
      case a when Array then  __method__(a, pc)  else a end	# s_id(a, pc)  else # 310200plini ?
.
587,588c
#   (tb == a || knid(a, :Array).! || 0 >= a.hgt) && (return a)
#    (tb == a || case a when Array then 0 >= a.hgt end) && (return a)
    ((tb = TB) == a || case a when Array then 0 >= a.hgt end) && (return a)
.
585d
583c
#    tb = TB
.
570d
568d
526,531c
    c = pl_g(0).afl('ctr', self)
    [c.shift, pl_es(0, ['ctr', c])][0]
.
524c
#    cta = pl_g(0).afl('ctr', self)
#    [cta.shift, pl_es(0, ['ctr', cta])][0]
.
514,520c
#    if 0 == n
#      lpl[n]
#    else
#      @@Plmg.(@@pl0i, lpl[n])		# c 
#    end
    lpl = lpl[n]; 0 == n ? lpl : @@Plmg.(@@pl0i, lpl)	# c 
.
512d
481d
470,471d
467,468d
455c
##p to_ia(n, pl)
.
434d
380,381d
364,365d
361,362c
# include M__PlIni	# 410200plini	# ok ? ( osx10.4/ppc 1koa )
.
344,359d
336c
    a || return

#    plini
#   plini(@@rmth)	# 410200plini
.
331,332c
#  def initialize(*a)
  def initialize(a = nil)
.
303a

# module M__PlIni	# Omoi ?


.
294,295c
#    case op[0] when Numeric then op.inject(:+) else self.__send__(*op) end
    case op[0] when Numeric then op.inject(:+) else __send__(*op) end
.
285c
#      a[@@I_s__r1 + 1].map{ |v| v.nil? ? v : send(*a[0 .. @@I_s__r0 + 1], v)}
      return a[i_s__r1].map{ |v| v.nil? ? v : send(*a[0 .. @@I_s__r0 + 1], v)}
.
283c
#    case a[@@I_s__r1 + 1]
    case a[i_s__r1 = @@I_s__r1 + 1]
.
271,279c
#  def s__sr0(	    *a) a[@@I_s__s][	 a[@@I_s__r0]]	   end
#  def s__r0(	    *a) 		 a[@@I_s__r0]	   end
#  def s__sr01(	    *a) a[@@I_s__s][	 a[@@I_s__r0] + 1] end
#  def s__i_pool_r0( *a) a[@@I_s__i].pool[a[@@I_s__r0]]	   end
#  def s__i_syms_r0( *a) a[@@I_s__i].syms[a[@@I_s__r0]]	   end
#  def s__r1_eq_sr01(*a) a[@@I_s__s][	 a[@@I_s__r1]] == a[@@I_s__s][a[@@I_s__r0] + 1] end

  def s__sr0(	    *a) a[@@I_s__s][		       a[@@I_s__r0]]	 end
  def s__r0(	    *a) 			       a[@@I_s__r0]	 end
  def s__sr01(	    *a) a[@@I_s__s][		       a[@@I_s__r0] + 1] end
# def s__i_pool_r0( *a) a[@@I_s__i].pool[	       a[@@I_s__r0]]	 end
# def s__i_syms_r0( *a) a[@@I_s__i].syms[	       a[@@I_s__r0]]	 end
  def s__i__r0(	    *a) a[@@I_s__i].send(a[@@I_s__mt])[a[@@I_s__r0]]	 end
  def s__r1_eq_sr01(*a) a[@@I_s__s][		       a[@@I_s__r1]] ==
			a[@@I_s__s][		       a[@@I_s__r0] + 1] end
.
267,269c
#  @@I_s__i = 0; @@I_s__s = 1; @@I_s__r0 = 2; @@I_s__r1 = 3
  @@I_s__i = 0; @@I_s__s = 1; @@I_s__r0 = 2; @@I_s__r1 = 3; @@I_s__mt = 4
.
212a
  def ta(l, cop) [l[0] || :getarg_a, l[1] || cop][0 .. l[2] || 1] end

.
208,210c
#    @@fml.(lb).assoc(sym)		# c 
##   (f = @@fml).(lb).assoc(sym)		# c 
    @@fml.(lb).assoc(sym)[1 .. -1]		# c 
#   (f = @@fml).(lb).assoc(sym)[1 .. -1]	# c 
.
185,186c
#     [:MOVE,	  :__sr0],	[:LOADL,   :__i_pool_r0],
#     [:LOADI,	  :__r0 ],	[:LOADSYM, :__i_syms_r0],
      [:MOVE,	  :__sr0],	[:LOADL,   :__i__r0, nil, :pool],
      [:LOADI,	  :__r0 ],	[:LOADSYM, :__i__r0, nil, :syms],
.
156,157c
  @@slp = (((@@slp = NSL_ >> 2) + (@@slp >> 5)) >> 7) + 1 >> 1	# conf.gem :github => 'matsumotory/mruby-sleep'	# msleep usleep
.
133,148d
110,130c
#    f = ! a
#    a ||= self
    (f = ! a) && a = self
#   unless i then a.delete_if(&:yield) else a.each_with_index { |v, n|
#	break if n >= i; v && yield(v, n) && a.delete_at(n)} end

    (i > n = a.size) && i = n
#      n = 0; c = -1
    c = (n = 0) - 1
    while i > c += 1	# c += 1 < i # -e:1: non float value (TypeError) ( monami-ya.mrb:60510200 mruby:70410200 )
      a[n] && yield(a[n], c) && a.delete_at(n) || n += 1
#     (v = a[n]) && yield(v, c) && a.delete_at(n) || n += 1
    end
.
108d
105d
71c
# def absb
# def absb(i)
##  self + (((0 <=> self) + 1 >> 1 << 0x10) - 1 & self << 1)
#   i + (((0 <=> i) + 1 >> 1 << 0x10) - 1 & i << 1)
# end
.
19c
NSL_ = 6309	# nanosleep()
.
15c
#	:ctr_s,	:p
	:ctr_s,	:p,	:s
.



-- 
YAMAGUTIseisei ( str_h__namae = { :sei => "山口" , :mei => "青星" } )
http://hello.to/seisei/	mailto:seisei@.68..net	tel:081-70-5152-1104
heiwa furiisekkusu 1tu

[toc] | [prev] | [next] | [standalone]


#13 — jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_9_0_3_1_7__7130910200.rb

FromYAMAGUTIseisei <seisei@hello.to>
Date2019-03-17 09:53 +0000
Subjectjit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_9_0_3_1_7__7130910200.rb
Message-ID<5C8E192E.6010002@hello.to>
In reply to#12
1335d
1318c
#	Slp.new.slp unless lpl.ctr_c
.
1312d
1301c
#	  (pctj<< (pco = rg['pc']) + 1) if ?J == rg['sym'].to_s[0]	# p 	# q 
	  (pctj<< 1 + pco = pc) if ?J == sym.to_s[0]	# p 	# q 
.
1297c
#	  fl<< fls(rg['pc'])	# p 
	  fl<< fls(pc)	# p 
.
1292,1294c
#	if ?J != rg['sym'].to_s[0] && ! [:ENTER, :SEND, :RETURN, :NOP].include?(rg['sym'])	# q 
	if ?J != sym.to_s[0] && ! [:ENTER, :SEND, :RETURN, :NOP].include?(sym)	# q 
	  ise<< iset(rg) if 0 <= rg['pc', nil, ?-] && pctj.pop != pc	# p 	# q	# cp 
.
1290c
#	lpl.verb "#{rg['pc'].to_xeh}	#{rg['sym']}	#{rg['cop'].to_xeh}" # if rg['sym']
	lpl.verb "#{pc.to_xeh}	#{sym}	#{rg['cop'].to_xeh}" # if sym
.
1286c
#	c, sym = @@opf.(irep, rg['pc'], imem)		# c 
	c, sym = @@opf.(irep, pc = rg['pc'], imem)	# c 
.
1281c
#      fl.delete_if__c(1) { |v, n| v.resume(n)}
      fl.delif_c(1) { |v, n| v.resume(n)}
.
1278,1279c
#      ise.delete_if__c(1) { |fis, n| fis.resume}
      ise.delif_c(1) { |fis, n| fis.resume}
.
1244d
1240d
1236d
1228d
1217d
1153d
1141d
1130d
1090c
# end
.
1078c
# def opf(irep, pc)
.
1067,1068c
#   fibi(@@iset2 ||= iset2, rgd) {rgd &&= nil}
#   fibi(@@iset2 ||= iset2, rgd) {rgd && nil}
    fibi(@@iset2 ||= iset2, rgd) {nil}
.
1065d
1051a
#	[thi, th]	###
.
1047a
	rg && ini.(rg)	# c
.
1043,1046d
1031c
#	end
.
1023,1029c
#      bt[oi].each_slice(2) { |k, v|
#	fv = fml[i += 1]
      bt[oi].each_slice(2) { |k, v| fv = fml[i += 1]
#	if v # && knid(fv, :Array)
	v && # knid(fv, :Array) &&
.
1019,1020d
1010,1012c
    bt = imem.fml('th', 'bt')
.
996,999c
##	printf("Unkown code %s \n", OPTABLE_SYM[imem.get_opcode(cop)])
##	printf("Unkown code %s \n", OPTABLE_SYM[rou(:get_opcode, cop)])
##	printf("Unkown code %s \n", OPTABLE_SYM[@@rou.(:get_opcode, cop)])	# c 
#	pl.verb("Unkown code #{sym} ") # .to_s
.
993,994d
988d
986d
979,980d
973,974c
#    fibi(@@fls2 ||= fls2, pc, 1) {0 > pc ? ~ pc : pc}
    fibi(@@fls2 ||= fls2, ~ pc, 1) {0 > pc ? ~ pc : pc}
.
970c
#    pc = ~ pc
.
958c
	  pr || (pr, sy, mt = imem.fml('st', sym))
.
956d
952c
	  f = flg.all? # && r.all? { |f| # case f when Numeric then true end}
#		case f when Numeric then true else lpl.verb(f); false end}
.
941a
#     ca = ca.force	#? mruby 410200
.
934c
#    ]
    ]	# .lazy #? mruby 410200
.
930,932c
#	0 == s.size ? sl.slp(0) : plr +=
	0 == s.size ? sl.slp(0) :
#	[sl.slp(0),
#	  plr +=
#	    lm.(isr0, s[(sz = plr.size) .. sz + ap = (ap += ap >> 1) >> 1])	# c 
	  plr += lm.(s[(sz = plr.size) ..	# c 
		sz + (ap = (ap += ap >> 1) >> 1) + (ap <=> 0)])
#	].lazy.to_a[s.s.size <=> 0] # .force
.
922,924c
#	pc1 = (pc1 = plr[r[1]]).nil? ? lm.(isr0, r[1]) : pc1	# c 
	pc1 = (pc1 = plr[r[1]]).nil? ? lm.(r[1]) : pc1	# c 
.
916,917c
##   lm = ->(isr0, r1) {r1.nil? ? r1 : imem.send(pr, *isr0, r1, mt)}	# l 
#   lm = ->(r1) {r1.nil? ? r1 : imem.send(pr, *isr0, r1, mt)}	# l 
#    lm = ->(isr0, r1) {imem.send(pr, *isr0, r1, mt)}			# l 
    lm = ->(r1) {imem.send(pr, *isr0, r1, mt)}			# l 
.
912d
908d
903,904c
#      ap = 1 << sz = 4; ap = @@fls_m ||=
      ap = 1 << sz = 3; ap = @@fls_m ||=
.
901c
#      f = false; flg = [false, false]
      flg = [f = false, f]
.
860,861c
#      loop {
#	sl.slp 0
      loop { sl.slp 0
.
857,858d
840d
836,838c
#    pl[1] && pl[0 .. -1] = pl[0 .. pl.hgt & ((n = rmth + 1) << 1) | n]
    0 < pl.hgt && pl[0 .. -1] =
	pl[0 .. pl.hgt & ((thini = rmth + 1) << 1) | thini]
.
826,828c
#    pl[0] = [[pl0i[0], [[thini]]], [pl0i[1], [6309]], [pl0i[2], []]]
    pl[0] = [[pl0i[0], [[thini]]], [pl0i[1], [NSL_]], [pl0i[2], []]]
.
823c
    # 3080410200 : 5x2 ok ( gc ) : monami-ya.mrb 8270410200 813e2af8	# www.monami-ya.jp
.
816d
790c
    plini(@@rmth, @pl = ENVary.new(true))	# 310200plini
.
788d
690,696d
681d
667d
658d
635,636c
#  @@f = 0x0.chr * 0x20
  @@f = [0x0.chr * 0x20] * 0x4
.
618c
#      fpl = delete_if__c(1, fpl) { |fb, n| fb.resume}
      fpl = delif_c(1, fpl) { |fb, n| fb.resume}
.
602,603d
599d
583,588c
#	Fiber.yield((f = #### th[idx].nil?.! && # fuguai taisaku
	Fiber.yield(((f = #### th[idx].nil?.! && # fuguai taisaku
#			ckth(th[mx = thn.hgt], 3)) && (
			ckth(th[mx = thn.hgt], 3)) ? (
				pl_es(pc, ['th', th]); sl.slp 0 # , 4096
#				f) && idx >= mx)
				f) : nil) && idx >= mx)
.
579c
    Fiber.new {		##
.
576d
563,565c
    case a when Numeric then true end || # (
#      verb "#{pc.to_xeh}		#{a}	#{op.to_xeh}")
	verb("#{pc.to_xeh}		#{a}	#{op.to_xeh}")
.
554,555c
#     knid(a, :Array)	?     __method__(a, pc)  :    a		# s_id(a, pc)  :    #? mruby 310200
      case a when Array then  __method__(a, pc)  else a end	# s_id(a, pc)  else #? mruby 310200
.
550,551c
#    ((tb = TB) == a || case a when Array then 0 >= a.hgt end) && (return a)
    ((tb = TB.dup) == a || case a when Array then 0 >= a.hgt end) && (return a)
.
546c
#   tb = TB
.
532,536c
#  def verb(s)
#    @@m.lock
#      puts s
#    @@m.unlock
#  end
  def verb(s)	@@m.lock; puts s; @@m.unlock	end
.
515c
#    bfsz = (a = [knid(th, :Array), [] == th]).size	# t 
    bfsz = (a = [knid(th, :Array), tb == th]).size
.
513a
    tb = TB.dup
.
482,489c
#  def to_ia(n, lpl = self)
#    lpl = lpl[n]; 0 == n ? lpl : @@Plmg.(@@pl0i, lpl)	# c 
#  end
.
473a
#     pl[i_k = self.afl(k, ?i)] =
#	(pl[i_k]<< v)['ctr' == k && knid(v, :Array).! ? 0 .. -1 : -1]	# p 	# ? 
.
430,434d
387,398d
378,379c
#   @@loc.ploc(n) { |a| JSON::parse(ENV[@@idb + a[0]])}
    @@loc.ploc(n) { |a| (a = ENV[@@idb + a[0]]) &&
.
368c
    @@loc.ploc(n, v) { |a| ENV[@@idb + a[0]] = JSON::generate(a[1])}
.
345,363d
336,338c
#    1.step(@@rmth + 1) { |i|
#      self[i] = *a
#    }
    1.step(@@rmth + 1) { |i| self[i] = *a}
.
332d
325d
322a


    @@loc = Loc.new(@@fl)
.
294a
module M__Loc
  @@slp = Slp.new

  def initialize(nm)
    @nm = nm
  end

  def ploc(*a)
#   s = nil
#   @m.lock
    begin
      f = File.open(@nm, ?w)	# q 
      f.flock(File::LOCK_EX)
    rescue
#     f.close	# ? 
      @@slp.slp 0
#     (s ||= @@slp).slp 0
      retry
    end ## if flg
    a[0] = a[0].to_xeh
    [yield(a), ## flg &&
	f.close][0]
#	@m.unlock][0]
#   a = yield(r)
  end
end

class Loc
  include M__Loc
end


.
284d
281,282d
274,276c
#      return a[i_s__r1].map{ |v| v.nil? ? v : send(*a[0 .. @@I_s__r0 + 1], v)}
      return a_r1.map{ |v| v.nil? ? v : __send__(*a[0 .. @@I_s__r0 + 1], v)}
#    else send(*a)
    else __send__(*a)
.
271,272c
#    case a[i_s__r1 = @@I_s__r1 + 1]
    case a_r1 = a[@@I_s__r1 + 1]
.
253,259d
250d
188,191c
#    @@fml.(lb).assoc(sym)[1 .. -1]		# c 
##   (f = @@fml).(lb).assoc(sym)[1 .. -1]	# c 
    @@fml.(lb).assoc(sym)[1 .. -1] || (		# c 
#   (f = @@fml).(lb).assoc(sym)[1 .. -1] || (	# c 
#     printf("Unkown code %s \n", OPTABLE_SYM[imem.get_opcode(cop)])
#     printf("Unkown code %s \n", OPTABLE_SYM[rou(:get_opcode, cop)])
#     printf("Unkown code %s \n", OPTABLE_SYM[@@rou.(:get_opcode, cop)])	# c 
      print("Unkown code #{sym} \n") # .to_s
      return nil
#     raise
##    rg = Fiber.yield(nil)
    )
.
184d
163,164d
138a
#   t += 1 - (t <=> 0)
.
135a
# @@slp = (((@@slp = NSL_ >> 1) + (@@slp >> 5)) >> 8) + 1 >> 1
.
123c
#      a[n] && yield(a[n], c) && a.delete_at(n) || n += 1
      a[n] && yield(a[n], c) && (a.delete_at(n); redo); n += 1
.
120d
113,117c
#    (f = ! a) && a = self
    a ||= f = self	# a ||= (f = true; self)
#   i.! ? a.delete_if(&:yield) : a.each_with_index { |v, n|
#	break if n >= i; v && yield(v, n) && a.delete_at(n)}
.
111c
#  def delete_if__c(i, a = nil)
  def delif_c(i, a = nil)
.
109d
102c
#    ?i != m ? self[m.afl(k, ?i)] :	 self[0].index(self[0].assoc(k))	# self.index(idx)	# q 2 
    ?i != m ? self[m.afl(k, ?i)] :	 (self0 = self[0]).index(self0.assoc(k))	# self.index(idx)	# q 2 
##   ?i != m ? self[m.afl(k, ?i)] : loop {self[0].index(self[0].assoc(k)) && break}	# self.index(idx)	# fuguai taisaku	# q 2 
#   ?i != m ? self[m.afl(k, ?i)] : loop {(self0 = self[0]).index(self0.assoc(k)) && break}	# self.index(idx)	# fuguai taisaku	# q 2 
.
15d
4,5c
#	:Array,	:Numeric,	:Fixnum,	# :Float,	:Bignum,
#	:Symbol,	:String,	# :Object,
	:Array,	:Numeric,	:Fixnum,	:Symbol,	:String,
.
2a
# Thread.new((((((((([
.



-- 
YAMAGUTIseisei ( str_h__namae = { :sei => "山口" , :mei => "青星" } )
http://hello.to/seisei/	mailto:seisei@.68..net	tel:081-70-5152-1104
heiwa furiisekkusu 1tu

[toc] | [prev] | [next] | [standalone]


#14 — jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_9_0_4_2_1__1240910200.rb

FromYAMAGUTIseisei <seisei@hello.to>
Date2019-04-21 10:40 +0000
Subjectjit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_9_0_4_2_1__1240910200.rb
Message-ID<5CBC48AE.5090805@hello.to>
In reply to#13
1325c
##  @rmt.join
.
1318,1319d
1311,1315c

.
1288,1289d
1271d
1266,1267c
#	  fl<< fls(pc)	# p 
	  fl<< fibi(@@fls ||= fls, ~ pc, 1) { |pc| 0 > pc ? ~ pc : pc}	# p 
.
1263c
#	  ise<< iset(rg) if 0 <= rg['pc', nil, ?-] && pctj.pop != pc	# p 	# q	# cp 
	  0 <= rg['pc', nil, ?-] && pctj.pop != pc && ise<< fibi(@@iset ||=	# cp 	# q 	# p 
###		iset, rg) {nil}		# ? 
#		iset, rg.to_a('pc', 'sp', 'cop', 'sym')) {nil}
##		iset, rg) {}	# ? 
		iset, rg.to_a('pc', 'sp', 'cop', 'sym')) {}

.
1261d
1258,1259c
#	lpl.verb "#{pc.to_xeh}	#{sym}	#{rg['cop'].to_xeh}" # if sym
	loc.verb "#{pc.to_xeh}	#{sym}	#{rg['cop'].to_xeh}" # if sym
.
1247d
1244d
1078,1079d
1067a
    loc = @@loc
.
1035,1043c
#  @@iset2 = nil
  @@iset = nil
#  def iset(rg)
##   rgd = rg.dup
#    rgd = rg.to_a('pc', 'sp', 'cop', 'sym')
#
##    fibi(@@iset2 ||= iset2, rgd) {nil}
#    fibi(@@iset ||= iset, rg.to_a('pc', 'sp', 'cop', 'sym')) {nil}
#  end
.
1030a
	oa.empty? || oa.clear
.
1027c
#	rg, m = Fiber.yield(0 != thi && ht <= thi && (thi = -1; true))	##
	rg, m = Fiber.yield(0 != thi && ht <= thi && ! ! thi = -1)	##
.
1025d
1021c
#	pl.pl_es(pc1, opg.(thi) + [oa, []][thi <=> 0])	# c 
	pl.pl_es(pc1, opg.(thi) + oa)	# c 
.
1013,1014d
1006a
#	  lopa.push(k, 'th' != k ? fv : (					#? mruby 410200
##	  lopa.push(k, 'th' != k ? fv : fvl.force[oi <=> 0].(oi))	# c 	#? mruby 410200
#		case fvl when Array then else fvl = fvl.force end	# higokan mruby 70410200	#? mruby 410200
#		knid(fvl, :Array) || fvl = fvl.force		#? mruby 410200
#		fvl[oi <=> 0].(oi)))	# c 
.
1004d
1001,1002d
999c
#    opg = ->(oi, lopa = []) { i = -1	# l 
    opg = ->(oi, lopa = [], i = -1) {	# l 
.
997c
		((ht = fv.hgt) <=> oi) >> 1]}]	# .lazy #? mruby 410200
.
978,981d
976c
      pc, sp, cop, sym = rg ## .to_a('pc', 'sp', 'cop', 'sym') # ? 
.
965,966c
#  def iset2	##
  def iset	##
.
956,963c
#  @@fls2 = nil
  @@fls = nil
#  def fls(pc)
#    fibi(@@fls2 ||= fls2, ~ pc, 1) {0 > pc ? ~ pc : pc}
#  end
.
948,949c
#	  isr0 = [i, s, r0]
	  isr0 = [mt ? i : s, r[0]]
	  sz = plr.size
#	  ca[flg[1] ? 0 : 1].(r)	# c 
	  ca[
#	  ca.force[			#? mruby 410200
		flg[1] ? 0 : 1].(r)	# c 
.
940,941c
	  f = flg.all? # && r.all? { |f|
#		case f when Numeric then true else @@loc.verb(f); false end}
.
929d
924c
#      lpl.verb "#{pc.to_xeh}			#{sym}	#{r[0].to_xeh}	#{r[1].to_xeh}"
      loc.verb "#{pc.to_xeh}			#{sym}	#{r[0].to_xeh}	#{r[1].to_xeh}"
.
920d
913,918c
#	  plr += lm.(s[(sz = plr.size) ..	# c 
#		sz + (ap = ap += (ap >> 1) >> 1) + (ap <=> 0)])
	  plr += lm.(s[sz .. sz + (ap = (ap += ap >> 1) >> 1)]) # + (ap <=> 0)])	# c 	# c 
.
911d
904,905c
#	pc1 = (pc1 = plr[r[1]]).nil? ? lm.(r[1]) : pc1	# c 
	pc1 = (pc1 = plr[r[1]] # ; r[1] >= sz ||
		pc1.nil?) ? lm.(r[1]) : pc1		# c 
.
898d
896d
885d
882d
873d
871c
#     i_th = lpl.afl('th', ?i)	# q 
.
866,867c
      loc = @@loc
      sl = @@slp

.
860,861c
#  def fls2	##
  def fls	##
.
858d
839,846c
#    Fiber.new { |m = 1| ctr.times {m = Fiber.yield(false)}
#      loop { sl.slp 0
    Fiber.new { |m = 1| loop { sl.slp 0
#	m = Fiber.yield(fb.resume(p1, m))
	m = Fiber.yield(0 < ctr ? ! ctr -= 1 :
		[fb.resume(p1, m), p1 = yield(p1)][0])}}
#	p1 = yield(p1)
#      }
#    }
.
819,821c
#    0 < pl.hgt && pl[0 .. -1] =
    (0 < thini = pl.hgt) && pl[0 .. -1] =
#	pl[0 .. pl.hgt & ((thini = rmth + 1) << 1) | thini]
	pl[0 .. thini & ((thini = rmth + 1) << 1) | thini]
.
810,812c
    pl[0] = [[pl0i[0], [[thini]]], [pl0i[1], [6309]], [pl0i[2], []]]
#   pl[0] = [[pl0i[0], [[thini]]], [pl0i[1], [NSL_]], [pl0i[2], []]]
#   self[0] = [[[thini]], [68000], []].map.with_index { |v, i| [pl0i[i], v]}
.
807c
    # 3080410200 : 5x2 ok ( gc ) : monami-ya.mrb 8270410200 813e2af8	# http://www.monami-ya.jp/
.
775c
    plini(@@rmth, @pl = ENVary.new(true))	# 310200plini ?
.
751a
    @@loc = Loc.new
.
631,632c
#  @@f = [0x0.chr * 0x20] * 0x4
  @@f = 0x0.chr * (0x20 << 2)
  @@bm = 0xff.chr
.
613d
588c
#	f && idx -= (idx <=> mx) >> 1	##
.
580,586c
	Fiber.yield((( # f = #### th[idx].nil?.! && # fuguai taisaku
#			ckth(th[mx = thn.hgt], 3)) ? (
#				pl_es(pc, ['th', th]); sl.slp 0 # , 4096
		ckth(th[mx = thn.hgt], 3)) ? (pl_es(pc, ['th', th]); sl.slp 0 # , 4096
#			f) : nil) && idx >= mx)
		true) : verb.call) && [idx >= mx, idx -= (idx <=> mx) >> 1][0])	##
.
574c
#    f, mx = nil

#    verb = ->{nil}
    verb = ->{}
.
572d
567d
560,564c
#    a, op = a
#    case a when Numeric then true end ||
#	verb("#{pc.to_xeh}		#{a}	#{op.to_xeh}")
#	@@loc.verb("#{pc.to_xeh}		#{a}	#{op.to_xeh}")
	(loc = @@loc).verb("#{pc.to_xeh}		#{a[0]}	#{a[1].to_xeh}")
#    (imem = @@Imem).send(a, op) || op
    (imem = @@Imem).send(*a) || a[1]
.
552,553c
##     knid(a, :Array)	?     __method__(a, pc)  :    a		# s_id(a, pc)  :    #? mruby 310200
#      case a when Array then  __method__(a, pc)  else a end	# s_id(a, pc)  else #? mruby 310200
#     knid(a, :Array)	?     s_id(a, pc)  :    a	# __method__(a, pc)  :    #? mruby 410200
      case a when Array then  s_id(a, pc)  else a end	# __method__(a, pc)  else #? mruby 410200
.
548,549c
#    ((tb = TB.dup) == a || case a when Array then 0 >= a.hgt end) && (return a)
    (TB.dup == a || case a when Array then 0 >= a.hgt end) && (return a)
.
544d
529,534c
#  def verb(s)	@@m.lock; puts s; @@m.unlock	end
.
511,512c
#    bfsz = (a = [knid(th, :Array), tb == th]).size
    bfsz = (a = [knid(th, :Array), TB.dup == th]).size
.
509c
#    tb = TB.dup
.
487,489d
482,484d
473a
      ['ctr' == k, k = self.afl(k, ?i)][0] &&	 # q 
	knid(v, :Array).! ?
#	case v when Array then true end.! ?	# higokan ? mruby 70410200
		pl[k]<< v : pl[k] = v	# p 
.
466c
#     pl[i_k] = 'ctr' == k && ! knid(v, :Array) ? pl[i_k]<< v : v	# p 
.
461c
#     i_k = self.afl(k, ?i)	# q 
.
424,426c
#     (nil == @@fxnm) && @@fxnm = (Float == self.afl('ctr')[0].class	# furui mattn/mruby-json
#     (nil == @@fxnm) && @@fxnm = (Float == self.ctr_r.class)		# furui mattn/mruby-json
#     (nil == @@fxnm) && @@fxnm = (Float == self.afl('sym')[0].class)	# furui mattn/mruby-json
.
411c
# @@fxnm = nil 		# furui mattn/mruby-json
.
369,371d
347c
#     (Time.now.to_f - 0x3fffffff.to_f << 0x10).to_s.split(?.)[0][-8..-1].to_xeh	# q 
.
334c
#    @@m = Mutex.new
.
295,326d
285c
#    case op[0] when Numeric then op.inject(:+) else __send__(*op) end
    case op[0] when Numeric then op.inject else __send__(*op) end
.
278d
276d
273d
267c
# def s__i__r0(	    *a) a[@@I_s__i].send(a[@@I_s__mt])[a[@@I_s__r0]]	 end
  def s__i__r0(	    *a) a[@@I_s__s].send(a[@@I_s__mt])[a[@@I_s__r0]]	 end
.
260c
#  @@I_s__i = 0; @@I_s__s = 1; @@I_s__r0 = 2; @@I_s__r1 = 3; @@I_s__mt = 4
  @@I_s__s = 0; @@I_s__r0 = 1; @@I_s__r1 = 2; @@I_s__mt = 3
.
204,205d
197c
#      print("Unkown code #{sym} \n") # .to_s
      (loc = @@loc).verb("Unkown code #{sym} ") # .to_s
.
190,191d
186,187c
  def ta(l, cop) [l[0] || :getarg_a, l[1] || cop][0 .. l[2] || 1] end
.
165a
  @@loc = Loc.new
.
164a
module M__Loc	# Inspired by Professor HidetosiNagai http://rubykaigi.org/2011/ja/schedule/details/17S05/#KyuTech
  (
    @@m = Mutex.new
    @@slp = Slp.new
  )

#  def initialize(nm)
  def initialize(nm = nil)
    @nm = nm
  end

  def ploc(*a)
    GC.disable 	# g 
#   s = nil
#   @m.lock
#   @@m.lock
    begin
      f = File.open(@nm, ?w)	# q 
      f.flock(File::LOCK_EX)
    rescue
#     f.close	# ? 
      @@slp.slp 0
#     (s ||= @@slp).slp 0
#      retry
      @nm && retry
    end ## if flg
    a[0] = a[0].to_xeh
    [yield(a), ## flg &&
	f.close][0]
#	@m.unlock][0]
#	@@m.unlock][0]
#   a = yield(r)
  end

  def verb(s)
    GC.disable 	# g 
    @@m.lock
      puts s
    @@m.unlock
  end
end

class Loc
  include M__Loc
end

.
148,150c
#   (self.size << 4).times {sleep 0; (true == true).is_a?(Object); sleep 0}
.
138c
  @@slp = (((@@slp = NSL_ >> 2) + (@@slp >> 5)) >> 7) + 1 >> 1	# conf.gem :github => 'matsumotory/mruby-sleep' # bamchoh/mruby-sleep	# msleep usleep
.
122,129c
    [! a, (a ||= self			# a ||= f = self	# a ||= (f = true; self)
      (i > n = a.size) && i = n
      c = (n = 0) - 1
      while i > c += 1	# c += 1 < i # -e:1: non float value (TypeError) ( monami-ya.mrb:60510200 mruby:70410200 )
#	a[n] && yield(a[n], c) && a.delete_at(n) || n += 1
	a[n] && yield(a[n], c) && (a.delete_at(n); redo); n += 1
#	(v = a[n]) && yield(v, c) && a.delete_at(n) || n += 1
      end
#    f ? self.replace(a) : a
    )][0] ? self.replace(a) : a		# f ? self.replace(a) : a
.
117,118d
114d
102,106c
##   self[0].index(k)	# higokan mruby 10410200 ( irep.rb )
#    ?i != m ? self[m.afl(k, ?i)] :	 (self0 = self[0]).index(self0.assoc(k))	# self.index(idx)	# q 2 
    ?i != m ? self[m.afl(k, ?i)] :	 (s0 = self[0]).index(s0.assoc(k))	# self.index(idx)	# q 2 
##   ?i != m ? self[m.afl(k, ?i)] : loop {(self0 = self[0]).index(self0.assoc(k)) && break}	# self.index(idx)	# fuguai taisaku	# q 2 
#   ?i != m ? self[m.afl(k, ?i)] : loop {(s0 = self[0]).index(s0.assoc(k)) && break}	# self.index(idx)	# fuguai taisaku	# q 2 
.
88c
#    (i + self.first .. i + self.last - (self.exclude_end? ? 1 : 0))
    i + self.first .. i + self.last - (self.exclude_end? ? 1 : 0)
.
70,71d
17,18c
#	:ctr_s,	:p,	:s
	:ctr_s,	:p,	:s].clear
#])))))))))
)))))))))
.
4,6c
# ((((((((([
(((((((((  [ # Thread.new [
.



-- 
YAMAGUTIseisei ( str_h__namae = { :sei => "山口" , :mei => "青星" } )
http://hello.to/seisei/	mailto:seisei@.68..net	tel:081-70-5152-1104
heiwa furiisekkusu 1tu

[toc] | [prev] | [next] | [standalone]


#15 — jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_9_0_6_0_9__9060910200.rb

FromYAMAGUTIseisei <seisei@hello.to>
Date2019-06-09 09:28 +0000
Subjectjit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_9_0_6_0_9__9060910200.rb
Message-ID<5CFCD132.7020504@hello.to>
In reply to#14
1332a

# GC.start		# g 

.
1331a

# GC.stress = true	# g 
# GC.start		# g 

.
1280a
#     if pco.! && fl.empty?
.
1268a

.
1264,1265c
#	  fl<< fibi(@@fls ||= fls, ~ pc, 1) { |pc| 0 > pc ? ~ pc : pc}	# p 
	  fl<< fibi(@@fls ||= fls, ~ pc, 1) { |pc| pc}	# p 
.
1257,1258d
1254,1255c
#	if ?J != sym.to_s[0] && ! [:ENTER, :SEND, :RETURN, :NOP].include?(sym)	# q 
	if (ifj.(sym) && ! ifs.(sym))		# c 2 
.
1251d
1245,1247c
#	c, sym = @@opf.(irep, pc = rg['pc'], imem)	# c 
	c, sym = @@opf.(irep, pc = rg['pc'])		# c 
.
1234a
    ifj = -> (sym) {?J != sym.to_s[0]}		# l 	# q 
    ifs = -> (sym) {[:ENTER, :SEND, :RETURN, :NOP].include?(sym)}	# l 

.
1230d
1227a
	sl.slp 0
.
1217,1218c
#	  printf("Unkown code %s \n", OPTABLE_SYM[get_opcode(cop)])
#	  printf("Unkown code %s \n", OPTABLE_SYM[imem.get_opcode(cop)])
.
1191c
#	  stack[0] = stack[imem.getarg_a(cop)]
#	  stack[0] = stack[rou(:getarg_a, cop)]
	  stack[0] = stack[rou.(:getarg_a, cop)]	# c 
.
1186c
#	  return stack[imem.getarg_a(cop)]
#	  return stack[rou(:getarg_a, cop)]
	  return stack[rou.(:getarg_a, cop)]	# c 
.
1136c
#	n = imem.getarg_c(cop)
#	n = rou(:getarg_c, cop)
	n = rou.(:getarg_c, cop)	# c 
.
1134c
#	mid = irep.syms[rou(:getarg_b, cop)]
	mid = irep.syms[rou.(:getarg_b, cop)]	# c 
.
1132c
#	a = imem.getarg_a(cop)
#	a = rou(:getarg_a, cop)
	a = rou.(:getarg_a, cop)	# c 
.
1109,1110c
#	  rg['pc', -1] = rg['pc'] + imem.getarg_sbx(cop)
#	  rg['pc', -1] = rg['pc'] + rou(:getarg_sbx, cop)
	  rg['pc', -1] = rg['pc'] + rou.(:getarg_sbx, cop)	# c 
.
1106,1107c
#	if !stack[imem.getarg_a(cop)]
#	if !stack[rou(:getarg_a, cop)]
	if !stack[rou.(:getarg_a, cop)]		# c 
.
1099c
#	  rg['pc', -1] = rg['pc'] + imem.getarg_sbx(cop)
#	  rg['pc', -1] = rg['pc'] + rou(:getarg_sbx, cop)
	  rg['pc', -1] = rg['pc'] + rou.(:getarg_sbx, cop)	# c 
.
1097c
#	if stack[imem.getarg_a(cop)]
#	if stack[rou(:getarg_a, cop)]
	if stack[rou.(:getarg_a, cop)]		# c 
.
1091c
#	rg['pc', -1] = rg['pc'] + imem.getarg_sbx(cop)
#	rg['pc', -1] = rg['pc'] + rou(:getarg_sbx, cop)
	rg['pc', -1] = rg['pc'] + rou.(:getarg_sbx, cop)	# c 
.
1079a
    rou = @@rou
.
1058c
#   sym = OPTABLE_SYM[imem.get_opcode(cop)]
#   sym = OPTABLE_SYM[rou(:get_opcode, cop)]
    sym = OPTABLE_SYM[(rou = @@rou).(:get_opcode, cop)]		# c 
.
1049,1050c
# @@opf = ->(irep, pc, imem) {	# l 
  @@opf = ->(irep, pc) {	# l 
#   imem = @imem
.
1031,1040d
1021d
1015d
1002,1003d
997,999c
	  lopa.push(k, 'th' == k ? fvl[oi <=> 0].(oi) : fv)		# c 
#	  lopa.push(k, 'th' != k ? fv : fvl.force[oi <=> 0].(oi))	# c 	#? mruby 410200
.
992d
979d
956,962c
  @@iset = nil
.
943,949c
##	  isr0 = [mt ? i : s, r[0]]
##	  sz = plr.size
#	  ca[
##	  ca.force[			#? mruby 410200
#		flg[1] ? 0 : 1].(r)	# c 
#	  c_l.ca[flg[1] ? 0 : 1].(r)	# c 
	  r = c_l.ca
.
940,941c
##	  sp ||= s.p = pl[i_sp][0]
##	  pr || (pr, sy, mt = imem.fml('st', sym))
.
936c
#		case f when Numeric then true else loc.verb(f); false end}
.
932,933c
###	  sym, (r0, r1) = rslt pl	# higokan mruby 70410200	# bce75e27 2211410200 matz
##	  sym, r, flg = rslt(pl) # ; r0, r1 = r
#	  sym, r, flg = c_l.rslt
	  sym, r, flg, f = c_l.rslt
.
930c
##	  pl = lpl.pl_g(pc1)	##
	  c_l.plg(pc1)
.
919d
897,916c
##   lm = ->(r1) {r1.nil? ? r1 : imem.send(pr, *isr0, r1, mt)}	# l 
#    lm = ->(r1) {imem.send(pr, *isr0, r1, mt)}			# l 
.
893a
	c_l = Fls__l.new(s, i, imem, lpl, sl)
.
892c
#	sp, pr = nil; plr = []
.
887,888c
#      ap = 1 << sz = 4; ap = @@fls_m ||=
#	((ap += (ap <<= 1) + (ap <<= 2) + (ap << 2)) >> sz) + 1 >> 1
.
885c
      sym = nil
#      flg = [f = false, f]
      f = false
      plr, r = []
.
883c
#      isr0, pr, sy, sym, mt = nil
.
879,880c
#      sp, pl, r = nil
      sp, pl = nil
#      plr = []

#      c_l = Fls__l.new(s, i, imem, lpl, sl)
      c_l = nil
.
872c
      pc1 = 0 # (pc = 0) + 1
.
862,864c
  @@fls = nil
  def fls		##
.
859a

      [@sym = sym, @r = r, @flg = flg, @f = flg.all?]
    end
.
853,858c
#  def rslt(pl)
#    lpl = @pl
#    r = pl[lpl.afl('th', ?i)]		# q 
##   r.map { |v| v[1] = v[-1]}
##   r = r.map { |v| v[1] = v[-1]}	# higokan ? mruby 70410200
#    [pl[lpl.afl('sym', ?i)].to_sym,	# q 
#	*[r, r.map { |v| lpl.ckth(v, 1)}].map { |v| [v[0], v[-1]]}]
#  end

  class Fls__l
    @@fls_m = nil

    def initialize(s, irep, imem, lpl, sl)
      (
	@s = s; @i = irep; @imem = imem; @lpl = lpl

#	sp, sz, isr0, r0, r1, lm, sy = []	# higokan ? mruby 70410200
#	sp, sz, ht, isr0, r0, r1, lm, sy = [][0]
#	@sp, @isr0, @r0, @r1, @r, @pr, @sym, @sy, @mt = nil
	@sp, @isr0, @r, @pr, @sym, @sy, @mt = nil

	@f = false; @flg = [false, false]

#      ap = 1 << sz = 3; ap = @@fls_m ||=
	ap = 1 << sz = 3; @ap = @@fls_m ||=
	  ((ap += (ap <<= 1) + (ap <<= 2) + (ap << 2)) >> sz) + 1 >> 1

	@plr = []; @sz = 0 # @plr.size
#	@lm = ->(r1) {r1.nil? ? r1 : @imem.send(@pr, *@isr0, r1, @mt)}	# l 
	@lm = ->(r1) {@imem.send(@pr, *@isr0, r1, @mt)}		# l 
	@ca = [
	  ->(r) {	# f
#	    @r = @r1 < @sz && @plr[@r1] || @lm.(@r1)	# c 
	    sz = (sz = @plr[r[1]]   ; r[1] >= @sz ||	# _ = ( _ = @plr[
#			sz)	|| @lm.(r[1])		# c 
			sz.nil?) ? @lm.(r[1]) : sz	# c 
#	    s[@r1] = @sy ? [s[@r1], @r].inject(@sy) : @r
	    s[r[1]] = @sy ? [s[r[1]], sz].inject(@sy) : sz	# : _
	  },		# rs = [r1.to_xeh, r0.to_xeh]},
	  ->(r) {	# flg[0]
#	    ((sw = sp + sz) + 0xe).step(sw, -1) {	# higokan mruby 70410200	# bbab89e7 5211410200 tmtm
#	    @sz.step(@sz + @ap -= @ap >> 2) { |n| @plr<< @lm.(@isr0, s[n])}	# p c 
	    0 == s.size ? sl.slp(0) : @plr += @lm.(s[(sz = @sz) .. sz + @ap = (	# c 
#		@ap += @ap >> 1) >> 1)])	# @ap >>= 1) + (@ap >> 1)])
#		(sz = @ap) += sz >> 1) >> 1])	# sz = @ap >> 1) + (sz >> 1)])
		sz = @ap; sz += sz >> 1) >> 1])	# sz = @ap >> 1) + (sz >> 1)])
#			.. sz + (ap = (ap += ap >> 1) >> 1) + (ap <=> 0)])
	  }		# rs[1] = r0.to_xeh
	]	# .lazy #? mruby 410200

	plb = Plb
#	i_th = lpl.afl('th', ?i)	# q 
	@i_sp = plb.assoc('sp')[1]
      )
    end

    def ca # (i)
      if @flg[0]
	@sp ||= @s.p = @pl[@i_sp][0]
#	@r0, @r1 = @r
	@pr || (@pr, @sy, @mt = @imem.fml('st', @sym))
#	@isr0 = [@mt ? @i : @s, @r0]
	@isr0 = [@mt ? @i : @s, @r[0]]
	@sz = @plr.size

#	(ca = @ca).force[	#? mruby 410200
#	       @ca.force[	#? mruby 410200
#	(ca = @ca)[
	       @ca[
			@flg[1] ? 0 : 1].(@r)	# c 
      end
#      [@r, @sym]
      @r
    end

    def plg(pc)	@pl = @lpl.pl_g(pc)	end

    def rslt # (pl)
      lpl = @lpl
      pl = @pl
      r = pl[lpl.afl('th', ?i)]	# q 
#     r.map { |v| v[1] = v[-1]}
#     r = r.map { |v| v[1] = v[-1]}	# higokan ? mruby 70410200

      sym, r, flg = [pl[lpl.afl('sym', ?i)].to_sym,	# q 
.
848,850d
845d
842,843d
823d
821d
813d
809c
    # 3080410200 : 5x2 ok ( gc ) : monami-ya.mrb 8270410200 813e2af8	# www.monami-ya.jp
.
784a
    Plb = @@plb
.
680,682c
  def is(i = nil)
    @i = i
  end
.
676d
662a
      @p = sp; @s = s; @i = nil
.
661c
#      @p = sp; @s = s
.
631d
615,617c
#####      fpl.delete_if.with_index { |fb, i| break if i > 0; fb.resume}
#####      fpl.delete_if.with_index { |fb, i| next if i > 0; fb.resume}
#####      fpl.delete_if.with_index { |fb, i| p i; fb.resume}
.
613c
#     fpl.delete_if(&:resume)
##    fpl.delete_if(&:resume(pc))
.
601a
##    pc && 0 <= pc && (fpl<< (@@plw ||= plw).dup)[-1].resume(pc)	# p 	# ? 
.
595a
##@@plw = nil
.
588,589d
586d
582,584c
	Fiber.yield((( ####		       th[idx].nil?.! && # fuguai taisaku
.
579a
##    Fiber.yield # (false)
.
578c
    Fiber.new { ## |pc|	##
.
575d
573d
568a
##def plw	##
.
564d
558,562c
#   case (opc, op = a)[0] when Numeric then true end ||
.
554c
#   return a[0] if 0 >= a.hgt
.
549,550d
545d
532,533d
517,518c
#   bf = (Array.new(bfsz, '1').join).to_i(2)	# higokan ? mruby 70410200
#   bf = Array.new(bfsz) { |n| 1 << n}.inject	# higokan ? mruby 70410200
.
514d
512d
437d
429,431d
416d
364d
342,343d
324d
317c
#      return a_r1.map{ |v| v.nil? ? v : __send__(*a[0 .. @@I_s__r0 + 1], v)}	# r 
      a[i_s__r1].map{ |v| v.nil? ? v : __send__(*a[0 .. i_s__r1 - 0_0 - 1], v)}
.
314,315c
    a[0] = ?s << a[0].to_s		# q 
#    case a_r1 = a[@@I_s__r1 + 1]
    case a[i_s__r1 = @@I_s__r1 + 1]
.
308d
300d
238d
191d
185d
176d
168d
162c
module M__Loc	# Inspired by Professor NAGAI Hidetosi http://rubykaigi.org/2011/ja/schedule/details/17S05/#KyuTech
.
147a
#   [true][Time.now.to_f.to_s.split(?.)[1].to_i & 15] && GC.start	# g 
#   [true][(@@ctr += 1; @@ctr &= 3)] && GC.start		# g 
.
146a
#   (r - 1).times {usleep 0}; r.times {usleep t}
#   (r - 1).times {msleep 0}; r.times {msleep t}		# usleep yobi
#   (r - 1).times {sleep 0}; r.times {sleep t}			# antei ?
#   (r - 1).times {sleep 0}
#   r.times {sleep t}

.
142d
140c
# @@ctr = 0
.
127d
113c
# def delif_c(i, a = self)	# # higokan ? mruby-thread:410200 monami-ya.mrb:60510200 mruby:70410200
.
105d
102,103c
#   self[0].index(k)	# higokan mruby 10410200 ( irep.rb )
.
87d
18,19c
))))))))) # .move	# ? 	# conf.gem :github => 'miura1729/mruby-mmm'


# GC.generational_mode = false	# g 	# http://syucream.github.io/mrubook/gc.html
.
16d
3,4c
# include MMM	# conf.gem :github => 'miura1729/mruby-mmm'

.



-- 
YAMAGUTIseisei ( str_h__namae = { :sei => "山口" , :mei => "青星" } )
http://hello.to/seisei/	mailto:seisei@.68..net	tel:081-70-5152-1104
heiwa furiisekkusu 1tu

[toc] | [prev] | [next] | [standalone]


#16 — jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_9_0_8_1_1__1180910200.rb

FromYAMAGUTIseisei <seisei@hello.to>
Date2019-08-12 10:10 +0000
Subjectjit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_9_0_8_1_1__1180910200.rb
Message-ID<5D513AF8.7040503@hello.to>
In reply to#15
1377c
GC.start		# g 	# antei ?
.
1373c
GC.start		# g 
.
1348,1349c
      @Slp.slp
    end
.
1346c
#      ise[0].reject! { |fis| fis.resume}
      ise[0].reject!(&:resume)
#     ise[0].delif_c(1) { |fis, n| fis.resume}

#     fl.step(@@rmth) { |n|	# higokan ? touki 70410200
#     fl.reject!.with_index { |v, n| v.resume(n) && 0 == n}	# higokan ? touki 70410200

#     if pfl = ise[1][0]
#	(fl<< pfl[1]; ise[1].shift) if 0 <= pfl[0]	# p 
#     end
.
1339,1340c
	stack.ps rg['sp']
#	@irep[0] = irep
	@irep = irep
.
1333c
#      if 0 <= rg['ctr', 1]
      if 0 <= rg.pg
.
1329a
	jsc.call
.
1328d
1324c
#	plini
.
1322a
	rg.ps(rg.pg.abs)	# cp 
.
1320c

#	rg['ctr', 1] = rg['ctr', 1].abs
.
1315c
##	ise[0].reject! { |fis| fis.resume}	# higokan ? GC 70410200
.
1306,1308c
#	  pco = rg['pc'] if ?J == rg['sym'].to_s[0]	# q 
	  pco<< rg['pc'] if ?J == rg['sym'].to_s[0]	# p 	# q 
######	  (pco = rg['pc']; pctj<< pco + 1) if ?J == rg['sym'].to_s[0]	# q 
#	  ise[1].push([false, false], [false, false])
#	  rg['ctr', 1] *= -1	# kakezan
	  rg.ps(-rg.pg)
.
1303a
	  end
.
1301,1302c
#     if 0 <= rg['ctr', 1] || pco
#     if pco.slice!(0 .. -1) || 0 <= rg['ctr', 1]	# higokan monami-ya.mrb:60510200 mruby:70410200
#      if pco.pop || 0 <= rg['ctr', 1]
      if pco.pop || 0 <= rg.pg
#	pco &&= nil
	opg.call
#	@@opg.(irep, rg, imem)	# c 

	loc.verb "#{rg['pc'].to_xeh}	#{rg['sym']}	#{rg['cop'].to_xeh}" # if rg['sym']

#	if (ifj.(sym) && ! ifs.(sym))		# c 2 
	if (ifj.(rg['sym']) && ! ifs.(rg['sym']))	# c 2 
#	  ise<< iset(rg)	# p 
#	  ise<< iset(rg) if 0 <= rg['pc', nil, '-']	# p 	# cp 
#	  ise[0]<< iset(rg) if 0 <= rg['pc', nil, '-']	# p 	# cp 
#	  next if pcoj.call
#	  fl<< fls(rg['pc'])	# p 

#	  pcff = false
#	  if pfl = ise[1].shift
#	    pcf, pfl1 = pfl
#	    fl<< pfl1 if pcff = pcf.abs == rg['pc']	# p 	# cp 
#	  end
	  pcf, pfl1 = ise[1].shift
	  if pcf && pcf.abs == rg['pc']		# cp 
#######	    fl<< pfl1	# p 
	    fl<< pfl1 # if pctj.pop != rg['pc']		# p 
	  else
#	  if ! pcff
	    ise[0]<< iset(rg)	# p 

	    pcf = rg['pc']
#	    pcf = -pcf if 0 > rg['ctr', 1]
	    pcf = -pcf if 0 > rg.pg
#######	    ise[1]<< [pcf, fls(rg['pc'])]	# p 
	    ise[1]<< [pcf, fls(rg['pc'])] # if pctj.pop != rg['pc']	# p 
	    next if pcoj.call
.
1284,1299c
#      0.step(@@rmth) { |n|
#      0.step(3) { |n|
#      fl.reject_c!(1) { |v, n| v.resume(n)}
      fl.reject!.with_index { |v, n| v.resume(n)}

#      ise[1].each_index { |n|
      ise[1].reject! { |pfl|
#	(fl<< pfl[1]; ise[1].shift) if 0 <= pfl[0]	# p 
#	(fl<< pfl[1]; ise[1].shift) if ! pfl[0] || 0 <= pfl[0]	# p 
#	fl<< pfl[1] if pfl[0].! || 0 <= pfl[0]		# p 
	pfl && (pfl[0].! || 0 <= pfl[0]) && fl<< pfl[1]	# p 
#	pfl && (pfl.empty? || 0 <= pfl[0]) && fl<< pfl[1]	# p 
      }
.
1280,1282c
#      ise.reject! { |fis| fis.resume}
#     ise[0].reject! { |fis| fis.resume}
.
1272a
#   @@opg = ->(irep, rg, imem) {	# l 
#    opg = -> { # |irep, rg, imem|	# l 
    opg = -> {	# l 
      c, sym = @@opf.(irep, rg['pc'], imem)	# c 
      rg.push('cop', c)
      rg.push('sym', sym)
#     rg
    }

.
1268a
	@Slp.slp 0
.
1265,1266c
#      if 0 > rg['ctr', 1]
      if 0 > rg.pg
.
1263c
#    pco = nil
    pco = []
.
1260c
#      [callinfo, irep, rg]
.
1252,1257c
	callinfo, irep, rg = @@jsc.(stack, callinfo, irep, rg, imem)	# c
##	printf("Unkown code %s \n", OPTABLE_SYM[get_opcode(cop)])
#	printf("Unkown code %s \n", OPTABLE_SYM[imem.get_opcode(cop)])
.
1244,1245c
	  callinfo.pd
###	  @sp = @callinfo[@cp]
.
1238,1241c
	  callinfo.pd
###	  @pc = @callinfo[@cp]
#	  pc = @callinfo[@cp] - 1
#	  rg['pc', -1] = @callinfo[@cp]
.
1231c
	  callinfo.pd
.
1227,1229c
	  stack[0] = stack[imem.getarg_a(cop)]
.
1225c
###	  @stack[@sp] = @stack[@sp + getarg_a(cop)]
.
1220,1223c
	  return stack[imem.getarg_a(cop)]
.
1217,1218c
	if 0 == callinfo.pg
###	  return @stack[@sp + getarg_a(cop)]
.
1106,1212c
#     case sym
      case rg['sym']
.
1104c
    jsc = Proc.new {
      cop = rg['cop']
.
1100d
1097c
    ise = [[], []]
.
1091c
    @irep = irep
.
1087,1089c
    imem = @imem
    stack = @stack
    callinfo = @callinfo
.
1085d
1080d
1076,1078c
    sym = OPTABLE_SYM[imem.get_opcode(cop)]
.
1065,1068c
  @@opf = ->(irep, pc, imem) {	# l 
.
1058,1062c
  @@jsc = Proc.new { |stack, callinfo, irep, rg, imem|
    cop = rg['cop']

#   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

      # メソッドの先頭で引数のセットアップする命令。面倒なので詳細は省略
    when :ENTER

      # SEND Ra, mid, anumでRaをレシーバにしてシンボルmidの名前のメソッドを
      # 呼び出す。ただし、引数はanum個あり、R(a+1), R(a+2)... R(a+anum)が引数
    when :SEND
#     a = getarg_a(cop)
      a = imem.getarg_a(cop)
#     mid = @irep.syms[getarg_b(cop)]
      mid = irep.syms[imem.getarg_b(cop)]
#     n = getarg_c(cop)
      n = imem.getarg_c(cop)
###   newirep = Irep::get_irep(@stack[@sp + a], mid)
#     newirep = Irep::get_irep(@stack[rg['sp'] + a], mid)
      newirep = Irep::get_irep(stack[a], mid)
      if newirep then
###	@callinfo[@cp] = @sp
#	@callinfo[@cp] = rg['sp']
#	callinfo[0] = rg['sp']
#	@cp += 1
#	callinfo.pi
#	@callinfo[@cp] = @pc
#	@callinfo[@cp] = rg['pc']
#	callinfo[0] = rg['pc']
#	@cp += 1
#	callinfo.pi
#	@callinfo[@cp] = @irep
#	@callinfo[@cp] = irep
#	callinfo[0] = irep
#	@cp += 1
#	callinfo.pi
	callinfo[0 .. 2] = [rg['sp'], rg['pc'], irep]
	callinfo.pi 3

###	@sp += a
#	rg['sp'] += a
	rg['sp', -1] = rg['sp'] + a

##	@pc = 0
	rg['pc', -1] = 0
#	@irep = newirep
	irep = newirep
#	@irepid = @irep.id
	@irepid = irep.id

##	next
      else
	args = []
	n.times do |i|
###	  args.push @stack[@sp + a + i + 1]
	  args<< stack[a + i + 1]	# p 
	end

###	@stack[@sp + a] = @stack[@sp + a].send(mid, *args)
#	@stack[rg['sp'] + a] = @stack[rg['sp'] + a].send(mid, *args)
	stack[a] = stack[a].send(mid, *args)
      end

#   else
##    printf("Unkown code %s ¥n", OPTABLE_SYM[get_opcode(cop)])
#     printf("Unkown code %s ¥n", OPTABLE_SYM[imem.get_opcode(cop)])
    end

    [callinfo, irep, rg]
.
1048,1053c
	@Slp.slp 0

	Fiber.yield(0 == thi)	##
#	sp = [sp].flatten
	sp = [sb].flatten
.
1046c
	(0 != thi && ht <= thi) ? thi = 0 : thi += 1
.
1043,1044c
	pl.pl_es(pc1, opa)
	pl.ctr_s(pc1) if 0 == thi
.
1040,1041c
#	opa = opg.(thi)	# c 
#	opa.push(k_sp, [sp]) if 0 == thi
        opa = opg.(thi).push('ctr', [sp])	# c 
.
1038c
#   k_sp = @pla.assoc('sp')[1]
    Fiber.new {	##
.
1028,1032c
	if v # && if knid(fv, :Array)
	  if 'th' == k
	    if 0 == oi
#	      fv = [fv[oi] = th[oi] = imem.ta(fv[oi], cop)] + [[]]
	      lopa.push(thl[oi], imem.ta(fv[oi], cop))
	      k, fv = [thl[oi + 1], []]
	    else
	      fv[oi] = imem.ta(fv[oi], cop) if oi <= ht = fv.hgt
	      fv[oi] ? (k, fv = [thl[oi], fv[oi]]) : k = nil
#	      fv = th
	    end
	  end
#	  lopa.push(k, fv)
	  lopa.push(k, fv) if k
	end
.
1020,1024d
1018c
#    th = []	##
    thl = @@mh_thl
.
1006,1016c
    fml = imem.fml('th', sym) || (
#     printf("Unkown code %s ¥n", OPTABLE_SYM[imem.get_opcode(cop)])
#     printf("Unkown code %s ¥n", OPTABLE_SYM[rou(:get_opcode, cop)])
#     printf("Unkown code %s ¥n", OPTABLE_SYM[@@rou.(:get_opcode, cop)])	# c 
      loc.verb("Unkown code #{sym} ") # .to_s
#     return nil
#     raise
##    rg = Fiber.yield(nil)
    )
    bt = imem.fml('th', 'bt')[1 .. -1]
    sb = sp
.
1003,1004c
    pc1 = pc + 1
    loc = @@loc
    imem = @imem
    pl = @pl
#   i_lf = @idx['lf']
.
996,1001c
  def iset(rg)	##
    pc, sp, cop, sym = rg.to_ra('pc', 'sp', 'cop', 'sym')
.
991c
	m = fy.(m, f)	# c 
.
979,989c
	if 0 == m
#	  s.sp(sp ||= (plr = pl[i_sp])[0])
#	  s.sp(sp ||= (plr = [pl[i_sp]].flatten)[0]) if flg[0]
#	  s.ps(sp ||= [pl[i_sp]].flatten[0]) if flg[0]
	  s.ps(sp ||= pl[i_sp].flatten[0]) if flg[0]
#	  plr ||= [sp]
#	  s.sp sp
	  r0, r1 = r
#	  pr || (pr, sy = imem.fml('st', sym)[1 .. -1])
	  pr || (pr, sy, mt = imem.fml('st', sym)[1 .. -1])

#	  isr0 = [i, s, r0]
	  isr0 = [mt ? i : s, r0]
#	  sz = plr.size
	  sz = plr.size if flg[0]
	  if f
#	  if f && ktf
#	    r = r1 < sz && plr[r1] || lm.(isr0, r1)	# c 
	    r = r1 < sz ? plr[r1] : nil		# isyoku tokusei
#	    r.nil? && r = lm.(isr0, r1)		# c 
	    r.nil? && r = lm.(r1)		# c 
	    s[r1] = sy ? [s[r1], r].inject(sy) : r
	    rs = [r1.to_xeh, r0.to_xeh]
	  elsif flg[0]
#	  elsif flg[0] && ktf
	    mx = 0xf
	    s.s.hgt <= mx && mx = s.s.hgt
#	    sz.step(mx) { |n| plr<< lm.(isr0, s[n])}	# p c 
	    sz.step(mx) { |n| plr<< lm.(s[n])}	# p c 
#	    (mx - sz).times { |n| plr<< lm.(isr0, s[n + sz])}	# p c 
#	    (mx - sz).times { |n| s[n + sz] && plr<< lm.(isr0, s[n + sz])}	# p c 
	    rs[1] = r0.to_xeh
	  elsif flg[-1]
#	  elsif flg[-1] && ktf
	    rs[0] = r1.to_xeh
	  end
.
967,977c
#	if f.! || ! ktf
	  pl = lpl.pl_g(pc1)	##
	  sym, r = rslt(pl)

##	  for idx in (0 ... pl[i_th].size)
#	  for idx in (0 ... r.size)
##	    flg[idx] = lpl.ckth(pl[i_th][idx], 1)	##	####
#	    flg[idx] = lpl.ckth(r[idx], 1)	##	####
#	  end
	  r.each_with_index { |v, i| flg[i] = lpl.ckth(v, 1)}	##	####

#	  sp = pl[i_sp]
#	  sp = sp[0] if (ktf = knid(sp, :Array))
#	  f = ktf && ! flg.include?(false)
#	  f = ! flg.include?(false)
	  f = flg.all?
	  m = fy.(m, false)	# c 
.
963,965d
961c
    Fiber.new { |m = 1|
.
916,957c
    fy = ->(m, f) { # @Slp.slp 0
      loc.verb "#{pc.to_xeh}			#{sym}	#{rs[1]}	#{rs[0]}"
.
914a
    pc1 = pc + 1
    loc = @@loc
    lpl = @pl
    imem = @imem
#    i_th = lpl.afl('th', ?i)	# q 
    i_sp = lpl.afl(@pla.assoc('sp')[1], ?i)	##	# q 

    f = false; flg = [false] # ; ktf = false
    s = Stack.new
#    i = @irep[0]
    i = @irep
    plr = []

#     sp, wd, isr0, r0, r1, lm, sy = [][0]
#    r = 0; r0, r1 = [nil, nil]
#    pl, sp, r, r0, r1, sym, pr = nil
#    pl, sp, mt, r, r0, r1, sym, pr = nil
    pl, sp, mt, isr0, r, r0, r1, sym, pr = nil

    rs = [?-, ?-]	# q 2 

#    lm = ->(isr0, r1) {r1.nil? ? r1 : imem.send(pr, *isr0, r1, mt)}	# l 
##   lm = ->(isr0, r1) {imem.send(pr, *isr0, r1, mt)}			# l 
    lm = ->(r1) {r1.nil? ? r1 : imem.send(pr, *isr0, r1, mt)}	# l 
#   lm = ->(r1) {imem.send(pr, *isr0, r1, mt)}			# l 
.
911,912c
  def fls(pc)	##
.
895,908c
    r[1] = r[-1]
    [pl[lpl.afl('sym', ?i)].to_sym, r]	# q 
#    [pl[@pl.afl('sym', ?i)].to_sym, r]	# q 
.
876,892c
#    knid(pl[lpl.afl('ctr', ?i)], :Array) &&		# q 
#    knid(pl[lpl.afl('ctr', ?i)][0], :Array) &&	# q 
#	lpl.ckth(r1 = pl[lpl.afl('th1', ?i)], 3) && r<< r1	# q 	# p 
    case pl[lpl.afl('ctr', ?i)][0]
    when Array then lpl.ckth(r1 = pl[lpl.afl('th1', ?i)], 3) && r<< r1	# q 	# p 
.
813,874c
  def rslt(pl)
    lpl = @pl
#   r = pl[@pl.afl('th', ?i)]		# q 
    r = [pl[lpl.afl('th0', ?i)]]	# q 
.
809c
      ENVary.new(0).plm(pc)
.
788,797c
#    @pl[0] = 
#      [['th', [[thini]]], ['sym', [0]], ['ctr', []], ['Numeric', [0]]]
#    @pl[0] = [['th', [[thini]]], [thl[0], [thini]], [thl[1], [thini]],
#	      ['sym', [0]], ['ctr', []], ['Numeric', [0]]]
    pl[0] = [[thl[0], [thini]], [thl[1], [thini]],
	      ['sym', [0]], ['ctr', []]]
#	      ['sym', [0]], ['ctr', []], ['Numeric', [0]]]	# furui mattn/mruby-json
#    @pla = [['sp', 'ctr']]
.
785c
    # 3080410200 : 5x2 ok ( gc ) : monami-ya.mrb 8270410200 813e2af8	# http://www.monami-ya.jp/
.
781c
    thl = @@mh_thl
.
778a
#  def plini
.
757,760c
    @pla = [['sp', 'ctr']]

#######    @pl.nmrcf
.
751,752c
    thini = [false, 0]
#    @pl = ENVary.new(rmth + 1, [thini], [], [])
#    @pl = ENVary.new(rmth + 1, [thini], thini, thini, [], [])
#    @pl = ENVary.new(rmth + 1, thini, thini, [], [])

#   plini

#   @pl = ENVary.new(true)						# 410200plini
    plini(@@rmth, @pl = ENVary.new(rmth + 1, thini, thini, [], []))	# 310200plini ?
.
748a
    rmth = @@rmth
.
746c
    @irep = nil			# 現在実行中の命令列オブジェクト
.
742a
    @callinfo = Stack.new(0, [])	# メソッド呼び出しで呼び出し元の情報を格納
.
741c
    @stack = Stack.new		# スタック(@spより上位をレジスタとして扱う)
.
736,737c
    GC.start	# g 	# antei ?

#   @imem = Imem.new
    @imem = @@Imem
    @Slp = @@Slp
.
727,732c
    @@rmth = 39
#    @@loc = Loc.new
    @@loc = LOC

#    @@Imem = Imem.new
    @@Imem = IMEM
#    @@Slp = Slp.new
    @@Slp = SLP
.
721a
  include M__H
.
713a

# prepend M__Ist
.
711c
  def ps(i)
    @a.assoc('ctr')[1] = i
  end

  def pg
    @a.assoc('ctr')[1]
  end

  def to_ra(*a)
.
707c
#    case v when Numeric then 'pc' == k && v == @a.assoc(k)[i] && v = -v end	# cp 
.
693,697c
   @a.assoc(k)[i]
#    v = @a.assoc(k)[i]
##   v = v.abs if knid(v, :Numeric)		# cp 
#    v = v.abs if 'pc' == k && ?- != m		# cp 	# q 
#    v
.
655,656c
  def pg() @p	   end
#  def pi() @p += 1 end
  def pi(i = 1) @p += i end
  def pd() @p -= 1 end

# def sp(*a)
  def ps(i)
#   p id = self.object_id
#   a.empty? || @p = a[0]
    @p = i
#   @p
.
652c
#    @@m.unlock
#    a
.
650c
#    @@m.lock
.
644,646c
#    @@m.lock
#      s = @s
#    @@m.unlock
    @s[a[0] + @p]
.
635,640c
    @p = sp; @s = s
#   @p = sp; @m = m; @s = s
#    @@m.lock
#      s = @s
#    @@m.unlock
#    s
    @s
.
618,620c
# def []=(*a)
##  sleep 0
##  @@Slp.slp 0
##  a.to_s
#   super
# end
.
614,616c
# def [](*a)		# ok : monami-ya.mrb:60510200
##  sleep 0
##  @@Slp.slp 0
##  a.to_s
#   super
# end
.
610,612c
# def initialize
##  @f = ''		# cannot set instance variable (ArgumentError)
# end
.
607,608c
# @@f = 0x0.chr * (0x20 << 2)
# @@bm = 0xff.chr
.
601c
# class ENVary < Array
.
598a

# private
.
595,596c
      @@Slp.slp
      GC.start	# g 	# antei ?
.
590a
##    fpl = delif_c(1, fpl) { |fb, n| fb.resume(pc)}	# ? 
.
583a
#	self.pl(cto)
#	self.pl(pc - 1)
.
581c
#	fpl<< self.plw(pc) if flg[0]	# p 
.
576c
##    pc && 0 <= pc && fpl<< (@@plw ||= plw); GC.disable	# p 	# g 
.
571d
555,563c
	idx += 1 unless arf = ckth(th[idx], 2)
	arf ||= ckth(th[idx], 2)
	th[idx] = pl_eg(pc, thl[idx]) if arf
#	flg = ckth(pl_eg(pc, 'ctr'), 0) if ! flg	# [sp]
	flg ||= ckth(pl_eg(pc, 'ctr')[0], 0)		# [sp]
#	th = th[0 ... idx] if ckth(th[idx], 2) && flg
	th = th[0 ... idx] if flg && (arf.! || ckth(th[idx], 2))
#	idx += 1	##
      }
.
550,553c
#    th = []	##
    thl = @@mh_thl
#    th = [pl_eg(pc, 'th0'), pl_eg(pc, 'th1')]
#    th = [pl_eg(pc, thl[0]), pl_eg(pc, thl[1])]
    th = pl_g(pc, *thl)

    idx = 0	##
    Fiber.new {	##
#      while th[idx .. -1] = (thn = pl_eg(pc, 'th'))[idx .. -1]	##
      loop {
#	th = th[0 .. (mx = thn.hgt)]	####
	mx = th.hgt
	th[idx] = s_id(th[idx], pc - 1) if mx >= idx
	if ckth(th[mx], 3)
#	  self.pl_es(pc, ['th', th])
	  th.each_index { |n| pl_es(pc, [thl[n], th[n]])}
#	  idx = idx == mx ? 0 : idx + 1	###
	  flg = true	##
	end
	@@Slp.slp 0
	Fiber.yield(flg && idx >= mx)	##
.
547d
542c
	(loc = @@Loc).verb("#{pc.to_xeh}		#{a[0]}	#{a[1].to_xeh}")
.
520,526d
509,517c
    while (0 == 1 & md) == a[(md & bf) >> 1]
#	((a[(md & bf) >> 1] ? 0 : 1) == 1 & md)
#	([true, false][1 & md] == a[(md & bf) >> 1])
      md >>= bfsz
##    0 == lf ? return(false) : (md &= bf if 0 == lf >> bfsz)	# ? mruby 70410200
      0 == md >> bfsz && break
    end # .!.!
.
480a
  def to_ia(n, lpl = self)
    [lpl = lpl[n], 0 != n && (return @@Plmg.(@@pl0i, lpl))][0]	# r 	# c 
  end
.
475c
### aa.each_slice(2) { |k, v| send(k, v)}
.
453,455c
##     knid(k, :Symbol) && (aa.push(k, v); next)
###### knid(k, :Symbol) && (aa.push(k, v); break)
#      case k when Symbol then aa.push(k, v); break end
.
451c
#    ary.each_slice(2) { |k, v|	# .shift(2) higokan mruby 70410200
    a.each_slice(2) { |k, v|	# .shift(2) higokan mruby 70410200
.
445,447c
#  def pl_es(n = 0, ary = nil, pl = nil)
  def pl_es(n = 0, a = nil, pl = nil)
### aa = []
#   pl[0 == n ? 1 : nil][idx(k)] = v
.
441c
# def pl_eg(n = 0, k)
  def pl_eg(n, k)
.
437d
435c
#    self[n] = 0 == n ? @@Plmg.(pl_g(-1), pl) : pl	# c 
.
431d
428c
#   pl
    a.empty? ? pl : a.map { |a| pl.afl(a, self)}
.
423,426d
419,420c
#   1 > n ? pl[idx0(n)] : pl
#   if 1 > n then pl = pl[idx0(n)] end
.
417c
#   self[n < 0 ? n + 1 : n][idx0(n)]
.
411,414c
# @@Idx0 = ->(n = 0, t = 1) {n - ((n <=> t) >> 1)}	# l 
  @@Pldv = ->(pl) {pl.map { |a| a[1]}}	# l 
# def pl_g(n = 0)
# def pl_g(n)
  def pl_g(n, *a)
.
393,397c
#    ploc(n) { |a| JSON::parse(ENV[@@idb + a[0]])}
    @@Loc.ploc(n) { |a| JSON::parse(ENV[@@idb + a[0]])}
.
383c
#    ploc(n, v) { |a| ENV[@@idb + a[0]] = JSON::generate(a[1])}
    @@Loc.ploc(n, v) { |a| ENV[@@idb + a[0]] = JSON::generate(a[1])}
.
371,372c
#   @ary = Array.new(n)
    (0 .. n).each{ |i|
#     @ary = a
      self[i] = *a
    }
.
367c
    n = a.shift
#   @sz = a.size
    if 1 > n
#     @n = -n
#     return self[@n]
      return
    end
.
363c
# def initialize(a = nil)
  def initialize(*a)
.
360c
#    @@loc = Loc.new(@@fl)
    @@Loc = LOC
.
355,357d
341,347c
#    @@Imem = Imem.new
    @@Imem = IMEM
#    @@slp = Slp.new
    @@Slp = SLP

#    @@fl = '‾‾ritepl'
#    @@idb = @@fl
    @@idb = FL
#    @@fl += '.loc'
##   @@fl += '/loc'	# RISC OS ?
.
338a
  include M__H
.
331a
IMEM = Imem.new

.
301,319c
#  def s__sr0(	    *a) a[@@I_s__s][		       a[@@I_s__r0]]	 end
#  def s__r0(	    *a) 			       a[@@I_s__r0]	 end
#  def s__sr01(	    *a) a[@@I_s__s][		       a[@@I_s__r0] + 1] end
## def s__i_pool_r0( *a) a[@@I_s__i].pool[	       a[@@I_s__r0]]	 end
## def s__i_syms_r0( *a) a[@@I_s__i].syms[	       a[@@I_s__r0]]	 end
## def s__i__r0(	    *a) a[@@I_s__i].send(a[@@I_s__mt])[a[@@I_s__r0]]	 end
#  def s__i__r0(	    *a) a[@@I_s__s].send(a[@@I_s__mt])[a[@@I_s__r0]]	 end
#  def s__r1_eq_sr01(*a) a[@@I_s__s][		       a[@@I_s__r1]] ==
#			a[@@I_s__s][		       a[@@I_s__r0] + 1] end

  @@I_s__r0 = 1; @@I_s__r1 = 2; @@I_s__mt = 3

  def s__sr0(	    *a) a[0][			a[@@I_s__r0]]		end
  def s__r0(	    *a) 			a[@@I_s__r0]		end
  def s__sr01(	    *a) a[0][			a[@@I_s__r0] + 1]	end
# def s__i_pool_r0( *a) a[@@I_s__i].pool[	a[@@I_s__r0]]		end
# def s__i_syms_r0( *a) a[@@I_s__i].syms[	a[@@I_s__r0]]		end
  def s__i__r0(	    *a) a[0].send(a[@@I_s__mt])[a[@@I_s__r0]]		end
  def s__r1_eq_sr01(*a) a[0][			a[@@I_s__r1]] ==
			a[0][			a[@@I_s__r0] + 1]	end

  def method_missing(*a) self.send(?s << a[0].to_s, *a[1 .. -1]) end
.
299c
#  @@I_s__s = 0; @@I_s__r0 = 1; @@I_s__r1 = 2; @@I_s__mt = 3
.
233,242c
    @@fml.(lb).assoc(sym)		# c 
#   (f = @@fml).(lb).assoc(sym)		# c 
.
209d
207a
LOC = Loc.new(FL << '.loc')
# LOC = Loc.new(FL << '/loc')	# RISC OS ?


.
194a
# }
.
185,186c
#      @@slp.slp 0
##     (s ||= @@slp).slp 0
#     (s ||= @@Slp).slp 0	# higokan ? mruby 70410200
      @@Slp.slp 0
.
175a
# @@ploc = Fiber.new { |a|
# @@ploc = Proc.new { |*a|
.
169c
#    @@slp = Slp.new
    @@Slp = SLP
.
165a

.
158a
SLP = Slp.new


.
142,143c
#   (r - 1).times {sleep 0}; GC.start; r.times {sleep t}	# g 	# fuantei ( keisan gosa ) ?
    (r - 1).times {usleep 0}; r.times {usleep t}
.
140c
#   (r - 1).times {usleep 0}; GC.start; r.times {usleep t}	# g 	# conf.gem :github => 'kimushu/mruby-sleep'	# msleep usleep
.
29a
module M__H
  @@mh_thl = (0 .. 1).map { |n| 'th' + n.to_xeh}
end

.
24,25c
FL = '‾‾ritepl'
.
2a
# Experimental : Merry HongmengOS memorial

.



-- 
YAMAGUTIseisei ( str_h__namae = { :sei => "山口" , :mei => "青星" } )
http://hello.to/seisei/	mailto:seisei@.68..net	tel:081-70-5152-1104
heiwa furiisekkusu 1tu

[toc] | [prev] | [next] | [standalone]


#17 — jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_9_1_0_2_7__7201910200.rb

FromYAMAGUTIseisei <seisei@hello.to>
Date2019-10-27 12:29 +0000
Subjectjit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_9_1_0_2_7__7201910200.rb
Message-ID<5DB58DA3.2040901@hello.to>
In reply to#16
1399c
#      @slp.slp
      sl.slp
.
1397c
#      end
.
1395c
#      if pfl = ise[1][0]
.
1388,1390c
#      ise[0].reject!(&:resume)
#      ise[0].delif_c(2) { |fis, n| fis.resume}
      ise[0].reject! { |fis| fis[1].resume && 0 <= fis[0]}
#     ise[0].delif_c(2) { |fis, n| fis[1].resume && 0 <= fis[0]}	# thl.size
.
1373d
1359,1361d
1345d
1341,1343c
#	  pco<< rg['pc'] if ?J == rg['sym'].to_s[0]	# p 	# q 
	  pco<< rg['pc'] if ifj.(rg['sym'])	# p c 

#	  opg.call
#	  if ! ifj.(rg['sym'])

.
1338d
1310,1336c
#	if (ifj.(rg['sym']) && ! ifs.(rg['sym']))	# c 2 
	unless (ifj.(rg['sym']) || ifs.(rg['sym']))	# c 2 
	  ist.call

	  next if pcoj.call
.
1306d
1304d
1302d
1295,1297c
#	fl<< pfl[1] if ! pfl[0] || 0 <= pfl[0]	# p 
	if pfl
#	  ise[0]<< iset(pfl[1])	# p 
#	  ise[0]<< [pfl[0], iset(pfl[1])]	# p 
	  ise[0]<< [pfl[0], isfl(pfl[1])]	# p 
	  if 0 <= pfl[0]
	    fl<< fls(pfl[0])	# p 
	  end
	  true
#	pfl && (! pfl[0] || 0 <= pfl[0]) && fl<< pfl[1]	# p 
	end
.
1291d
1288,1289c
######      0.step(1) { |n|
#      0.step(0) { |n|
      fl.delif_c(1) { |v, n| v.resume(n)}
#      fl.reject!.with_index { |v, n| v.resume(n)}
.
1283d
1276c
    ist = -> {	# l 
#      pcf, pfl1 = ise[1].shift
#	  if pcf && pcf.abs == rg['pc']		# cp 
#	    fl<< pfl1	# p 

      unless ise[0].empty?
#      pfl = ise[0][-1] # .pop
	pfl = ise[0].pop
	pcf = pfl[0]
	if 0 > pcf
	  if pcf.abs == rg['pc']		# cp 
	    fl<< fls(pcf.abs)		# p 	# cp 
	    pfl[0] = pcf.abs			# cp 
	    ise[0]<< pfl		# p 
#	    ise[0].pop
#	  else
#	    ise[0]<< iset(rg)		# p 
#	    ise[0]<< isfl(rg)		# p 
	    next
	  end
	else
	  ise[0]<< pfl		# p 
	end
      end
      pcf = rg['pc']
      pcf = -pcf if 0 > rg.pg
#####      rg['pc'] *= -1 if 0 > rg['ctr', 1]	# kakezan	# cp 
#####      pcf = rg['pc']
#	ise[1]<< [pcf, fls(rg['pc'])]	# p 
      ise[1]<< [pcf, rg.to_ra]	# p 
    }

#    ifj = -> (sym) {?J != sym.to_s[0]}		# l 	# q 
    ifj = -> (sym) {?J == sym.to_s[0]}		# l 	# q 
.
1267,1270c
#   @@opg = -> (irep, rg, imem) {	# l 
    opg = -> {				# l 
      c, sym = @@opf.(irep, rg['pc'])		# c 	# cp 
.
1262c
#	@slp.slp 0
	sl.slp 0
.
1258d
1255d
1252c
#    [callinfo, irep, rg]
.
1247,1248c
	callinfo, irep, rg = @@jsc.(stack, callinfo, irep, rg, imem)	# c 
#	printf("Unkown code %s \n", OPTABLE_SYM[get_opcode(cop)])
.
1240c
#	  @sp = @callinfo[@cp]
.
1234c
#	  @pc = @callinfo[@cp]
.
1224c
	  stack[0] = stack[rou.getarg_a(cop)]
.
1222c
#	  @stack[@sp] = @stack[@sp + getarg_a(cop)]
.
1220c
	  return stack[rou.getarg_a(cop)]
.
1218c
#	  return @stack[@sp + getarg_a(cop)]
.
1211,1212c
      case sym
#      case rg['sym']
.
1209c
      cop, sym = rg.to_ra('cop', 'sym')
.
1204a
    rou = @Rou
.
1203d
1201a
#    ise = []
.
1190c
    loc = @@Loc
    sl = @Slp
.
1188a
  def isfl(rg)
    a = []
    fb = iset(rg)
    Fiber.new {
      loop {
#	Fiber.yield r = true == fb.resume(*a)
	Fiber.yield true == fb.resume(*a)
#	fb = fls
	# Fiber.yield fb.resume(m)
      }
    }
  end

.
1185c
#   sym = OPTABLE_SYM[imem.get_opcode(cop)]
    sym = OPTABLE_SYM[(rou = @@Rou).get_opcode(cop)]		# c 
.
1177c
#  @@opf = ->(irep, pc, imem) {	# l 
  @@opf = ->(irep, pc) {	# l 
.
1170c
#     printf("Unkown code %s \n", OPTABLE_SYM[get_opcode(cop)])
.
1164c
#	@stack[@sp + a] = @stack[@sp + a].send(mid, *args)
.
1160c
#	  args.push @stack[@sp + a + i + 1]
.
1156c
#	next
.
1149c
#	@pc = 0
.
1141,1145c
	callinfo.pi
#	@sp += a
.
1139c
	callinfo[0] = irep
.
1136c
	callinfo.pi
.
1134c
	callinfo[0] = rg['pc']
.
1131c
	callinfo.pi
.
1129c
	callinfo[0] = rg['sp']
.
1127c
#	@callinfo[@cp] = @sp
.
1122,1123c
      n = rou.getarg_c(cop)
#     newirep = Irep::get_irep(@stack[@sp + a], mid)
.
1120c
      mid = irep.syms[rou.getarg_b(cop)]
.
1118c
      a = rou.getarg_a(cop)
.
1107,1108c
	rg['pc', -1] = rg['pc'] + rou.getarg_sbx(cop)
#	next
.
1104,1105c
      if !stack[rou.getarg_a(cop)]
#	@pc = @pc + getarg_sbx(cop)
.
1102c
#     if !@stack[@sp + getarg_a(cop)] then
.
1096c
	rg['pc', -1] = rg['pc'] + rou.getarg_sbx(cop)
.
1093c
      if stack[rou.getarg_a(cop)]
.
1087,1088c
      rg['pc', -1] = rg['pc'] + rou.getarg_sbx(cop)
#     next
.
1085c
#     @pc = @pc + getarg_sbx(cop)
.
1077,1078c
    case sym
#    case rg['sym']
.
1075c
    rou = @@Rou
#    cop = rg['cop']
    cop, sym = rg.to_ra('cop', 'sym')
.
1070a
#     pl1[i_lf] += 1
.
1069c
	sp = [*sp]
.
1067c
#	(0 != thi && ht <= thi) ? thi = 0 : thi += 1
	thi += (0 != thi && ht <= thi) ? -thi : 1
#	Fiber.yield(0 == thi)	##
#	begin			# fuantei ? mruby:70410200 monami-ya.mrb:60510200
	loop {
	  sl.slp 0
	  Fiber.yield(0 <= pc ? [true][thi] : ([pcabs][thi] || pc))	# cp 
#	end while [true][thi]	# fuantei ? mruby:70410200 monami-ya.mrb:60510200
	break if 0 != thi }
.
1063,1065c
	pl.ctr_s(pc1) if 0 == thi
.
1061d
1056,1059c
	opa = opg.(thi).push('ctr', [sp])	# c 
.
1046a
#	  0 != kfv.size ? lopa += kfv : lopa.push(k, fv)
.
1045d
1042c
#	      kfv = fv[oi] ? [thl[oi], fv[oi]] : []
.
1038a
#	      kfv = [thl[oi], imem.ta(fv[oi], cop), thl[oi + 1], []]
.
1036d
1032a
#	kfv = []
.
1027d
1025d
1013a
    sl = @Slp
.
1009,1010c
    pcabs = pc.abs	# cp 
#    pc1 = pc + 1
    pc1 = pcabs + 1	# cp 
    loc = @@Loc
.
1006a
    rg = Rg.new rg
.
993,994d
989,991c
#	    s.s.hgt <= mx && mx = s.s.hgt
	    s.size - 1 <= mx && mx = s.size - 1
.
982,984c
	    r = (r = plr[r1]	; r1 >= sz ||
		r.nil?) ? lm.(r1) : r		# c 
.
974d
972d
965,966c
#	  flg[0] && sp || s.p = sp = [pl[i_sp]].flatten[0]
.
959,960c
#	  f = ktf && flg.all?
.
950,954d
942a
    mx = 0xf
.
932,934d
926,929c
#    pl, sp, mt, isr0, r, r0, r1, sym, pr = nil
    pl, sp, mt, isr0, r, r0, r1, sym, sy, pr = nil
.
921d
916d
913c
    loc = @@Loc
.
906d
904d
901,902c
	when Array then lpl.ckth(r[1], 2) && r[1] = r[0] end	# q 
.
899a

#    case pl[lpl.afl('ctr', ?i)][0]
#    when Array then lpl.ckth(r1 = pl[lpl.afl('th1', ?i)], 3) && r<< r1	# q 	# p 
#    end
#    r[1] = r[-1]

    thl.each_with_index { |v, n| r[n] = pl[lpl.afl(v, ?i)]}	# q 
#    r[1] = r[0] if
#	knid(pl[lpl.afl('ctr', ?i)][0], :Array) && lpl.ckth(r[1], 2)	# q 

.
896a
#    r = [pl[lpl.afl('th0', ?i)]]	# q 
.
894,895c
    thl = @@mh_thl
    r = []
.
888c
#      ENVary.new(0).plm(pc)
      Pl.new.plm(pc)
.
866c
    # 3080410200 : 5x2 ok ( gc ) : monami-ya.mrb 8270410200 813e2af8	# www.monami-ya.jp
.
859d
840,842c
#    GC.disable	# g 	# gene gc enable : mruby 6170410200 d17506c1
.
826,830c
#   @pl = ENVary.new(rmth + 1, thini, thini, [], [])
.
809a
    @Rou = @@Rou
.
807d
801a
    @@Rou = ROU
.
800d
798d
795,796c
    @@Loc = LOC
.
776c
    if a.empty?
      @a.map { |v| v.dup}
    else
      a.map { |v| self[v]}
    end
.
710c
#   @p = a[0] if ! a.empty?
#    @p = pt
.
707a
#  def sp(pt)
.
703,704c
  def pi() @p += 1 end
.
674c
#####  attr_accessor :p, :s		# fuantei mruby 70410200
  attr_accessor :p
.
639c
# class Pl < ENVary
.
631c
#      @@Slp.slp
      sl.slp
.
604a
    sl = @@Slp
.
596d
594d
592d
589c
#	idx += 1 unless arf = ckth(th[idx], 2)
#	idx += 1 unless arf = mx == idx ? arf : ckth(th[idx], 2)
	idx += 1 unless arf = ckth(th[idx], 2) if mx != idx
.
586c
#	@@Slp.slp 0
	sl.slp 0
.
583d
580,581c
	unless arf = ckth(th[mx], 2)
.
577d
575d
572d
569d
567c
    sl = @@Slp
.
561c
#    (imem = @@Imem).mcall(*a) || a[1]
#    (imem = @@Imem).send(*a) || a[1]
    (rou = ROU).send(*a) || a[1]
.
548d
544a
# private
end

# module M__Pl	# higokan ? mruby 70410200
class Pl < ENVary
  def initialize; end

.
542c
    end.!.!
.
510,511c
#   ctr = (cta = pl_g(0).afl('ctr', self)).shift
#   pl_es(0, ['ctr', cta])
#   ctr
    [(c = pl_g(0).afl('ctr', self)).shift, pl_es(0, ['ctr', c])][0]
.
505,507c
#  def to_ia(n, lpl = self)
#    [lpl = lpl[n], 0 != n && (return @@Plmg.(@@pl0i, lpl))][0]	# r 	# c 
#  end
.
500,501d
498c
    pl_s(n, pl)
.
480,496c
      i = self.afl(k, ?i)	# q 
      'ctr' == k && knid(v, :Array).! ? pl[i]<< v : pl[i] = v	# p 
#     'ctr' == k && case v when Array then pl[i] = v else pl[i]<< v end		# p 	# higokan mruby 70410200
#     'ctr' == k && pl[i] = case v when Array then v else pl[i] + [v] end	# p 	# higokan mruby 70410200
.
474d
467,468c
  def pl_es(n = 0, a)
.
457a
GC.disable	# g 					# fuguai taisaku
.
436a
# @@Idx0 = ->(n = 0, t = 1) {n + (t > n ? 1 : 0)}	# l 
.
421a
#    @@loc.ploc(n) { |a| JSON::parse(ENV[@@idb + a[0]])}
.
410a
#    @@loc.ploc(n, v) { |a| ENV[@@idb + a[0]] = JSON::generate(a[1])}
.
386,391c
##   @sz = a.size
#    if 1 > n
##     @n = -n
##     return self[@n]
#      return
#    end
.
376d
365,366d
362,363d
357d
341c
# include RiteOpcodeUtil
.
335,337c
#  def mcall(*op)
#    case op[0] when Numeric then op.inject else self.__send__(*op) end
#  end
.
311,330c
#  def s__sr0(	    *a) a[0][			a[@@I_s__r0]]		end
#  def s__r0(	    *a) 			a[@@I_s__r0]		end
#  def s__sr01(	    *a) a[0][			a[@@I_s__r0] + 1]	end
## def s__i_pool_r0( *a) a[@@I_s__i].pool[	a[@@I_s__r0]]		end
## def s__i_syms_r0( *a) a[@@I_s__i].syms[	a[@@I_s__r0]]		end
#  def s__i__r0(	    *a) a[0].send(a[@@I_s__mt])[a[@@I_s__r0]]		end
#  def s__r1_eq_sr01(*a) a[0][			a[@@I_s__r1]] ==
#			a[0][			a[@@I_s__r0] + 1]	end

  def s__sr0(	    *a) a[0][		a[1]]		end
  def s__r0(	    *a) 		a[1]		end
  def s__sr01(	    *a) a[0][		a[1] + 1]	end
  def s__i__r0(	    *a) a[0].send(a[3])[a[1]]		end
  def s__r1_eq_sr01(*a) a[0][		a[2]] ==
			a[0][		a[1] + 1]	end
.
309c
# @@I_s__r0 = 1; @@I_s__r1 = 2; @@I_s__mt = 3
.
197,198d
178d
169,172c
class Rou
  include RiteOpcodeUtil
  include M__Rou
end

ROU = Rou.new
.
167c
module M__Rou
  def send(*op)
    case op[0] when Numeric then op.inject else self.__send__(*op) end
  end
end
.
24,25c
# NSL_ = 6309	# nanosleep()
NSL_ = 10065	# nanosleep()
.
22a
GC.start	# g 
.



-- 
YAMAGUTIseisei ( str_h__namae = { :sei => "山口" , :mei => "青星" } )
http://hello.to/seisei/	mailto:seisei@.68..net	tel:081-70-5152-1104
heiwa furiisekkusu 1tu

[toc] | [prev] | [next] | [standalone]


#18 — jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_9_1_2_1_5__5121910200.rb

FromYAMAGUTIseisei <seisei@hello.to>
Date2019-12-15 12:24 +0000
Subjectjit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_9_1_2_1_5__5121910200.rb
Message-ID<qt590r$3kp$1@dont-email.me>
In reply to#17
1406c
#      ise[0].reject! { |fis| fis[1].resume && 0 <= fis[0]}
#      ise[i_i_d].delif_c(2) { |fis, n| fis[1].resume(n) && 0 <= fis[0]}	# thl.size
      ise[i_i_d].reject!.with_index { |fis, n| fis[1].resume(n) && 0 <= fis[0]}
#####      ise[i_i_d].each_index { |n| fis = ise[i_i_d][n]
############      ise[i_i_d].reject!.with_index { |fis, n|
#######	if fis[1].resume(n) && 0 <= fis[0]
############	fis[1].resume(n) && 0 <= fis[0]
#######	end
############      }
#      rg.isk

#     0.step(@@rmth) { |n|	# higokan ? touki 70410200
#	fl.shift && redo if fl[n] && fl[n].resume(n) && 0 == n

#     }
.
1404c
#	(fl<< pfl[1]; ise[1].shift) if ! pfl[0] || 0 <= pfl[0]	# p 
#	fl<< pfl[1] if ! pfl[0] || 0 <= pfl[0]	# p 
	if pfl
#	  ise[0]<< [pfl[0], isfl(pfl[1])]	# p 
	  ise[i_i_d]<< [pfl[0], isfl(pfl[1])]	# p 
#	  ise[i_i_d]<< [pfl[0], iset(pfl[1])]	# p 
	  if 0 <= pfl[0]
#	    fl<< fls(pfl[0])	# p 
	    ise[i_i_f]<< fls(pfl[0])	# p 
	  end
	  true
#	fl<< pfl[1] && ise[1].shift && redo if pfl && (! pfl[0] || 0 <= pfl[0])	# p 
	end
      }
#      rg.iss { |n, pfl01| [iset(pfl01[n]), fls(pfl01[n])][n] }
.
1402c
#      ise[i_i_s].delif_c(2) { |pfl, n|	# thl.size
#      ise[1].reject! { |pfl|
.
1394,1400c
      ise[i_i_s].reject!.with_index { |pfl, n|	# Inspired by : RobertDoggett ? http://microware.com/# , Professor TAKAZAWA Yosimitu http://mu.ice.uec.ac.jp/~takazawa/
.
1366,1368c
#      if fl.empty?
#####      if ise[i_i_f].empty?
      if ise[i_i_f].empty? # && 0 > rg['ctr', 1]
#      if rg.flok
#     if pco.! && fl.empty?	# d~ng
.
1357c
#	end
	)
.
1355c
#	  ise[i_i_s].push([false, false], [false, false])
.
1353c
#	  unless ifj.(rg['sym'])
.
1346,1350c
	)][0] && (
#	else
#	  next if pcoj.call
#	  pco<< rg['pc'] if ifj.(rg['sym'])	# p c 
	  pco[0] = rg['pc'] if ifj.(rg['sym'])	# p 	# c 
.
1344c
#	  rg.ist { |n| fls(n) }
	  false), (
.
1341,1342c
#	unless (ifj.(rg['sym']) || ifs.(rg['sym']))	# c 2 
	[(ifj.(rg['sym']) || ifs.(rg['sym'])) || (	# c 2 
.
1337a
#	@@opg.(irep, rg, imem)	# c
.
1334d
1318,1332c
      ise[i_i_f].delif_c(1) { |v, n| v.resume(n)}

#      rg.fls
.
1311,1316c
#######	ise[i_i_f].delete_at(n) && redo if ise[i_i_f][n] && ise[i_i_f][n].resume(n) && 0 == n
.
1309c
#####      0.step(1) { |n|
#####      0.step(0) { |n|
#	fl.delete_at(n) && redo if fl[n] && fl[n].resume(n) && 0 == n
.
1301d
1293,1298c

#      ise[1]<< [0 > rg.pg ? -rg['pc'] : rg['pc'], rg.to_a]	# p 	# cp 
      ise[i_i_s]<< [0 > rg.pg ? -rg['pc'] : rg['pc'], rg.to_a]	# p 	# cp 
#      pcf = rg['pc']
#      ise[1]<< [pcf, rg.to_a]	# p 
.
1291a
	pfl = nil
.
1290c
#	  ise[0]<< pfl		# p 
	  ise[i_i_d]<< pfl		# p 
.
1279,1286c
	  if pcf.abs == rg['pc']			# cp 
#	    fl<< fls(pcf.abs)			# p 	# cp 
	    ise[i_i_f]<< fls(pcf.abs)		# p 	# cp 
	    pfl[0] = pcf.abs				# cp 
#	    ise[0]<< pfl		# p 
	    ise[i_i_d]<< pfl		# p 
.
1270,1276c
#      unless ise[0].empty?
#	pfl = ise[0].pop
      unless ise[i_i_d].empty?
	pfl = ise[i_i_d].pop
.
1263c
      c, sym = @@opf.(irep, rg['pc'])		# c 
.
1255d
1207d
1204c
      cop, sym = rg['cop'], rg['sym']
.
1201a
#    rg = Ist.new([['ctr', 1], ['pc', @pc], ['sp', @sp], ['cop'], ['sym']])
.
1200a
    i_i_f = 0; i_i_d = 1; i_i_s = 2

.
1196,1197c
#    ise = [[], []]
    ise = [[], [], []]
#    ise = Ist.new
.
1174,1177c
#	Fiber.yield true == fb.resume(*a)
#	r ||= (true == fb.resume ? true : false) && r
	r = (true == fb.resume ? true : false) # && r
#	m = Fiber.yield r
	Fiber.yield r
	r = true
#	r = fl.resume(m)
.
1172c
#####    fl = fls(pc.abs) # if 0 <= pc	# cp 
    r = false
    Fiber.new { |m = 1|
.
1170c
#    a = []
    rg = Rg.new rg
    pc = ['pc']
.
1164,1165c
    sym = OPTABLE_SYM[rou.get_opcode(cop)]
.
1156a
    rou = @@Rou
.
1155d
1059d
1055,1056c
#    cop, sym = rg['cop'], rg['sym']
#    cop, sym = rg.to_ra('cop', 'sym')
    cop, sym = rg.to_a('cop', 'sym')
.
1046,1047c
	sp = [sp].flatten
.
1037,1039c
	(0 != thi && ht <= thi) ? thi = 0 : thi += 1

.
1034a
	pl.pl_es(pc1, opa)
.
1033d
1021c
#	  lopa.push(k, fv) # if k
	  k && lopa.push(*fv)
.
1019a
	  else
#	    k && lopa<< k	# p 
	    lopa<< k	# p 
.
1017c
#	      fv[oi] ? (k, fv = [thl[oi], fv[oi]]) : k = nil
	      fv[oi] ? (fv = [thl[oi], fv[oi]]) : k = nil

.
1012,1014c
#	      lopa.push(thl[oi], imem.ta(fv[oi], cop))
#	      k, fv = [thl[oi + 1], []]		# t 
	      fv = [thl[oi], imem.ta(fv[oi], cop), thl[oi + 1], []]	# t 

#	      kfv = [thl[oi], imem.ta(fv[oi], cop), thl[oi + 1], []]	# t 
.
1009c
	if v # && knid(fv, :Array)
.
989a

.
984d
980,981c
#    rg = Rg.new rg
    pc, sp, cop, sym = rg.to_a('pc', 'sp', 'cop', 'sym')
.
972a
	  ca[flg.inject(0) { |rv, v| rv = v ? 0 : 1 | rv << 1}].call
.
951,971c
#	  pr || (pr, sy, mt = imem.fml('st', sym)[1 .. -1])
#	  isr0 = [mt ? i : s, r0]
#	  sz = plr.size if flg[0]
	  if flg[0]
		pr || (pr, sy, mt = imem.fml('st', sym)[1 .. -1])
		isr0 = [mt ? i : s, r0]
		sz = plr.size
.
948,949c

	  f = # ktf &&
		flg.all?

#	  m = fy.(m, false)	# c 
	end
	if 0 == m
.
940,945d
934a
	  r0, r1 = r
.
928c
#    mx = 0xf
.
922a
    mx = 0xf
    ca = [
      -> {	# f # && ktf
#	r = r1 < sz && plr[r1] || lm.(isr0, r1)	# c 
	r = (r = plr[r1]	; r1 >= sz ||
		r.nil?) ? lm.(r1) : r		# c 
	s[r1] = sy ? [s[r1], r].inject(sy) : r
	rs = [r1.to_xeh, r0.to_xeh]},
      -> {	# flg[0] # && ktf
##	((sw = sp + sz) + 0xe).step(sw, -1) {	# higokan mruby 70410200	# bbab89e7 5211410200 tmtm
#	    s.s.hgt <= mx && mx = s.s.hgt
#	    sz.step(mx) { |n| plr<< lm.(isr0, s[n])}	# p c 
	  s.size < mx && mx = s.size - 1
#	  sz.step(mx) { |n| plr<< lm.(isr0, s[n])}	# p c 
	  sz.step(mx) { |n| plr<< lm.(s[n])}	# p c 
	rs[1] = r0.to_xeh},
      -> {	# flg[-1] # && ktf
	rs[0] = r1.to_xeh},
      -> {}
    ] # .lazy

##    fy = ->(m, f) {	# l 
#    fy = ->(m, f) {fa = [f, false]	# l 
#      loop {
#	loc.verb "#{pc.to_xeh}			#{sym}	#{rs[1]}	#{rs[0]}"
##	Fiber.yield(f && 0 == m)
##	m = Fiber.yield([f][m.abs])
##	m = Fiber.yield(fa[m])
#	m = Fiber.yield(f && fa[m])
##	break(m) unless [f][m.abs]
#      break(m) unless fa[m] }
##      }
#    }

.
916,917c
    pl, sp, mt, isr0, r, r0, r1, sym, sy, pr, sz = nil
.
910c
#    f = false; flg = [false] # ; ktf = false
    f = false; flg = [false, false] # ; ktf = false
.
892,896c
    r[1] = r[0] if
	knid(pl[lpl.afl('ctr', ?i)][0], :Array) && lpl.ckth(r[1], 2)	# q 
.
881,890d
871d
861c
#    pl.ref_pl0i
.
849c
    # 3080410200 : 5x2 ok ( gc ) : monami-ya.mrb 8270410200 813e2af8	# http://www.monami-ya.jp/
.
816d
777a
#module M__Ist
## def initialize_with_ist(*a)
##   initialize_without_ist(*a)
#  def initialize(*a)
#    super
#    @i_i_f = 0; @i_i_d = 1; @i_i_s = 2
#    @ise = [[], [], []]
#  end
##  alias_method_chain :initialize, :ist

#  def ist # (rg)
#    if ! @ise[@i_i_d].empty?
#      pfl = @ise[@i_i_d].pop
#      pcf = pfl[0]
#      if pcf < 0
##	if pcf.abs == rg['pc']			# cp 
#	if pcf.abs == @a.assoc('pc')[1]		# cp 
##	  @ise[@i_i_f]<< fls(pcf.abs)		# cp 
#	  @ise[@i_i_f]<< yield(pcf.abs)		# cp 
#	  pfl[0] = pcf.abs			# cp 
#	  @ise[@i_i_d]<< pfl
#	end
#      else
#	@ise[@i_i_d]<< pfl
#      end
#      pfl = nil
#    end
#
##    @ise[@i_i_s]<< [0 > @a['ctr', 1] ? -@a['pc'] : @a['pc'], @a.to_a]
#    @ise[@i_i_s]<< [0 > @a.assoc('ctr')[1] ? -@a.assoc('pc')[1] : @a.assoc('pc')[1], @a]
#  end

#  def fls
#    0.step(1) { |n|
##      fl.delete_at(n) && redo if fl[n] && fl[n].resume(n) && 0 == n
#      @ise[@i_i_f].delete_at(n) && redo if
#	@ise[@i_i_f][n] && @ise[@i_i_f][n].resume(n) && 0 == n

#    }
#  end

#  def iss # (po = nil)
##      ise[1].each_index { |n|
#    @ise[@i_i_s].each_index { |n|
##      ise[1].reject! { |pfl|
##	(fl<< pfl[1]; ise[1].shift) if 0 <= pfl[0]
##	(fl<< pfl[1]; ise[1].shift) if ! pfl[0] || 0 <= pfl[0]
##	fl<< pfl[1] if ! pfl[0] || 0 <= pfl[0]
##	pfl = ise[1][n]
#      pfl = @ise[@i_i_s][n]
#      if pfl
##	  ise[1].shift
#	@ise[@i_i_s].shift
##	  ise[0]<< [pfl[0], isfl(pfl[1])]
##	@ise[@i_i_d]<< [pfl[0], isfl(pfl[1])]
##	@ise[@i_i_d]<< [pfl[0], iset(pfl[1])]
#	@ise[@i_i_d]<< [pfl[0], yield(1, pfl)]
#	if 0 <= pfl[0]
##	  fl<< fls(pfl[0])
##	  @ise[@i_i_f]<< fls(pfl[0])
#	  @ise[@i_i_f]<< yield(0, pfl)
#	end
#	redo
##	fl<< pfl[1] && ise[1].shift && redo if pfl && (! pfl[0] || 0 <= pfl[0])
#      end

#    }
#  end  

#  def isk
#      ise[@i_i_d].reject! { |fis| fis[1].resume && 0 <= fis[0]}
#  end
#
#  def flok
#    0 == @ise[@i_i_f].size
#  end
#end

#class Ist < Rg
## class Ist
#  include M__Ist
#end

.
763,768c
  def to_a(*a)
#   if a.empty?
#     @a.map { |v| v.dup}
#   else
#     a.map { |v| self[v]}
#   end
    a.empty? ? @a.map { |v| v.dup} : a.map { |v| self[v]}
.
760a
#   @p
.
756a
#   @p = i
.
751,752c
#    v = -v if 'pc' == k && v == @a.assoc(k)[i] && knid(v, :Numeric)	# cp 
#    'pc' == k && case v when Numeric then v == @a.assoc(k)[i] && v = -v end     # cp    
   @a.assoc(k)[i] = v
.
747c
#    i ||= @a.assoc('ctr')[1]
    i ||= @p
.
735c
#    i ||= @a.assoc('ctr')[1]
    i ||= @p
.
713a
    @p = 1
.
621,622d
612,616d
584d
570d
568c
#	  flg = true	##
	  flg ||= ckth(th[mx], 1)
.
559a
#    th = (0 .. 1).map { |v| pl_eg(pc, thl[v])}
.
549,551c
#    (rou = ROU).send(*a) || a[1]
    self.send(*a) || a[1]
.
546c
#   GC.start	# g 	# fuantei ( keisan gosa ) ?
.
540,541c
#     knid(a, :Array)	?     __method__(a, pc)  :    a		# s_id(a, pc)  :    # 310200plini ?
      case a when Array then  __method__(a, pc)  else a end	# s_id(a, pc)  else # 310200plini ?
.
533a
  def send(*op)
#    knid(op[0], :Numeric) ? op.inject(:+) : (rou = ROU).send(*op)
    case op[0] when Numeric then op.inject else (rou = ROU).send(*op) end
#   op.inject(knid(op[0], :Numeric) ? :+ : '(rou = ROU).send')
  end

.
524c
    end == true
.
484,488d
470,471c
    a.each_slice(2) { |k, v|		# .shift(2) higokan mruby 70410200
#     'ctr_s' == k && break(-v)		# higokan ? mruby 70410200
.
467c
#   n = arg.shift if arg.first.is_a?(Numeric)		# unwork ( thread ? )
.
453,455c
    self[n] = 0 == n ? @@Plmg.(pl_g(-1), pl) : pl	# c 
.
431d
416d
404d
387a
    n = a.shift
.
378,384c
#   a || return		# 410200plini
.
368,369d
357d
332,336d
327c
# def s__i__r0(	    *a) a[0].send(a[3])[a[1]]		end
  def s__send(	    *a) a[0].send(a[3])[a[1]]		end
.
255,256c
    @@fml.(lb).assoc(sym)	# c 
.
234,235c
#      [:MOVE,	  :__sr0],	[:LOADL,   :__i__r0, nil, :pool],
#      [:LOADI,	  :__r0 ],	[:LOADSYM, :__i__r0, nil, :syms],
      [:MOVE,	  :__sr0],	[:LOADL,   :__send, nil, :pool],
      [:LOADI,	  :__r0 ],	[:LOADSYM, :__send, nil, :syms],
.
216c
#   GC.disable		# g 
    @@Slp.slp 0

.
195c
#   GC.disable		# g 
#   @@Slp.slp 0
.
175c
#  include RiteOpcodeUtil
.
169,171c
  include RiteOpcodeUtil

#  def send(*op)
#    knid(op[0], :Numeric) ? op.inject(:+) : self.__send__(*op)
#  end
.
145c
##   t -= t <=> 1
#   t += 1 <=> t
.
25,26c
NSL_ = 6309	# nanosleep()
# NSL_ = 10065	# nanosleep()
.
23c
# GC.start	# g 
.



-- 
YAMAGUTIseisei ( str_h__namae = { :sei => "山口" , :mei => "青星" } )
http://hello.to/seisei/	mailto:seisei@.68..net	tel:081-70-5152-1104
heiwa furiisekkusu 1tu

[toc] | [prev] | [next] | [standalone]


#19 — jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_2_0_0_2_1_6__6120020200.rb

FromYAMAGUTIseisei <seisei@hello.to>
Date2020-02-16 16:30 +0000
Subjectjit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_2_0_0_2_1_6__6120020200.rb
Message-ID<r2bre8$6eu$1@dont-email.me>
In reply to#17
1536c
# GC.start		# g 	# antei ?
.
1532c
# GC.start		# g 
.
1527c
#  fib(20)
  fib(3)
#  3 + 382
.
1504c
#	fl.delete_at(n) && redo if fl[n] && fl[n].resume(n) && 0 == n
.
1492,1501c
#######        mn = 0 > fis[0] ? -1 : n
#	if fis[1].resume(n) && 0 <= fis[0]
#######	if fis[1].resume(mn) # && 0 <= fis[0]
#	end

#      ise[i_i_d].reject!.with_index { |fis, n|
      ise[i_i_d].delif_c(1) { |fis, n|
#        n = 0 > fis[0] ? -1 : n
        0 > fis[0] && n = -1
#	fis[1].resume(n) && 0 <= fis[0]
	fis[1].resume(n)
      }

.
1490d
1481,1487c
#	  if 0 <= pfl[0]
#	    ise[i_i_f]<< fls(pfl[0])	# p 
#	  end
#	  true
.
1479d
1473,1477c
      ise[i_i_s].reject! { |pfl|	# Inspired by : RobertDoggett ? http://microware.com/# , Professor TAKAZAWA Yosimitu http://mu.ice.uec.ac.jp/~takazawa/
#     ise[i_i_s].delif_c(1) { |pfl|
.
1471c
#######	if pfl
#######	  ise[i_i_d]<< [pfl[0], isfl(pfl[1])]	# p 
#	  if 0 <= pfl[0]
#	    ise[i_i_f]<< fls(pfl[0])	# p 
#	  end
.
1463c
	stack.p = rg['sp']
.
1445a

#	rg['ctr', 1] = rg['ctr', 1].abs		# cp 
.
1441,1444c
#      if ise[i_i_f].empty?
      if ise[i_i_d].empty? || (1 == ise[i_i_d].size && 0 > ise[i_i_d][-1][0])
.
1430,1431c

#	  rg['ctr', 1] *= -1	# kakezan
	  rg.ps(-rg.pg)		# cp 

#	  if ifj.(rg['sym'])
#	    stu.(rg['pc'] + imem.getarg_sbx(rg['cop'], rg['sym'])	# c 
#	    stu.(rg['pc'] + 1, rg['sym', -1])	# c 
#	  end
.
1421,1427c
#	  pco[0] = rg['pc'] if ifj.(rg['sym'])	# p 
	  (pco[0] = rg['pc']; pctj<< pco[0] + 1) if ifj.(rg['sym'])	# p 	# c 
.
1416,1417c
#	  ist.call
#	  ist.(rg['pc']) if istm.call	# c 
	  ist.(rg['pc']) if pctj.pop != rg['pc'] && istm.call	# c 
.
1414d
1409,1410c
#      if 0 <= rg['ctr', 1]
#	opg.call
	opg.(rg['pc'])		# c 	# cp 
#	@@opg.(irep, rg, imem)	# c 
.
1405c
#      }
.
1397,1403c
#      0.step(0) { |n|
#	ise[i_i_f].delete_at(n) && redo if ise[i_i_f][n] && ise[i_i_f][n].resume(n) && 0 == n
.
1390,1391c
#    ifj = -> (sym) {?J == sym.to_s[0]}		# l 	# q 
#    ifs = -> (sym) {[:ENTER, :SEND, :RETURN, :NOP].include?(sym)}	# l 
    ifj = ->(sy) {?J == sy.to_s[0]}	# l 	# q 
    ifs = ->(sy) {[:ENTER, :SEND, :RETURN, :NOP].include?(sy)}	# l 

#   stu = ->(pcl, sy) {		# l 
#     opg.(pcl)			# c 
#     ist.(pcl) unless (ifj.(sy) || ifs.(sy))	# c 3 
#     pcoj.call
#   }
.
1383,1387c
      true
    }
    ist = ->(pcl, po = 0) {	# l 
#      ise[i_i_s]<< [0 > rg['ctr', 1] ? -rg['pc'] : rg['pc'], rg.to_a]	# p 	# cp 
#      ise[i_i_s]<< [0 > rg.pg ? -pcl : pcl, rg.to_a]		# p 	# cp 
      ise[i_i_s]<< [0 > rg.pg ? -pcl : pcl, Rg.new(rg.to_a)]	# p 	# cp 
#     ise[i_i_s]<< [0 > rg['ctr', 1] ? -pcl : pcl, rg.ss(po)]	# p 	# cp 
.
1381c
#	pfl = nil
.
1378,1379c
	  ise[i_i_d]<< pfl			# p 
.
1373,1375c
	    ise[i_i_d]<< pfl			# p 
#	    next
	    next false
.
1370,1371c
#	    ise[i_i_f]<< fls(pcf.abs)		# p 	# cp 
.
1362,1366c
    istm = -> {		# l 
#      unless ise[i_i_d].empty?
#	pfl = ise[i_i_d].pop
      if pfl = ise[i_i_d].pop
.
1354,1356c
#   @@opg = ->(irep, rg, imem) {	# l 
#    opg = -> {				# l 
    opg = ->(pcl) {			# l 
#      c, sym = @@opf.(irep, rg['pc'], imem)	# c 
      c, sym = @@opf.(irep, pcl)		# c 
.
1328c
	  callinfo.p -= 1
.
1322c
	  callinfo.p -= 1
.
1315c
	  callinfo.p -= 1
.
1312d
1308d
1306c
	if 0 == callinfo.p
.
1295,1296c
#    rg = Rg.new([['ctr', 1], ['pc', @pc], ['sp', @sp], ['cop'], ['sym']])
    rg = Rg.new([['pc', @pc], ['sp', @sp], ['cop'], ['sym']])
.
1293c
#    i_i_f = 0; i_i_d = 1; i_i_s = 2
    i_i_d = 0; i_i_u = 1; i_i_s = 2
.
1289c
    pctj = []
.
1285,1287c
#    fl = []
.
1262,1268c
#	r = (true == fb.resume ? true : false) # && r
	ri ||= (true == fb || true == fb.resume ? fb = true : false)
	m = Fiber.yield ri && rf
#	Fiber.yield r
	rf = fl.resume(m.abs) if 0 <= m # || 0 <= pc
.
1258,1259c
    fl = fls(pc.abs) # if 0 <= pc	# cp 
#    r = false
    ri, rf = false
.
1254,1256c
#   rg.to_s		# fuguai taisaku mruby 70410200
#    rg = Rg.new rg
    pc = rg['pc']
    sl = @Slp
#    pc = rg.assoc('pc')[1]
.
1249c
#    sym = OPTABLE_SYM[imem.get_opcode(cop)]
    sym = OPTABLE_SYM[(rou = @@Rou).get_opcode(cop)]
.
1241d
1207c
	callinfo.p += 1
.
1202c
	callinfo.p += 1
.
1197c
	callinfo.p += 1
.
1169d
1158d
1140,1141d
1132c
#	sp = [sp].flatten
	sp = [sb].flatten
.
1117c
#    Fiber.new {	##
    Fiber.new { |thi = 0|	##
.
1115c
#    thi = 0	##
.
1109a
#	  kfv.empty? lopa.push(k, fv) : lopa += kfv
.
1108c
#	  k && lopa.push(*fv)
	  lopa.push(*fv)
.
1104d
1097,1099c
#	      fv[oi] = imem.ta(fv[oi], cop) if oi <= ht = fv.hgt
	      fv[oi] = ta.(fv[oi]) if oi <= ht = fv.hgt		# c 
#	      fv[oi] ? (fv = [thl[oi], fv[oi]]) : k = nil
	      fv = fv[oi] ? [thl[oi], fv[oi]] : []
.
1091,1093c
#	      fv = [thl[oi], imem.ta(fv[oi], cop), thl[oi + 1], []]	# t 
	      fv = [thl[oi], ta.(fv[oi]), thl[oi + 1], []]	# c t 
.
1080a
    sb = sp
    ta = ->(ta) { 	# l 
      [ta[0] || (sb = ~ [sp].flatten[0]; :getarg_a), ta[1] || cop][
	0 .. ta[2] || 1] }
.
1073,1074c
#     printf("Unkown code %s \n", OPTABLE_SYM[@Rou.get_opcode(cop)])
.
1062,1063c
#    pcabs = pc.abs	# cp 
#    pc1 = pcabs + 1	# cp 
    pc1 = (pcabs = pc.abs) + 1	# cp 

.
1059d
1047c
#		pr || (pr, sy, mt = imem.fml('st', sym)[1 .. -1])
		pr || (pr, sy = imem.fml('st', sym)[1 .. -1]
			?_ == pr.to_s[1] || (mt, pr = [pr, imem.l__s__send]))	# q 
.
1043,1045d
1033,1034c

#	  if flg[0] && 0 > (sp || s.p = sp = pl[i_sp].flatten[0])
#	  flg[0] && s.ps([pl[i_sp]].flatten[0]) { |i|	# && 0 <= sp
	  flg[0] && s.ps(pl[i_sp].flatten[0]) { |i|	# && 0 <= sp
	    0 > i ? (r[1] = r[0]; flg[1] = true; ~ i) : i
	  }
.
1027d
1020d
991,995c
#	  s.s.hgt <= mx && mx = s.s.hgt
#	  s.s.hgt <= mx = 0xf && mx = s.s.hgt
#	s.size < mx = 0xf && mx = s.size - 1
#	(mx = 0xf) > (mx |= s.size << 7) >> 7 && mx = (mx >> 7) - 1; mx &= 0x7f		# .b 
###	(mx = 0xf) > (mx |= s.size - 1 << 8) >> 8 && mx >>= 8; mx &= 0xff		# .b 
	(rs[1] = s.size) < mx = 0xf && mx = rs[1] - 1
#	sz.step(mx) { |n| plr<< lm.(isr0, s[n])}	# p c 
	(sz .. mx).each { |n| plr<< lm.(s[n])}	# p c 
#	s.s.empty? ? @Slp.slp(0) : plr += lm.(isr0, s[plr.size, 0xf])		# c 
.
981c
#    mx = 0xf
.
974,975c
#     sp, sz, isr0, r0, r1, lm, sy = [][0]
#    pl, sp, mt, isr0, r, r0, r1, sym, sy, pr, sz = nil
    pl, mt, isr0, r, r0, r1, sym, sy, pr, sz = nil
.
968d
952,954c
    r = [pl[lpl.afl(thl[0], ?i)]]	# q 
    r1 = pl[lpl.afl(thl[1], ?i)]	# q 
    r<< r1 if knid(pl[lpl.afl('ctr', ?i)][0], :Array) && lpl.ckth(r1, 3)	# p 	# q 

#   r.map { |v| v[1] = v[-1]}
#   r = r.map { |v| v[1] = v[-1]}	# higokan ? mruby 70410200
#    [pl[lpl.afl('sym', ?i)].to_sym,	# q 
#	*[r, r.map { |v| lpl.ckth(v, 1)}].map { |v| [v[0], v[-1]]}]
.
950d
932,933d
921c
    # 3080410200 : 5x2 ok ( gc ) : monami-ya.mrb 8270410200 813e2af8	# www.monami-ya.jp
.
868c
#    GC.start	# g 	# antei ?
.
768,850d
748,749c
#    @a.assoc('ctr')[1]
    @p
.
743,744c
#    @a.assoc('ctr')[1] = i
    @p = i
.
739c
    @a.assoc(k)[i] = v
.
715a
# def ss(po = 0, ctr = nil)
#   @a.map { |v| k = v[0]
#     if ! 'ctr' == k # v[0]
#	v = [k, v[self.assoc('ctr')[1]]]
#	v[1] += po if 'pc' == k
#     end
#     v
#   }
# end

.
682c
#   @p = i
#   (i == @p) && return(i)	# higokan ? mruby 70410200
    return i if i == @p
#   @p = 0 > i ? ~ i : i
    @p = b ? yield(i) : i
.
678,679c
# def ps(i)
  def ps(i, &b)
#   id = self.object_id
.
672,674c
# def pg() @p	   end
# def pi() @p += 1 end
# def pd() @p -= 1 end
.
603c
#     GC.start	# g 	# antei ?
.
596,597d
568,569c
#	arf ||= ckth(th[idx], 2)
#	th[idx] = pl_eg(pc, thl[idx]) if arf
	th[idx] = pl_eg(pc, thl[idx]) if arf ||= ckth(th[idx], 2)
.
551,552c
#   idx = 0    ##
    th = ((idx = 0) ... thl.size).map { |v| pl_eg(pc, thl[v])}
    flg = false
.
549d
546d
519,522c
#  def send(*op)
##    knid(op[0], :Numeric) ? op.inject(:+) : (rou = ROU).send(*op)
#    case op[0] when Numeric then op.inject else (rou = ROU).send(*op) end
##   op.inject(knid(op[0], :Numeric) ? :+ : '(rou = ROU).send')
  def send(*a)
    case a[0] when Numeric then a.inject else (rou = ROU).send(*a) end
#   a.inject(knid(a[0], :Numeric) ? :+ : '(rou = ROU).send')
.
466,468c
      'ctr' == k && ! knid(v, :Array) ? pl[i]<< v : pl[i] = v	# p 
.
464d
449,450c
  def pl_eg(n = 0, k)
.
438,439c
    pl
#   a.empty? ? pl : a.map { |a| pl.afl(a, self)}
.
426,428c
  def pl_g(n = 0)
.
322,329c
# def s__i_pool_r0( *a) a[@@I_s__i].pool[    a[@@I_s__r0]]	end
# def s__i_syms_r0( *a) a[@@I_s__i].syms[    a[@@I_s__r0]]	end
.
263c
    @@fml.(lb).assoc(sym)		# c 
#   (f = @@fml).(lb).assoc(sym)		# c 
.
260c
  def initialize
    @l__s__send = @@l__s__send
  end

#  def ta(l, cop) [l[0] || :getarg_a, l[1] || cop][0 .. l[2] || 1] end
.
240,243c
#      [:MOVE,	  :__sr0],	[:LOADL,   :__send, nil, :pool],
#      [:LOADI,	  :__r0 ],	[:LOADSYM, :__send, nil, :syms],
      [:MOVE,	  :__sr0],	[:LOADL,   :pool],
      [:LOADI,	  :__r0 ],	[:LOADSYM, :syms],
.
237a
  attr_accessor :l__s__send
  @@l__s__send = :s__send

.
220,222c
    GC.disable		# g 
.
198,199c
    GC.disable		# g 
.
178d
171,174d
145,146c
#   t += 1 - (t <=> 0)	# 1 <=> t
.
125,129c
#      c = (n = 0) - 1
#      while i > c += 1	# c += 1 < i # -e:1: non float value (TypeError) ( monami-ya.mrb:60510200 mruby:70410200 )
#	a[n] && yield(a[n], c) && (a.delete_at(n); redo); n += 1
##	(v = a[n]) && yield(v, c) && a.delete_at(n) || n += 1
      n = 0
      c = -i - 1
      while 0 > c += 1	# c += 1 < i # -e:1: non float value (TypeError) ( monami-ya.mrb:60510200 mruby:70410200 )
	a[n] && yield(a[n], c + i) && (a.delete_at(n); redo); n += 1
#	(v = a[n]) && yield(v, c + i) && a.delete_at(n) || n += 1
.
25,26c
# NSL_ = 6309	# nanosleep()
NSL_ = 10065	# nanosleep()
.
17a
	:s__send,	:l__s__send,
.



-- 
YAMAGUTIseisei ( str_h__namae = { :sei => "山口" , :mei => "青星" } )
http://hello.to/seisei/	mailto:seisei@.68..net
heiwa furiisekkusu 1tu

[toc] | [prev] | [next] | [standalone]


#20 — jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_2_0_0_4_1_9__9140020200.rb

FromYAMAGUTIseisei <seisei@hello.to>
Date2020-04-19 16:59 +0000
Subjectjit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_2_0_0_4_1_9__9140020200.rb
Message-ID<5E9C8375.8090205@hello.to>
In reply to#17
1477c
GC.start		# g 	# antei ?
.
1473c
GC.start		# g 
.
1466,1468c
  fib(20)
.
1428,1437c

      ise[i_i_d].reject!.with_index { |fis, n|
#      ise[i_i_d].delif_c(ts) { |fis, n|
        0 > fis[0] && n = -1				# cp 
#	fis[1].resume(n) && 0 <= fis[0]			# cp 
.
1425c
####	end	####

.
1422c
#	    ise[i_i_f]<< fls(pfl[0])			# p 
.
1418,1420c
#      ise[i_i_s].delif_c(ts) { |pfl|
####	if pfl	####
	  ise[i_i_d]<< [pfl[0], isfl(pfl[1])]		# p 
.
1414c
#	    ise[i_i_f]<< fls(pfl[0])			# p 
.
1412c
#######	  ise[i_i_d]<< [pfl[0], isfl(pfl[1])]		# p 
.
1404d
1388c
##	plini
.
1385,1386c
	rg.ps(rg.pg.abs)
.
1381c
#      if 0 == ise[i_i_f].size
#      if 0 == ise[i_i_d].size || (1 == ise[i_i_d].size && 0 > ise[i_i_d][-1][0])
.
1365,1366c
	  rg.ps(-rg.pg)
.
1354,1361c
#	  ist.(rg['pc']) if pctj.pop != rg['pc'] && istm.call	# c 
#	  false), (
		ist.(rg['pc']) if pctj.pop != rg['pc'] && istm.call; false),	# c 
	  (next if pcoj.call)
	][0] && (
	  (pctj<< (pco[0] = rg['pc']) + 1) if ifj.(rg['sym'])	# p 	# c 
.
1351c
	loc.verb "#{rg['pc'].to_xeh}	#{rg['sym']}	#{rg['cop'].to_xeh}" if
		0 <= rg.pg
.
1348,1349c
	opg.(rg['pc'])			# c 
#	@@opg.(irep, rg, imem)		# c 
.
1339,1343d
1324,1328d
1318d
1307,1308c
	    next false				# r 
.
1298,1299d
1290a
#      c, sym = @@opf.(irep, pcl, imem)		# c 
.
1282d
1279a
	sl.slp 0
.
1269,1271c
#	if ?J == sym.to_s[0]	# q 
	if ifj.(sym)		# c 
	  jm.(cop, sym)		# c 
	else
	  callinfo, irep, rg = @@jsc.(stack, callinfo, irep, rg, imem)	# c 
#	  printf("Unkown code %s \n", OPTABLE_SYM[get_opcode(cop)])
#	  printf("Unkown code %s \n", OPTABLE_SYM[imem.get_opcode(cop)])
	end
.
1267a

	# 何もしない
      when :NOP

.
1232a
    ifj = ->(sy) {?J == sy.to_s[0]}		# l 	# q 
    ifs = ->(sy) {[:ENTER, :SEND, :RETURN, :NOP].include?(sy)}		# l 

    jm = ->(cop, sym) {		# l 
      case sym

	# JMP nでpcをnだけ増やす。ただし、nは符号付き
      when :JMP
#	@pc = @pc + getarg_sbx(cop)
#	pc = pc + lpl.getarg_sbx(cop) - 1
	rg['pc', -1] = rg['pc'] + rou.getarg_sbx(cop)
#	next

      when :JMPIF
#	if @stack[@sp + getarg_a(cop)] then
	if stack[rou.getarg_a(cop)]
#	  @pc = @pc + getarg_sbx(cop)
#	  pc = pc + lpl.getarg_sbx(cop) - 1
	  rg['pc', -1] = rg['pc'] + rou.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[rou.getarg_a(cop)]
#	  @pc = @pc + getarg_sbx(cop)
#	  pc = pc + lpl.getarg_sbx(cop) - 1
	  rg['pc', -1] = rg['pc'] + rou.getarg_sbx(cop)
#	  next
	end

      end
    }

.
1230d
1227c
#    i_i_f = 0; i_i_d = 1
.
1213c
#    imem = @imem
    imem = @Imem
.
1211a
    ts = @@ts
.
1200,1201c
#	ri ||= (true == fb || true == fb.resume ? fb = true : false)
	ri ||= (true == fb || true == fb.resume && fb = true)
.
1183d
1083,1110c
#      # JMP nでpcをnだけ増やす。ただし、nは符号付き
#    when :JMP
##     @pc = @pc + getarg_sbx(cop)
##     pc = pc + lpl.getarg_sbx(cop) - 1
#      rg['pc', -1] = rg['pc'] + rou.getarg_sbx(cop)
##     next

#    when :JMPIF
##     if @stack[@sp + getarg_a(cop)] then
#      if stack[rou.getarg_a(cop)]
##	@pc = @pc + getarg_sbx(cop)
##	pc = pc + lpl.getarg_sbx(cop) - 1
#	rg['pc', -1] = rg['pc'] + rou.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[rou.getarg_a(cop)]
##	@pc = @pc + getarg_sbx(cop)
##	pc = pc + lpl.getarg_sbx(cop) - 1
#	rg['pc', -1] = rg['pc'] + rou.getarg_sbx(cop)
##	next
#      end
.
1079c
    cop, sym = rg['cop'], rg['sym']
.
1068,1070c
	end while [true][thi]	# fuantei ? mruby:70410200 monami-ya.mrb:60510200
#	break if 0 != thi }
.
1064,1065c
	begin			# fuantei ? mruby:70410200 monami-ya.mrb:60510200
#	loop {
.
1054d
1052d
1045,1046d
1042,1043d
1032,1037c
#	      fv[oi] = ta.(fv[oi]) if oi <= ht = fv.hgt		# c 
#	      fv = fv[oi] ? [thl[oi], fv[oi]] : []
	      fv = (fv[oi] = ta.(fv[oi]) if oi <= ht = fv.hgt) ?	# c 
		[thl[oi], fv[oi]] : []
.
1027,1030c
	      fv = [thl[oi], ta.(fv[oi]), thl[oi + 1], []]		# c t 
.
1023d
998c
#    imem = @imem
    imem = @Imem
.
993,994d
991c
#    rg = Rg.new rg
    pc, sp, cop, sym = [rg['pc'], rg['sp'], rg['cop'], rg['sym']]
.
979c
#			?_ == pr.to_s[1] || (mt, pr = [pr, imem.l__s__send]))	# q 
			?_ == pr.to_s[1] || mt = pr)	# q 
.
977d
964d
960d
958c
#	  r.each_with_index { |v, i| flg[i] = lpl.ckth(v, 1)}	##	####
.
956c
#	  sym, (r0, r1) = rslt pl	# higokan mruby 70410200	# bce75e27 2211410200 matz
#	  sym, r, flg = rslt(pl); r0, r1 = r
	  sym, r, flg = rslt(pl)
.
933,945d
928c
      -> {	# flg[-1]
.
918,926c
#	sz.step(sz + ap -= ap >> 2) { |n| plr<< lm.(s[n])}	# p c 
#	(rs[1] = s.size) < mx = 0xf && mx = rs[1] - 1
	0 == s.size ? @Slp.slp(0) : # plr += lm.(s[plr.size, 0xf])	# c 
	  plr += lm.(s[sz .. sz + (ap = (ap += ap >> 1) >> 1)]) # + (ap <=> 0)])	# c 
.
916c
      -> {	# flg[0]
.
910,911c
      -> {	# f
#	r = r1 < sz && plr[r1] || lm.(r1)	# c 
.
908d
904,906c
#      sz = 4; ap = (1 << sz) - 1 - 1
#      sz -= 2; ap = ((ap << sz) + ap >> sz - 1) + 1 >> 1
      ap = 1 << sz = 3
      ap = ((ap += (ap <<= 1) + (ap <<= 2) + (ap << 2)) >> sz) + 1 >> 1
    )

#   lm = ->(r1) {r1.nil? ? r1 : imem.send(pr, *isr0, r1, mt)}	# l 
    lm = ->(r1) {imem.send(pr, *isr0, r1, mt)}			# l 
.
901,902c
#    pl, mt, isr0, r, r0, r1, sym, sy, pr, sz = nil
      mt, isr0, r0, r1, sym, sy, pr = nil

      f = false; flg = [false, false]
      r = nil; rs = [?-, ?-]	# q 2 
.
895,898c
    (
      pc1 = pc + 1
      loc = @@Loc
      lpl = @pl # ; plb = @@plb
#    imem = @imem
      imem = @Imem
      i_sp = lpl.afl(@pla.assoc('sp')[1], ?i)	##	# q 

#      pl = nil; s = Stack.new; sp = nil; plr = nil
#      s = Stack.new; plr = nil
      s = Stack.new; plr = []
      i = @irep
.
889,893d
883c
    [pl[lpl.afl('sym', ?i)].to_sym,		# q 
	r, r.map { |v| lpl.ckth(v, 1)}]
#	*[r, r.map { |v| lpl.ckth(v, 1)}].map { |v| [v[0], v[-1]]}]
.
879,881c
#   r = r.map { |v| v[1] = v[-1]}		# higokan ? mruby 70410200
.
874,876c
#    r = [pl[lpl.afl(thl[0], ?i)]]	# q 
    r = [pl[lpl.afl(thl[0], ?i)], []]		# q 	# t 
    r1 = pl[lpl.afl(thl[1], ?i)]		# q 
#    r<< r1 if knid(pl[lpl.afl('ctr', ?i)][0], :Array) && lpl.ckth(r1, 3)	# p 	# q 
    r[1] = r1 if knid(pl[lpl.afl('ctr', ?i)][0], :Array) && lpl.ckth(r1, 3)	# p 	# q 

#    r = Array.new(thl.size) { |n| pl[lpl.afl(thl[n], ?i)]}		# q 
.
856c
#   @pla = [['sp', 'ctr']]
.
852a
##   self[0] = [[thl[0], [thini]], [thl[1], [thini]],
.
846c
    # 3080410200 : 5x2 ok ( gc ) : monami-ya.mrb 8270410200 813e2af8	# http://www.monami-ya.jp/
.
840a
## def plini
.
823c
    GC.disable		# g 	# gene gc enable : mruby 6170410200 d17506c1
.
816a
##  @pl.plini(@@rmth, @pl = ENVary.new(rmth + 1, thini, thini, [], []))	# 310200plini ?
.
813a
#    @pll = [thini, thini, [], []]
#    @pl = ENVary.new(rmth + 1, thini, thini, [], [])
##    @pl = ENVary.new(rmth + 1, *@pll)

##    plini
#    @pl.plini
.
795c
#    @imem = @@Imem
    @Imem = @@Imem
.
793c
    GC.start	# g 	# antei ?
.
786a
    @@Loc = LOC
.
782,785d
760,768d
756d
751d
745,746c
#    'pc' == k && case v when Numeric then v == @a.assoc(k)[i] && v = -v end	# cp 
.
713a
  def to_a
    @a.map { |v| v.dup}
  end

.
636d
596c
      GC.start		# g 	# antei ?
.
593c
#      fpl = delif_c(1, fpl) { |fb, n| fb.resume}
      fpl = delif_c(ts, fpl) { |fb, n| fb.resume}
.
573a
    ts = @@ts # + 1
.
561,568c
#	idx += 1 unless arf = ckth(th[idx], 2) if mx != idx
###	idx += 1 unless (0 < idx ? arf = ckth(th[idx], 2) : ckth(th[idx], 0))

#	th[idx] = pl_eg(pc, thl[idx]) if arf ||= ckth(th[idx], 2)	# (0 < idx) == arf
##	ji_ngq ||= ckth(pl_eg(pc, 'ctr')[0], 0)		# sp [sp]
#	ji_ngq = ckth(pl_eg(pc, 'ctr')[0], 0) if ! ji_ngq && arf ||= ckth(th[idx], 2)	# sp [sp]
#	th = th[0 ... idx] if ji_ngq && (arf,! || ckth(th[idx], 2))

	if arf ||= ckth(th[idx], 2)			# (0 < idx) == arf
	  th[idx] = pl_eg(pc, thl[idx])			# (0 < idx) == arf
#	  ji_ngq ||= ckth(pl_eg(pc, 'ctr')[0], 0)	# sp [sp]
	  ji_ngq ||= kt.call			# c 	# sp [sp]
#	  th = th[0 ... idx] if ji_ngq && arf && ckth(th[idx], 2)
	  th = th[0 ... idx] if ji_ngq && ckth(th[idx], 2)
	end

      end
    }		##
.
558,559c
	idx += 1 unless arf = ckth(th[idx], 2)		# mx != idx ?
.
554c
#	  flg ||= ckth(th[mx], 1)
	  flg = mx <= idx && ji_ngq
.
551,552c
#	if ckth(th[mx], 1) || ji_ngq
#	if ckth(th[mx], 1) || ckth(pl_eg(pc, 'ctr'), 0)	# sp [sp]
	if ckth(th[mx], 1) || kt.call		# c 	# sp [sp]
#	unless arf = ckth(th[mx], 2)
#	  th.each_index { |n| pl_es(pc, [thl[n], th[n]])}
	  th.each_with_index { |v, n|
#	  th[0 .. idx].each_index { |n|
	    pl_es(pc, [thl[n], v])
#	    break if (mx >= idx || ! ji_ngq)
	    ji_ngq || break
#	    break if mx != idx
	  }
.
545,549c
#    th = ((idx = 0) ... thl.size).map { |v| pl_eg(pc, thl[v])}
#   th = Array.new(thl.size) { |v| 0 == v ? pl_eg(pc, thl[v]) : []}	# t	# unwork ( thread ? ) mruby 10410200
    th = ((idx = 0) .. thl.hgt).map { |v|
      0 == v ? pl_eg(pc, thl[v]) : []	# t 
    }
#    flg = false
    ji_ngq = false

    kt = -> {ckth(pl_eg(pc, 'ctr')[0], 0)}	# l 	# sp [sp]

    Fiber.new {		##
      while mx = th.hgt
.
535d
511,514d
473,475c
# def ctr_r
#   pl_eg('ctr')
# end
.
459c
      i = self.afl(k, ?i)		# q 
.
441c
    self[n] = 0 == n ? @@Plmg.(pl_g(-1), pl) : pl		# c 
.
438c
  @@Plmg = ->(pi, pv) {pi.map { |v| [v[0], pv.shift]}}		# l 
.
435d
432c
#      pl = @@Pldv.(pl)		# c 
      pl.map! { |a| a[1]}
.
425c
#   sleep 0; GC.start; sleep 0		# g 
.
423c
#  @@Pldv = ->(pl) {pl.map { |a| a[1]}}			# l 
.
385a
##  plini
.
337c
  def method_missing(*a)
    a[0] = ?s << a[0].to_s		# q 
    case a[3]
#    when Array then a[3].map{ |v| v.nil? ? v : send(*a[0 .. 2], v)}
    when Array
      a_ = a[0 .. 2]; return a[3].map{ |v| v.nil? ? v : self.send(*a_, v)}	# r 
    else self.send(*a)
    end
  end
.
333d
267d
263,264d
260c
#    @l__s__send = @@l__s__send
.
239,240d
234,235c
#  attr_accessor :l__s__send
#  @@l__s__send = :s__send
.
146a
# @@slp = ((	     NSL_	+ ( NSL_ >> 5)) >> 8) + 2 >> 2	# 16+ bit MPU
.
133c
#	a[n] && yield(a[n], c + i) && (a.delete_at(n); redo); n += 1
	a[n] && yield(a[n], c + i) && (next a.delete_at(n)); n += 1
.
126,129d
33a
#   rmth = 63
#   rmth = 47
  @@rmth = 39
  @@ts = 1	# = (@@rmth >> 1) + 1	# = 68060
.
18,19c
#	:s__send,	:l__s__send,
	:ctr_s,	:p,	:s,		:fibt].clear
.



-- 
YAMAGUTIseisei ( str_h__namae = { :sei => "山口" , :mei => "青星" } )
http://hello.to/seisei/	mailto:seisei@.68..net
heiwa furiisekkusu 1t

[toc] | [prev] | [next] | [standalone]


#21 — jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_2_0_0_7_0_5__5070020200.rb

FromYAMAGUTIseisei <seisei@hello.to>
Date2020-07-05 12:08 +0000
Subjectjit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_2_0_0_7_0_5__5070020200.rb
Message-ID<rdsg4r$8lk$1@dont-email.me>
In reply to#20
./include/mrbconf.h ( d17506c / not monami-ya.mrb )

43d



./build/mrbgems/mruby-meta-circular-heiretu/mrblib/irep.rb ( both : monami-ya.mrb , d17506c )

44,47c
#    ?i != m ? self[m.afl(	k, ?i)] : self[0].index(self[0].assoc(k))	# q 2 
    ?i != m ? self[m.afl(	k, ?i)] : (s = self[0]).index(s.assoc(k))	# self.index(idx)	# q 2 
#   ?i != m ? self[m.afl(	k, ?i)] : loop {(s = self[0]).index(s.assoc(k) && break)}	# self.index(idx)	# fuguai taisaku	# q 2 
.
35d



mruby-meta-circular-heiretu/sample/jit-1.rb

1469c
	fis[1].resume(0 > fis[0] ? -1 : n)		# cp 
.
1465,1467c
#      ise[i_i_d].reject!.with_index { |fis, n|
#     ise[i_i_d].reject_c!(ts) { |fis, n|
      ise[i_i_d].delif_c(ts) { |fis, n|
#	0 > fis[0] && n = -1				# cp 
.
1452a
#     ise[i_i_s].reject_c!(ts) { |pfl, n|
.
1433c
      if 0 <= rg.p
.
1422c
	rg.p = rg.p.abs
.
1402c
	  rg.p = -rg.p
.
1399d
1393,1394d
1390c
		0 <= rg.p
.
1383,1384c
      if pco.pop || 0 <= rg.p
.
1381a
#      0.step(0) { |n|
#	ise[i_i_f].delete_at(n) && redo if ise[i_i_f][n] && ise[i_i_f][n].resume(n) && 0 == n

#      }

.
1367,1369c
#      ise[i_i_s]<< [0 > rg['ctr', 1] ? -rg['pc'] : rg['pc'], rg.to_ra]	# p 	# cp 
      ise[i_i_s]<< [0 > rg.p ? -pcl : pcl, Rg.new(rg.to_ra)]		# p 	# cp 
#     ise[i_i_s]<< [0 > rg['ctr', 1] ? -pcl : pcl, rg.ss(po)]		# p 	# cp 
.
1351,1352c
#	pcf = pfl[0]
#	if 0 > pcf
	if 0 > pcf = pfl[0]
.
1342d
1330c
      if 0 > rg.p
.
1315d
1276c
#      cop, sym = rg['cop'], rg['sym']
      cop, sym = rg.to_ra('cop', 'sym')
.
1272a
      rg['pc', -1] = rg['pc'] + rou.getarg_sbx(cop)
.
1264,1270c
##	if !@stack[@sp + getarg_a(cop)] then
#	if !stack[rou.getarg_a(cop)]
##	  @pc = @pc + getarg_sbx(cop)
##	  pc = pc + lpl.getarg_sbx(cop) - 1
#	  rg['pc', -1] = rg['pc'] + rou.getarg_sbx(cop)
##	  next
#	end
	! stack[rou.getarg_a(cop)] || next
.
1260c
#	end
	stack[rou.getarg_a(cop)] || next
.
1254,1258c
##	if @stack[@sp + getarg_a(cop)] then
#	if stack[rou.getarg_a(cop)]
##	  @pc = @pc + getarg_sbx(cop)
##	  pc = pc + lpl.getarg_sbx(cop) - 1
#	  rg['pc', -1] = rg['pc'] + rou.getarg_sbx(cop)
.
1248,1251c
##	@pc = @pc + getarg_sbx(cop)
##	pc = pc + lpl.getarg_sbx(cop) - 1
#	rg['pc', -1] = rg['pc'] + rou.getarg_sbx(cop)
##	next
.
1235d
1206,1207c
#	ri ||= (true == fb || true == fb.resume && fb = true)
	ri ||= true == fb || (true == fb.resume && fb = true)
.
1198d
1196c
#    rg = Rg.new(*rg)
.
1093,1118d
1089c
#    cop, sym = rg['cop'], rg['sym']
    cop, sym = rg.to_ra('cop', 'sym')
.
1079,1080c
#	end while [true][thi]	# fuantei ? mruby:70410200 monami-ya.mrb:60510200
	break if 0 != thi }
.
1075,1076c
#	begin			# fuantei ? mruby:70410200 monami-ya.mrb:60510200
	loop {
.
1068,1073c
#	opa = opg.(thi).push('ctr', [sp])	# c 
#
#	pl.pl_es(pc1, opa)

	pl.pl_es(pc1, opg.(thi).push('ctr', [sp]))	# c 

#	pl.ctr_s(pc1) if 0 == thi
#
#	(0 != thi && ht <= thi) ? thi = 0 : thi += 1

	if 0 == thi
	  pl.ctr_s(pc1)
	elsif ht <= thi
	  thi = -1
	end
	thi += 1
.
1047,1057c
#	  if 'th' == k
#	    if 0 == oi
#	      fv = [thl[oi], ta.(fv[oi]), thl[oi + 1], []]		# c 
#	    else
#	      fv = (fv[oi] = ta.(fv[oi]) if oi <= ht = fv.hgt) ?	# c 
#		[thl[oi], fv[oi]] : []
#	    end
	  case k
	  when 'th'
	    fv = [
		-> {[thl[oi], ta.(fv[oi]), thl[oi + 1], []]},		# c 
		-> {(fv[oi] = ta.(fv[oi]) if oi <= ht = fv.hgt) ?	# c 
			[thl[oi], fv[oi]] : []}
	    ][oi <=> 0].call
#	  else 
	  else lopa<< k		# p 
.
1020d
1014d
1001d
996a

	1 < m && m = fy.(m, false)	# c 

.
995a
	  2 < m && m = fy.(m, false)	# c 
#	  [2 < m && m = fy.(m, false)]	# c 
.
983,984d
980d
959,962c
	0 == s.size ? @Slp.slp(0) : plr += lm.(		# c 
		s[sz .. sz + (ap = (ap += ap >> 1) >> 1)]) # + (ap <=> 0)])
#		[(s + [nil])[sz .. 1 + sz + ap -= ap >> 2]])
.
947,948c
    lm = ->(r1) {r1.nil? ? r1 : imem.send(pr, *isr0, r1, mt)}	# l 
#   lm = ->(r1) {imem.send(pr, *isr0, r1, mt)}			# l 
#   lm = ->(r1) {r1.empty? ? r1 : imem.send(pr, *isr0, r1, mt)}	# l 
#   lm = ->(r1) {[1 < r1.size, r1 = r1[0 .. -2]][0] ?
#				imem.send(pr, *isr0, r1, mt) : r1}	# l 
.
943,944c

#      ap = 1 << sz = 3
#      ap = ((ap += (ap <<= 1) + (ap <<= 2) + (ap << 2)) >> sz) + 1 >> 1
      sz = nil; ap = @@fls_m
.
935d
933a
#     sp, sz, isr0, r0, r1, lm, sy = []		# higokan ? mruby 70410200
.
929,930d
925d
916a
#  @@fls_w = 4; @@fls_m = (1 << @@fls_w) - 1 - 1
#  @@fls_w -= 2
#  @@fls_m = ((@@fls_m << @@fls_w) + @@fls_m >> @@fls_w - 1) + 1 >> 1
#  @@fls_w = nil

  @@fls_m = 1 << @@fls_w = 3; @@fls_m = (
    (@@fls_m += (@@fls_m <<= 1) + (@@fls_m <<= 2) + (@@fls_m << 2)) >> @@fls_w
	) + 1 >> 1
  @@fls_w = nil
.
912,914c
#    [pl[lpl.afl('sym', ?i)].to_sym,		# q 
#	r, r.map { |v| lpl.ckth(v, 1)}]
    [pl[lpl.afl('sym', ?i)].to_sym, r, r.map { |v| lpl.ckth(v, 1)}]	# q 
.
901,905c
    r = [pl[lpl.afl(thl[0], ?i)]]		# q 
#    r = [pl[lpl.afl(thl[0], ?i)], []]		# q 	# t 
#    r1 = pl[lpl.afl(thl[1], ?i)]		# q 
#    r[1] = r1 if knid(pl[lpl.afl('ctr', ?i)][0], :Array) && lpl.ckth(r1, 3)	# p 	# q 
    r[1] = knid(pl[lpl.afl('ctr', ?i)][0], :Array) &&		# q 
      lpl.ckth(pl[lpl.afl(thl[1], ?i)], 3) ?			# q 
	pl[lpl.afl(thl[1], ?i)] : []				# q 	# t 

.
879d
872c
    # 3080410200 : 5x2 ok ( gc ) : monami-ya.mrb 8270410200 813e2af8	# www.monami-ya.jp
.
866d
847a
    @rmt = wkth
.
843,845d
832,837d
812d
785,787c
# def pg
#   @p
# end
.
781,783c
# def ps(i)
#   @p = i
# end
.
746,755d
742,743c
  def to_ra(*a)
    if a.empty?
      @a.map { |v| v.dup}
    else
      a.map { |v| self[v]}
    end
.
719a
  attr_accessor :p

.
621d
594,595c
	sl.slp 0
	Fiber.yield(flg || mx < thi)

#	th[idx] = pl_eg(pc, thl[idx]) if mx >= idx && ckth(th[idx], 2)
	ckth(th[idx], 2) && th[idx] = pl_eg(pc, thl[idx])

#	th[idx] = s_id(th[idx], pc - 1) if mx >= idx
##	if ckth(th[mx], 1) || ji_ngq
##	if ckth(th[mx], 1) || ckth(pl_eg(pc, 'ctr'), 0)	# sp [sp]
#	if ckth(th[mx], 1) || kt.call		# c 	# sp [sp]
##	unless arf = ckth(th[mx], 2)
##	  th.each_index { |n| pl_es(pc, [thl[n], th[n]])}
#	  th.each_with_index { |v, n|
##	  th[0 .. idx].each_index { |n|
#	    pl_es(pc, [thl[n], v])
##	    break if (mx >= idx || ! ji_ngq)
#	    ji_ngq || break
##	    break if mx != idx
#	  }
##	  flg = true	##
##	  flg ||= ckth(th[mx], 1)
#	  flg = mx <= idx && ji_ngq
#	end
#	sl.slp 0
#	Fiber.yield(flg && idx >= mx)	##
#	idx += 1 unless arf = ckth(th[idx], 2)		# mx != idx ?	# ! kara ary
##	idx += 1 unless arf = mx == idx ? arf : ckth(th[idx], 2)	# mx != idx ?
##	idx += 1 unless arf = ckth(th[idx], 2) if mx != idx		# mx != idx ?
####	idx += 1 unless (0 < idx ? arf = ckth(th[idx], 2) : ckth(th[idx], 0)) # && mx > idx	# mx != idx ?	# ! kara ary
##	th[idx] = pl_eg(pc, thl[idx]) if arf ||= ckth(th[idx], 2)	# kara ary	# (0 < idx) == arf
###	ji_ngq = ckth(pl_eg(pc, 'ctr'), 0) if ! ji_ngq	# sp [sp]
###	ji_ngq ||= ckth(pl_eg(pc, 'ctr')[0], 0)		# sp [sp]
##	ji_ngq = ckth(pl_eg(pc, 'ctr')[0], 0) if ! ji_ngq && arf ||= ckth(th[idx], 2)	# sp [sp]
##	th = th[0 ... idx] if ji_ngq && (arf.! || ckth(th[idx], 2))	# kara ary de nai nara kara ary kakunin
#
#	if arf ||= ckth(th[idx], 2)	# kara ary	# (0 < idx) == arf
#	  th[idx] = pl_eg(pc, thl[idx])	# kara ary	# (0 < idx) == arf
##	  ji_ngq ||= ckth(pl_eg(pc, 'ctr'), 0)		# sp [sp]
##	  ji_ngq ||= ckth(pl_eg(pc, 'ctr')[0], 0)	# sp [sp]
#	  ji_ngq ||= kt.call			# c 	# sp [sp]
#	  th = th[0 ... idx] if ji_ngq && ckth(th[idx], 2)	# kara ary de nai nara kara ary kakunin
#	end

      }		##
    }
.
574,591c

#	if (ji_ngq ||= kt.call) || ckth(th[idx], 1) # ) && mx >= idx
	if ckth(th[idx], 1) # && mx >= idx
	  if ji_ngq ||= kt.call
#	    idx > mx && idx = mx
	    thi.step(idx) { |n| pl_es(pc, [thl[n], th[n]])}
	    thi = idx + 1
	  end
	  idx += 1 if mx > idx
.
556,572c
#      while mx = th.hgt	# saizu henkou ari
      loop {

	if 0 < idx && ji_ngq ||= kt.call && ckth(th[idx], 2)
	  idx -= 1
	  flg = true
	else
#	  th[idx] = s_id(th[idx], pc - 1) # if mx >= idx # && ckth(th[idx], 3)
	  th[idx], t = s_id(th[idx], pc - 1) # if mx >= idx # && ckth(th[idx], 3)
.
551a
    thi = 0
    mx = th.hgt
.
550c
#   th = (th = pl_g(pc)
##	[th[self.afl(thl[0], ?i)], th[self.afl(thl[1], ?i)]])
#	[th[idx = self.afl(thl[0], ?i)], th[idx + 1]])

.
536c
#    self.send(*a) || a[1]
    [self.send(*a) || a[1], nil]
.
530c
##   return a[0] if 0 >= a.hgt
    return [a[0], nil] if 0 >= a.hgt
.
524c
#    (TB.dup == a || case a when Array then 0 >= a.hgt end) && (return a)
    (TB.dup == a || knid(a, :Array).!) && (return a)
.
464,465c
#     i_k = self.afl(k, ?i)				# q 
#     i_k = loop {self.afl(k, ?i) && break}		# q 	# fuguai taisaku
#     'ctr' == k && knid(v, :Array).! ? pl[i_k]<< v : pl[i_k] = v	# p 
#     'ctr' == k && case v when Array then true end.! ? pl[i_k]<< v : pl[i_k] = v	# p 	# higokan ? mruby 70410200
#     pl[i_k] = 'ctr' == k && ! knid(v, :Array) ? pl[i_k] + [v] : v	# p 
#     pl[i_k] = 'ctr' == k && ! knid(v, :Array) ? pl[i_k]<< v : v	# p 
##    pl[i_k].send(('ctr' == k && ! knid(v, :Array) ? '<<' : '='), v)		# p 
##    pl[i_k].send(('ctr' == k && ! knid(v, :Array) ? '<<' : 'replace'), v)	# p 
#     pl[i_k = self.afl(k, ?i)] += [v]			# q 	# ? 
#     pl[i_k] = (pl[i_k]<< v).send('ctr' == k && knid(v, :Array).! ? 'itself' : 'pop')	# p 	# .itself higokan monami-ya.mrb:60510200 mruby:70410200
#     pl[i_k] = (pl[i_k]<< v)['ctr' == k && knid(v, :Array).! ? 0 .. -1 : -1]	# p 	# ? 
#     pl[i_k = self.afl(k, ?i)] =
#	(pl[i_k]<< v)['ctr' == k && knid(v, :Array).! ? 0 .. -1 : -1]	# p 	# ? 
      ['ctr' == k, k = self.afl(k, ?i)][0] &&		# q 
	knid(v, :Array).! ?
#	case v when Array then true end.! ?	# higokan ? mruby 70410200
		 pl[k]<< v : pl[k] = v	# p 
.
437d
384a

.
338,339c
#      a_ = a[0 .. 2]; return a[3].map{ |v| v.nil? ? v : self.send(*a_, v)}	# r 
      a_ = a[0 .. 2]; return a[3].map{ |v| v.nil? ? v : send(*a_, v)}	# r 
#    else self.send(*a)
    else send(*a)
.
336d
330,331c
# def s__r1_eq_sr01(*a) a[0][		a[2]] ==
#			a[0][		a[1] + 1]	end
  def s__r1_eq_sr01(*a) a[0][		a[1] + 1] ==
			a[0][		a[2]]		end
.
259,261c
#  def initialize
#  end
.
236,238d
158c
#   (r - 1).times {sleep 0}; r.times {sleep  t}			# antei ?
.
155c
#   (r - 1).times {sleep 0}; GC.start; r.times {sleep	t}	# g 	# fuantei ( keisan gosa ) ?
.
133d
123c
#  def delif_c(i, a = nil)
  def delif_c(i = @@ts, a = nil)
.
98c
#  def +(i = 1)
  def +(i = 0)
.
3,4d



-- 
YAMAGUTIseisei ( str_h__namae = { :sei => "山口" , :mei => "青星" } )
http://hello.to/seisei/	mailto:seisei@.68..net	tel:081-70-5152-1104
祝 Softbank-PHS 展開期間延長



# mruby-process/src/process.c
# 
# 357a
#   mrb_define_method(mrb, mrb->kernel_module, "usleep", mrb_ker_usleep, MRB_ARGS_REQ(1));	// kimushu/mruby-sleep
# // mrb_define_method(mrb, mrb->kernel_module, "msleep", mrb_ker_msleep, MRB_ARGS_REQ(1));	// kimushu/mruby-sleep
# .
# 191a
# 
# static mrb_value
# mrb_ker_usleep(mrb_state *mrb, mrb_value self)	// kimushu/mruby-sleep
# {
#   mrb_int usecs;
#   mrb_get_args(mrb, "i", &usecs);
#   usleep(usecs);
#   return mrb_nil_value();
# }
# 
# /*
# static mrb_value
# mrb_ker_msleep(mrb_state *mrb, mrb_value self)	// kimushu/mruby-sleep	usleep yobi
# {
#   mrb_int msecs;
#   mrb_get_args(mrb, "i", &msecs);
# 
# // for (; msecs > 0; --msecs) {
# //  usleep(1000);
# // }
# // return mrb_nil_value();
# 				// IIJ , Tomoyuki Sahara , YAMAGUTIseisei
#   time_t beg; // , end;
#   struct timeval tv;
# 
#   beg = time(0);
#   tv.tv_sec = 0;		// fuyou ?
#   tv.tv_usec = msecs;
#   if (0 > select(0, 0, 0, 0, &tv)) mrb_sys_fail(mrb,
# 	"mrb_ker_msleep failed"
# //	"mrb_f_msleep failed"
#   );
#   return mrb_fixnum_value(time(0) - beg);	// float ?
# }
# */
# 
# .

<-> matsumotory/mruby-sleep # bamchoh/mruby-sleep

[toc] | [prev] | [next] | [standalone]


#23 — jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_2_0_1_0_2_5__5201020200.rb

FromYAMAGUTIseisei <seisei@hello.to>
Date2020-10-25 11:16 +0000
Subjectjit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_2_0_1_0_2_5__5201020200.rb
Message-ID<rn3n4i$nes$1@dont-email.me>
In reply to#20
1501c
#     ise[i_i_d].reject!.with_index { |fis, n|
.
1497d
1489c
      ise[i_i_s].delif_c(ts) { |pfl, n|
.
1487c
#     ise[i_i_s].reject! { |pfl|	# Inspired by : RobertDoggett ? http://microware.com/# , Professor TAKAZAWA Yosimitu http://mu.ice.uec.ac.jp/~takazawa/
.
1465a
	sl.slp(0, 0xf)

.
1401,1402c
#      ise[i_i_s]<< [0 > rg['ctr', 1] ? -rg['pc'] : rg['pc'], rg.to_a]	# p 	# cp 
      ise[i_i_s]<< [0 > rg.p ? -pcl : pcl, Rg.new(rg.to_a)]		# p 	# cp 
.
1384,1385d
1373d
1310d
1305,1306c
#     end
#      rg['pc', -1] = rg['pc'] + rou.getarg_sbx(cop)
      end && rg['pc', -1] = rg['pc'] + rou.getarg_sbx(cop)
.
1297,1303c
	! stack[rou.getarg_a(cop)] # || next
.
1288,1292c
	stack[rou.getarg_a(cop)] # || next
.
1282a
	true
.
1261d
1252d
1241d
1238,1239c
#	ri ||= true == fb || (true == fb.resume && fb = true)
	ri ||= true == fb || true == fb.resume && fb = true
.
1234d
1231d
1229d
1182c
#	callinfo.p += 1
	callinfo[0 .. 2] = [rg['sp'], rg['pc'], irep]
	callinfo.p += 3

.
1180c
#	callinfo[0] = irep
.
1177c
#	callinfo.p += 1
.
1175c
#	callinfo[0] = rg['pc']
.
1172c
#	callinfo.p += 1
.
1170c
#	callinfo[0] = rg['sp']
.
1147d
1137,1138c
	end while [true][thi]	# fuantei ? mruby:70410200 monami-ya.mrb:60510200
#	break if 0 != thi }
.
1133,1134c
	begin			# fuantei ? mruby:70410200 monami-ya.mrb:60510200
#	loop {
.
1116,1131c
#	pl.pl_es(pc1, opg.(thi).push('ctr', [sp]))	# c 
	pl.pl_es(pc1, opg.(thi).push(			# c 
		*['ctr', [sp]] + [[:ctr_s, pc1], []][thi <=> 0]))

#	if 0 == thi
#	  pl.ctr_s(pc1)
#	elsif ht <= thi
#	  thi = -1
#	end
#	thi += 1
	thi += 0 != thi && ht <= thi ? -thi : 1
.
1098,1104c
#	  when 'th'
#	    fv = [
#		-> {[thl[oi], ta.(fv[oi]), thl[oi + 1], []]},		# c t 
#		-> {(fv[oi] = ta.(fv[oi]) if oi <= ht = fv.hgt) ?	# c 
#			[thl[oi], fv[oi]] : []}
#	    ][oi <=> 0].call
	  when 'th' then fv = fvl[oi <=> 0].(oi)	# c 
.
1090,1096d
1085a
    fv = []
    fvl = [->(oi) {[thl[oi], ta.(fv[oi]), thl[oi + 1], []]},		# l 	# c 
	   ->(oi) {((oi <= ht = fv.hgt) && fv[oi] = ta.(fv[oi])) ?	# l 	# c 
		[thl[oi], fv[oi]] : []}] # .lazy

.
1084c
#    thl = @@mh_thl
    thl = mh_thl
.
1053c
#	m = fy.(m, f)	# c 
	loc.verb "#{pc.to_xeh}			#{sym}	#{rs[1]}	#{rs[0]}"
	sl.plwt(m) {m = Fiber.yield(f && 0 == m)}
.
1041c
#	1 < m && m = fy.(m, false)	# c 
.
1037c
#	  2 < m && m = fy.(m, false)	# c 
.
1030c
#	    0 > i ? (r[1] = r[0]; flg[1] = true; ~ i) : i
	    0 > i ? (flg[1] = ! ! r[1] = r[0]; ~ i) : i
.
1013,1016c
#   fy = ->(m, f) { # @Slp.slp 0
#     loc.verb "#{pc.to_xeh}			#{sym}	#{rs[1]}	#{rs[0]}"
#     Fiber.yield(f && 0 == m)
#   }
.
1003,1006c
#	((sw = sp + sz) + 0xe).step(sw, -1) {	# higokan mruby 70410200	# bbab89e7 5211410200 tmtm
	0 == s.size ? @Slp.slp(0) : # plr += lm.(	# c 
#		s[sz .. sz + (ap = (ap += ap >> 1) >> 1)]) # + (ap <=> 0)])
#	[sl.slp(0),
#	  sz.step(sz + ap -= ap >> 2) { |n| plr<< lm.(s[n])}	# p 	# c 
	  plr += lm.(s[sz .. sz + (ap = (ap += ap >> 1) >> 1)])	# + (ap <=> 0)])	# c 
#	  plr += lm.(s[sz .. sz + ap -= ap >> 2]) {r1.empty?}	# ? 	# c 
#	  plr += lm.(s[sz .. sz + ap -= ap >> 2], 'empty?')	# c 
#	].lazy.to_a[s.s.size <=> 0] # .force			# c
#	(sz + ap -= ap >> 2).downto(sz) { |n|
#	   plr<< s.ow?(n) ? nil : lm.(s[n])	# p c 
#	}
.
1000a
#	0 == m && wo.include?(r) || wo.push(r).sort!
.
992,993c
#   lm = ->(r1, &b) {yield ? r1 : imem.send(pr, *isr0, r1, mt)}	# ? 	# l 
#   lm = ->(r1, ck) {r1.send(ck) ? r1 : imem.send(pr, *isr0, r1, mt)}	# l 
.
989,990c
    lm = ->(r1) {r1 && imem.send(pr, *isr0, r1, mt)}		# l 
#   lm = ->(r1) {imem.send(pr, *isr0, r1, mt)}	# l 
.
984,986c
      ap = @@fls_w ||= 1 << sz = 3
      ap = @@fls_m ||= ((ap += (ap <<= 1) + (ap <<= 2) + (ap << 2)) >> sz) + 1 >> 1
.
981,982c
#      sz = 4; ap = @@fls_w ||= (1 << sz) - 1 - 1
##     sz = 4; @@fls_m || (ap = @@fls_w ||= (1 << sz) - 1 - 1; @@fls_w = nil)
#      sz -= 2; ap = @@fls_m ||= ((@@fls_w << sz) + @@fls_w >> sz - 1) + 1 >> 1
##      sz = nil; ap = @@fls_m
.
979a
      m = 1; wo = []
.
976c
      isr0, mt, r0, r1, sym, sy, pr = nil
.
972c
#      i = @irep
      s.irep(i = @irep)
.
970a
      sl = @Slp
.
956,959c
#  @@fls_m = 1 << @@fls_w = 3; @@fls_m = (
#    (@@fls_m += (@@fls_m <<= 1) + (@@fls_m <<= 2) + (@@fls_m << 2)) >> @@fls_w
#	) + 1 >> 1
#  @@fls_w = nil
  @@fls_w = nil; @@fls_m = nil
.
951,954c
  class Fls__l
  end
.
946,947d
944c
#   r = r.map { |v| v[1] = v[-1]}	# higokan ? mruby 70410200
.
941c
#    r = Array.new(thl.size) { |n| pl[lpl.afl(thl[n], ?i)]}	# q 
.
939a
    r = [pl[lpl.afl(thl[0], ?i)]]	# q 
    r[1] = knid(pl[lpl.afl('ctr', ?i)][0], :Array) &&	# q 
      lpl.ckth(pl[lpl.afl(thl[1], ?i)], 3) ?	# q 
	pl[lpl.afl(thl[1], ?i)] : []		# t 	# q 
.
930,938c
#    thl = @@mh_thl
    thl = mh_thl
.
904c
    # 3080410200 : 5x2 ok ( gc ) : monami-ya.mrb 8270410200 813e2af8	# http://www.monami-ya.jp/
.
900c
#    thl = @@mh_thl
    thl = mh_thl
.
819c
#   'pc' == k && case v when Numeric then v == @a.assoc(k)[i] && v = -v end'	# cp 
.
791,795c
#    if a.empty?
#      @a.map { |v| v.dup}
#    else
    a.map { |v| self[v]}
  end

  def to_a
    @a.map { |v| v.dup}
.
758a

  def owc(i = @ir) i = owi?(i) && @@ow.delete_at(@@ow.index(i)) end
.
738a
  def owi?(i) @@ow.assoc(i) end

.
732,736c
#  def []=(*a)
  def []=(sp, va, pc = nil)
#p [sp, va, pc, self.object_id]
#   @@m.lock
      pp = sp + @p

#      knid(pc, :Fixnum) && (@ow[pc] && (@ow[pc].include?(pp) || (@ow.push(pp); @ow.sort!)) || @ow[pc] = [pp])
      @s[pp] = va
#   @@m.unlock
#   a
  end

  def irep(i)
    owi?(i) || (@@ow<< [i, []]; 0xf < @@ow.size && @@ow.shift; @ir = i)	# p 
.
716c
#    @p = sp; @s = s
    @p = sp; @s = s; @ir = nil
.
711c
  attr_accessor :p, :s
.
709a
  @@ow = []
.
668c
#      fpl = delif_c(ts, fpl) { |fb, n| fb.resume}
      fpl = delif_c(ts, fpl) { |fb, n| fb.resume(n)}
.
653c
#      fpl<< plw(pc) if pc && 0 <= pc	# p 
      pc && 0 <= pc && fpl<< plw(pc)	# p 
.
603,640d
601d
599c
#	Fiber.yield(flg || mx < thi)
#	m = Fiber.yield(flg || mx < thi)
#	0.step(m) { |n|
	((m >> 2) + 1).times { |n| m = Fiber.yield([flg || mx < thi][n])}
.
597a
#	0 < m && m = Fiber.yield(false)
.
593a
#	  elsif mx > idx
	  else
	    pl_es(pc, [thl[idx], th[idx]])
.
590,592c
	  if kt.call
#	  if ji_ngq ||= kt.(pc)		# c 
#	  if ji_ngq ||= plw__kt(pc)
#	    thi.step(idx) { |n| pl_es(pc, [thl[n], th[n]])}
	    0.step(idx) { |n| pl_es(pc, [thl[n], th[n]])}
.
588d
584d
580c
#	if 0 < idx && kt.call && ckth(th[idx], 2)
	if 0 < idx && ckth(th[idx], 2) && kt.call
#	if 0 < idx && ckth(th[idx], 2) && ji_ngq ||= kt.(pc)	# c 
#	if 0 < idx && ckth(th[idx], 2) && ji_ngq ||= plw__kt(pc)
.
576,577c
#    Fiber.new {		##
    Fiber.new { |m = 1|
      0 < m && Fiber.yield(false)
.
574c
#    kt = -> {ckth(pl_eg(pc, 'ctr')[0], 0)}	# l 	# sp [sp]
    kt = -> {ji_ngq ||= ckth(pl_eg(pc, 'ctr')[0], 0)}	# l 	# sp [sp]
#   kt = @@kt
.
572c
#    mx = th.hgt
.
566,568d
563c
#    th = ((idx = 0) .. thl.hgt).map { |v|
    th = ((idx = 0) .. mx = thl.hgt).map { |v|
.
558,561c
#    thl = @@mh_thl
    thl = mh_thl
#   idx = 0	##
.
554a
# def plw__kt(pc)
#   ckth(pl_eg(pc, 'ctr')[0], 0)	# sp [sp]
# end

# @@kt = ->(pc) {ckth(pl_eg(pc, 'ctr')[0], 0)}	# l 	# sp [sp]	# higokan ? mruby 70410200
.
550,552c
#	(loc = @@Loc).verb("#{pc.to_xeh}		#{a[0]}	#{a[1].to_xeh}")
#    [self.send(*a) || a[1], nil]

    a, op = a
    [self.send(a, op) || op,
	case a when Numeric then true end ||
		(loc = @@Loc).verb("#{pc.to_xeh}		#{a}	#{op.to_xeh}")]
.
544d
541,542c
#     knid(a, :Array)	?     s_id(a, pc)  :    a	# __method__(a, pc)  :    #? mruby 410200
      case a when Array then  s_id(a, pc)  else a end	# __method__(a, pc)  else #? mruby 410200
.
537c
#   (TB.dup == a || case a when Array then 0 >= a.hgt end) && (return a)
.
512a
    #	0 : ary	1 : ! ary	2 : kara ary	3 : ! kara ary
.
491,494d
481c
    aa.each_slice(2) { |k, v| send(k, v)}
.
461,478c
      knid(k, :Symbol) && (aa.push(k, v); break)
      i = self.afl(k, ?i)				# q 
#     i = loop {self.afl(k, ?i) && break}		# q 	# fuguai taisaku
      pl[i] = 'ctr' == k && ! knid(v, :Array) ? pl[i]<< v : v		# p 
#     pl[i].send(('ctr' == k && ! knid(v, :Array) ? '<<' : 'replace'), v)	# p 
##     (pl[i = self.afl(k, ?i)] += [v]).replace!{ |i|	# q 
##	i.send(case v when Numeric then 'itself' else 'pop' end)}
.
453c
    aa = []
.
435,437c
#    if 0 == n
#      pl.map! { |a| a[1]}
#    end
    0 == n && pl.map! { |a| a[1]}
.
334,336c
#      a_ = a[0 .. 2]; return a[3].map{ |v| v.nil? ? v : send(*a_, v)}	# r 
      a3 = a[3]; a3.map{ |v| v.nil? ? v : send(*a[0 .. 2], v, a[4])}
.
325,326d
164a

  def plwt(m = 1)
    sf = 2	# (@@ts >> 1) + 1
    ((m >> sf) + 1).times { |n| yield n}
  end
.
130,134c
#      n = 0
#      c = -i - 1
      n = 0; c =  i + 1
      while 0 < c -= 1	# c += 1 < i # -e:1: non float value (TypeError) ( monami-ya.mrb:60510200 mruby:70410200 )
#	a[n] && yield(a[n], c + i) && (next a.delete_at(n)); n += 1
	a[n] && yield(a[n], i - c) && (next a.delete_at(n)); n += 1
#	(v = a[n]) && yield(v, i - c) && a.delete_at(n) || n += 1
.
122d
96d
35,36c
  @@ts = 1	# = (@@rmth >> 1) + 1	# = $$ + 1	# = 68060
#  @@mh_thl = (0 .. 1).to_a.map { |n| 'th' + n.to_xeh}
  @@mh_thl = nil

  def mh_thl
    @@mh_thl ||= (0 .. 1).to_a.map { |n| 'th' + n.to_xeh}
  end
.
16d
10c
	:ADD,	:ADDI,	:SUB,	:SUBI,	:MUL,	:DIV,	:EQ,	# :LOADF,
.



-- 
YAMAGUTIseisei ( str_h__namae = { :sei => "山口" , :mei => "青星" } )
http://hello.to/seisei/	mailto:seisei@.68..net	tel:081-70-5152-1104
祝 Softbank-PHS 展開期間延長

[toc] | [prev] | [next] | [standalone]


Page 1 of 2  [1] 2  Next page →

Back to top | Article view | tw.bbs.comp.sources


csiph-web