Linux ns1.utparral.edu.mx 6.8.0-79-generic #79~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 15 16:54:53 UTC 2 x86_64
Apache/2.4.58 (Unix) OpenSSL/1.1.1w PHP/8.2.12 mod_perl/2.0.12 Perl/v5.34.1
: 10.10.1.9 | : 10.10.1.254
Cant Read [ /etc/named.conf ]
daemon
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
README
+ Create Folder
+ Create File
/
usr /
share /
guile /
2.2 /
language /
cps /
[ HOME SHELL ]
Name
Size
Permission
Action
closure-conversion.scm
35.09
KB
-rw-r--r--
compile-bytecode.scm
28.33
KB
-rw-r--r--
constructors.scm
3.71
KB
-rw-r--r--
contification.scm
18.34
KB
-rw-r--r--
cse.scm
17.17
KB
-rw-r--r--
dce.scm
14.91
KB
-rw-r--r--
effects-analysis.scm
22.37
KB
-rw-r--r--
elide-values.scm
3.36
KB
-rw-r--r--
handle-interrupts.scm
2.54
KB
-rw-r--r--
intmap.scm
28.24
KB
-rw-r--r--
intset.scm
29.58
KB
-rw-r--r--
licm.scm
13.95
KB
-rw-r--r--
optimize.scm
4.89
KB
-rw-r--r--
peel-loops.scm
12.08
KB
-rw-r--r--
primitives.scm
4.43
KB
-rw-r--r--
prune-bailouts.scm
3.12
KB
-rw-r--r--
prune-top-level-scopes.scm
2.25
KB
-rw-r--r--
reify-primitives.scm
6.75
KB
-rw-r--r--
renumber.scm
9.39
KB
-rw-r--r--
rotate-loops.scm
10.68
KB
-rw-r--r--
self-references.scm
3.22
KB
-rw-r--r--
simplify.scm
10.88
KB
-rw-r--r--
slot-allocation.scm
41.93
KB
-rw-r--r--
specialize-numbers.scm
29.3
KB
-rw-r--r--
specialize-primcalls.scm
3.97
KB
-rw-r--r--
spec.scm
1.76
KB
-rw-r--r--
split-rec.scm
7.13
KB
-rw-r--r--
type-checks.scm
3.12
KB
-rw-r--r--
type-fold.scm
17.35
KB
-rw-r--r--
types.scm
66.76
KB
-rw-r--r--
utils.scm
20.62
KB
-rw-r--r--
verify.scm
10.52
KB
-rw-r--r--
with-cps.scm
5.72
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : specialize-primcalls.scm
;;; Continuation-passing style (CPS) intermediate language (IL) ;; Copyright (C) 2013, 2014, 2015 Free Software Foundation, Inc. ;;;; This library is free software; you can redistribute it and/or ;;;; modify it under the terms of the GNU Lesser General Public ;;;; License as published by the Free Software Foundation; either ;;;; version 3 of the License, or (at your option) any later version. ;;;; ;;;; This library is distributed in the hope that it will be useful, ;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;;;; Lesser General Public License for more details. ;;;; ;;;; You should have received a copy of the GNU Lesser General Public ;;;; License along with this library; if not, write to the Free Software ;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ;;; Commentary: ;;; ;;; Some bytecode operations can encode an immediate as an operand. ;;; This pass tranforms generic primcalls to these specialized ;;; primcalls, if possible. ;;; ;;; Code: (define-module (language cps specialize-primcalls) #:use-module (ice-9 match) #:use-module (language cps) #:use-module (language cps utils) #:use-module (language cps intmap) #:export (specialize-primcalls)) (define (specialize-primcalls conts) (let ((constants (compute-constant-values conts))) (define (u6? var) (let ((val (intmap-ref constants var (lambda (_) #f)))) (and (exact-integer? val) (<= 0 val 63)))) (define (u8? var) (let ((val (intmap-ref constants var (lambda (_) #f)))) (and (exact-integer? val) (<= 0 val 255)))) (define (u64? var) (let ((val (intmap-ref constants var (lambda (_) #f)))) (and (exact-integer? val) (<= 0 val #xffffFFFFffffFFFF)))) (define (s64? var) (let ((val (intmap-ref constants var (lambda (_) #f)))) (and (exact-integer? val) (<= (- #x8000000000000000) val #x7fffFFFFffffFFFF)))) (define (f64? var) (let ((val (intmap-ref constants var (lambda (_) #f)))) (and (number? val) (inexact? val) (real? val)))) (define (specialize-primcall name args) (define (rename name) (build-exp ($primcall name args))) (match (cons name args) (('make-vector (? u8? n) init) (rename 'make-vector/immediate)) (('vector-ref v (? u8? n)) (rename 'vector-ref/immediate)) (('vector-set! v (? u8? n) x) (rename 'vector-set!/immediate)) (('allocate-struct v (? u8? n)) (rename 'allocate-struct/immediate)) (('struct-ref s (? u8? n)) (rename 'struct-ref/immediate)) (('struct-set! s (? u8? n) x) (rename 'struct-set!/immediate)) (('add x (? u8? y)) (build-exp ($primcall 'add/immediate (x y)))) (('add (? u8? x) y) (build-exp ($primcall 'add/immediate (y x)))) (('sub x (? u8? y)) (build-exp ($primcall 'sub/immediate (x y)))) (('uadd x (? u8? y)) (build-exp ($primcall 'uadd/immediate (x y)))) (('uadd (? u8? x) y) (build-exp ($primcall 'uadd/immediate (y x)))) (('usub x (? u8? y)) (build-exp ($primcall 'usub/immediate (x y)))) (('umul x (? u8? y)) (build-exp ($primcall 'umul/immediate (x y)))) (('umul (? u8? x) y) (build-exp ($primcall 'umul/immediate (y x)))) (('ursh x (? u6? y)) (build-exp ($primcall 'ursh/immediate (x y)))) (('ulsh x (? u6? y)) (build-exp ($primcall 'ulsh/immediate (x y)))) (('scm->f64 (? f64?)) (rename 'load-f64)) (('scm->u64 (? u64?)) (rename 'load-u64)) (('scm->u64/truncate (? u64?)) (rename 'load-u64)) (('scm->s64 (? s64?)) (rename 'load-s64)) (_ #f))) (intmap-map (lambda (label cont) (match cont (($ $kargs names vars ($ $continue k src ($ $primcall name args))) (let ((exp* (specialize-primcall name args))) (if exp* (build-cont ($kargs names vars ($continue k src ,exp*))) cont))) (_ cont))) conts)))
Close