亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? nlx.lisp

?? 開源跨平臺Lisp編譯器
?? LISP
字號:
;;;; the definitions of VOPs used for non-local exit (THROW, lexical;;;; exit, etc.);;;; This software is part of the SBCL system. See the README file for;;;; more information.;;;;;;;; This software is derived from the CMU CL system, which was;;;; written at Carnegie Mellon University and released into the;;;; public domain. The software is in the public domain and is;;;; provided with absolutely no warranty. See the COPYING and CREDITS;;;; files for more information.(in-package "SB!VM");;; Make an environment-live stack TN for saving the SP for NLX entry.(!def-vm-support-routine make-nlx-sp-tn (env)  (physenv-live-tn   (make-representation-tn *fixnum-primitive-type* immediate-arg-scn)   env));;; Make a TN for the argument count passing location for a;;; non-local entry.(!def-vm-support-routine make-nlx-entry-arg-start-location ()  (make-wired-tn *fixnum-primitive-type* immediate-arg-scn ocfp-offset));;;; save and restoring the dynamic environment;;;;;;;; These VOPs are used in the reentered function to restore the;;;; appropriate dynamic environment. Currently we only save the;;;; CURRENT-CATCH and binding stack pointer. We don't need to;;;; save/restore the current UNWIND-PROTECT, since UNWIND-PROTECTS;;;; are implicitly processed during unwinding. If there were any;;;; additional stacks (as e.g. there was an interpreter "eval stack";;;; before sbcl-0.7.0), then this would be the place to restore the;;;; top pointers.(define-vop (save-dynamic-state)  (:results (catch :scs (descriptor-reg))            (nfp :scs (descriptor-reg))            (nsp :scs (descriptor-reg)))  (:vop-var vop)  (:generator 13    (load-symbol-value catch *current-catch-block*)    (let ((cur-nfp (current-nfp-tn vop)))      (when cur-nfp        (inst mskll cur-nfp 4 nfp)))    (inst mskll nsp-tn 4 nsp)))(define-vop (restore-dynamic-state)  (:args (catch :scs (descriptor-reg))         (nfp :scs (descriptor-reg))         (nsp :scs (descriptor-reg)))  (:vop-var vop)  (:temporary (:sc any-reg) temp)  (:generator 10    (store-symbol-value catch *current-catch-block*)    (inst mskll nsp-tn 0 temp)    (let ((cur-nfp (current-nfp-tn vop)))      (when cur-nfp        (inst bis nfp temp cur-nfp)))    (inst bis nsp temp nsp-tn)))(define-vop (current-stack-pointer)  (:results (res :scs (any-reg descriptor-reg)))  (:generator 1    (move csp-tn res)))(define-vop (current-binding-pointer)  (:results (res :scs (any-reg descriptor-reg)))  (:generator 1    (move bsp-tn res)));;;; unwind block hackery;;; Compute the address of the catch block from its TN, then store;;; into the block the current Fp, Env, Unwind-Protect, and the entry PC.(define-vop (make-unwind-block)  (:args (tn))  (:info entry-label)  (:results (block :scs (any-reg)))  (:temporary (:scs (descriptor-reg)) temp)  (:temporary (:scs (non-descriptor-reg)) ndescr)  (:generator 22    (inst lda block (* (tn-offset tn) n-word-bytes) cfp-tn)    (load-symbol-value temp *current-unwind-protect-block*)    (storew temp block unwind-block-current-uwp-slot)    (storew cfp-tn block unwind-block-current-cont-slot)    (storew code-tn block unwind-block-current-code-slot)    (inst compute-lra-from-code temp code-tn entry-label ndescr)    (storew temp block catch-block-entry-pc-slot)));;; This is like Make-Unwind-Block, except that we also store in the;;; specified tag, and link the block into the Current-Catch list.(define-vop (make-catch-block)  (:args (tn)         (tag :scs (any-reg descriptor-reg)))  (:info entry-label)  (:results (block :scs (any-reg)))  (:temporary (:scs (descriptor-reg)) temp)  (:temporary (:scs (descriptor-reg) :target block :to (:result 0)) result)  (:temporary (:scs (non-descriptor-reg)) ndescr)  (:generator 44    (inst lda result (* (tn-offset tn) n-word-bytes) cfp-tn)    (load-symbol-value temp *current-unwind-protect-block*)    (storew temp result catch-block-current-uwp-slot)    (storew cfp-tn result catch-block-current-cont-slot)    (storew code-tn result catch-block-current-code-slot)    (inst compute-lra-from-code temp code-tn entry-label ndescr)    (storew temp result catch-block-entry-pc-slot)    (storew tag result catch-block-tag-slot)    (load-symbol-value temp *current-catch-block*)    (storew temp result catch-block-previous-catch-slot)    (store-symbol-value result *current-catch-block*)    (move result block)));;; Just set the current unwind-protect to TN's address. This;;; instantiates an unwind block as an unwind-protect.(define-vop (set-unwind-protect)  (:args (tn))  (:temporary (:scs (descriptor-reg)) new-uwp)  (:generator 7    (inst lda new-uwp (* (tn-offset tn) n-word-bytes) cfp-tn)    (store-symbol-value new-uwp *current-unwind-protect-block*)))(define-vop (unlink-catch-block)  (:temporary (:scs (any-reg)) block)  (:policy :fast-safe)  (:translate %catch-breakup)  (:generator 17    (load-symbol-value block *current-catch-block*)    (loadw block block catch-block-previous-catch-slot)    (store-symbol-value block *current-catch-block*)))(define-vop (unlink-unwind-protect)  (:temporary (:scs (any-reg)) block)  (:policy :fast-safe)  (:translate %unwind-protect-breakup)  (:generator 17    (load-symbol-value block *current-unwind-protect-block*)    (loadw block block unwind-block-current-uwp-slot)    (store-symbol-value block *current-unwind-protect-block*)));;;; NLX entry VOPs(define-vop (nlx-entry)  (:args (sp) ; Note: we can't list an sc-restriction, 'cause any load vops              ; would be inserted before the LRA.         (start)         (count))  (:results (values :more t))  (:temporary (:scs (descriptor-reg)) move-temp)  (:temporary (:sc non-descriptor-reg) temp)  (:info label nvals)  (:save-p :force-to-stack)  (:vop-var vop)  (:generator 30    (emit-return-pc label)    (note-this-location vop :non-local-entry)    (cond ((zerop nvals))          ((= nvals 1)           (let ((no-values (gen-label)))             (move null-tn (tn-ref-tn values))             (inst beq count no-values)             (loadw (tn-ref-tn values) start)             (emit-label no-values)))          (t           (collect ((defaults))             (do ((i 0 (1+ i))                  (tn-ref values (tn-ref-across tn-ref)))                 ((null tn-ref))               (let ((default-lab (gen-label))                     (tn (tn-ref-tn tn-ref)))                 (defaults (cons default-lab tn))                 (inst move count temp)                 (inst lda count (fixnumize -1) count)                 (inst beq temp default-lab)                 (sc-case tn                          ((descriptor-reg any-reg)                           (loadw tn start i))                          (control-stack                           (loadw move-temp start i)                           (store-stack-tn tn move-temp)))))             (let ((defaulting-done (gen-label)))               (emit-label defaulting-done)               (assemble (*elsewhere*)                 (dolist (def (defaults))                   (emit-label (car def))                   (let ((tn (cdr def)))                     (sc-case tn                              ((descriptor-reg any-reg)                               (move null-tn tn))                              (control-stack                               (store-stack-tn tn null-tn)))))                 (inst br zero-tn defaulting-done))))))    (load-stack-tn csp-tn sp)))(define-vop (nlx-entry-multiple)  (:args (top :target dst) (start :target src) (count :target num))  ;; Again, no SC restrictions for the args, 'cause the loading would  ;; happen before the entry label.  (:info label)  (:temporary (:scs (any-reg) :from (:argument 0)) dst)  (:temporary (:scs (any-reg) :from (:argument 1)) src)  (:temporary (:scs (any-reg) :from (:argument 2)) num)  (:temporary (:scs (descriptor-reg)) temp)  (:results (new-start) (new-count))  (:save-p :force-to-stack)  (:vop-var vop)  (:generator 30    (emit-return-pc label)    (note-this-location vop :non-local-entry)    (let ((loop (gen-label))          (done (gen-label)))      ;; Copy args.      (load-stack-tn dst top)      (move start src)      (move count num)      ;; Establish results.      (sc-case new-start        (any-reg (move dst new-start))        (control-stack (store-stack-tn new-start dst)))      (sc-case new-count        (any-reg (inst move num new-count))        (control-stack (store-stack-tn new-count num)))      (inst beq num done)      ;; Copy stuff on stack.      (emit-label loop)      (loadw temp src)      (inst lda src n-word-bytes src)      (storew temp dst)      (inst lda num (fixnumize -1) num)      (inst lda dst n-word-bytes dst)      (inst bne num loop)      (emit-label done)      (inst move dst csp-tn))));;; This VOP is just to force the TNs used in the cleanup onto the stack.(define-vop (uwp-entry)  (:info label)  (:save-p :force-to-stack)  (:results (block) (start) (count))  (:ignore block start count)  (:vop-var vop)  (:generator 0    (emit-return-pc label)    (note-this-location vop :non-local-entry)))

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情综合在线| 色婷婷一区二区三区四区| 91日韩精品一区| 26uuu成人网一区二区三区| 99免费精品视频| 国产精品一区二区x88av| 亚洲成av人影院在线观看网| 日本一区二区三区四区在线视频 | 久久免费偷拍视频| 成a人片亚洲日本久久| 麻豆精品视频在线观看免费| 亚洲精品精品亚洲| 国产欧美一区二区精品忘忧草| 91精品黄色片免费大全| 51精品视频一区二区三区| 色婷婷综合久久久久中文| 色综合网色综合| 91免费视频大全| 91亚洲国产成人精品一区二三| 福利一区二区在线观看| 久久精品国产成人一区二区三区 | 成人app在线观看| 国产一区欧美一区| 亚洲午夜在线电影| 亚洲一级在线观看| 天天操天天色综合| 免费精品视频在线| 麻豆精品国产传媒mv男同| 男人的天堂久久精品| 老司机免费视频一区二区三区| 老鸭窝一区二区久久精品| 日本女人一区二区三区| 91一区二区三区在线播放| 91丨九色丨蝌蚪丨老版| 色噜噜狠狠成人网p站| 91无套直看片红桃| 在线观看日韩毛片| 日韩女优av电影| 国产三级一区二区三区| 亚洲麻豆国产自偷在线| 亚洲国产精品一区二区久久恐怖片| 亚洲一区二区三区中文字幕| 亚洲精品日韩专区silk| 日本不卡中文字幕| 国产福利精品导航| 91免费看`日韩一区二区| 欧美日韩高清一区二区| 欧美成人欧美edvon| 久久九九全国免费| 亚洲影院久久精品| 国产精品一二三四| 欧美性视频一区二区三区| 日韩精品自拍偷拍| 亚洲另类在线视频| 麻豆精品在线观看| 国产高清不卡二三区| 欧美视频一区在线| 日本一区二区三区久久久久久久久不 | 亚洲免费观看视频| 久久精品国产亚洲一区二区三区| av一区二区三区四区| 欧美一级片在线看| 国产精品卡一卡二卡三| 偷拍日韩校园综合在线| 成人午夜电影网站| 91精品国产综合久久久久| 久久午夜羞羞影院免费观看| 亚洲一二三四在线| 国产一区二区久久| 91一区一区三区| 久久久国产午夜精品| 日韩精品色哟哟| 色综合天天天天做夜夜夜夜做| 欧美一卡2卡3卡4卡| 国产无一区二区| 免费在线欧美视频| 欧美精品少妇一区二区三区| 午夜视频一区二区| 欧美日韩免费在线视频| 亚洲免费伊人电影| 国内精品久久久久影院色| 欧美精品一区二区精品网| 午夜影院在线观看欧美| 色先锋资源久久综合| 成人免费小视频| av电影在线观看一区| 国产欧美视频一区二区三区| 免费人成在线不卡| 久久综合久久综合九色| 在线观看免费亚洲| 亚洲另类春色校园小说| 国产v日产∨综合v精品视频| 欧美精品一区二区蜜臀亚洲| 国产一区二区网址| 国产色综合一区| 一本色道久久综合精品竹菊| 一区二区三区四区激情| 欧美三级电影精品| 婷婷综合在线观看| 精品国产伦一区二区三区观看方式| 韩国av一区二区三区四区| 久久久久久久久久久久久夜| 成人综合婷婷国产精品久久蜜臀 | 国产精品免费aⅴ片在线观看| 国产成人自拍高清视频在线免费播放| 精品福利一二区| 天天影视涩香欲综合网 | 国产美女在线观看一区| 久久亚洲综合色一区二区三区| 岛国精品在线播放| 亚洲乱码中文字幕| 欧美三级乱人伦电影| 亚洲午夜久久久久久久久电影院 | 美国三级日本三级久久99| 日韩免费福利电影在线观看| 国产精品99久久久久久有的能看| 欧美极品美女视频| 粉嫩嫩av羞羞动漫久久久 | 日韩精品高清不卡| 国产欧美精品一区二区三区四区| 欧美性色黄大片| 粉嫩av一区二区三区在线播放| 亚洲一区二区中文在线| 国产精品国产三级国产| 日韩精品一区二区三区在线观看 | 国产一区二区在线免费观看| 亚洲成a人片在线不卡一二三区| 国产日韩一级二级三级| 91麻豆精品91久久久久同性| 91蜜桃在线免费视频| 国产精品1区2区| 麻豆精品一区二区综合av| 一区二区三区久久| 国产精品久久久久9999吃药| 精品欧美一区二区久久| 91精品国产一区二区三区蜜臀| 91搞黄在线观看| 成人免费毛片片v| 国产麻豆视频精品| 国产一区二区视频在线| 日韩av中文字幕一区二区三区| 亚洲欧美日韩国产一区二区三区| 国产女人水真多18毛片18精品视频 | 久久精品av麻豆的观看方式| 亚洲卡通动漫在线| 亚洲美女精品一区| 一区二区三区精品在线观看| 17c精品麻豆一区二区免费| 国产精品天天摸av网| 久久精品视频网| 国产精品美女久久久久aⅴ| 国产亚洲欧洲一区高清在线观看| 久久网这里都是精品| 精品女同一区二区| 国产亚洲精品免费| 国产日韩欧美麻豆| 亚洲国产精品高清| 亚洲男女一区二区三区| 亚洲美女电影在线| 性欧美大战久久久久久久久| 免费人成在线不卡| 国产乱色国产精品免费视频| 国产激情视频一区二区在线观看| 成人动漫一区二区| 在线视频综合导航| 欧美一级黄色大片| 26uuu久久综合| 国产精品每日更新| 洋洋成人永久网站入口| 视频一区视频二区中文| 精品一区二区三区视频| 国产成人精品网址| 欧美怡红院视频| 欧美大度的电影原声| 欧美激情一区在线| 一区2区3区在线看| 男女激情视频一区| 成人激情小说网站| 欧美精品一二三| 久久久久久久久久电影| 亚洲黄网站在线观看| 日本在线不卡视频一二三区| 麻豆免费精品视频| 日韩视频一区二区在线观看| 精品少妇一区二区| 亚洲色图.com| 免费高清视频精品| 成人av在线资源网| 欧美一二三区在线| 国产精品成人网| 另类专区欧美蜜桃臀第一页| 色综合久久久久综合99| 日韩欧美国产一区在线观看| 一区二区三区日韩精品| 国产一区二区在线影院| 678五月天丁香亚洲综合网| 国产精品成人免费| 国产综合久久久久影院| 欧美日韩aaa| 亚洲一区二区影院|