è¿æ¯æ²¡æå åç§declareççŒè¯åç代ç ïŒä»¥åçŒè¯è¿çšã
* (load (compile-file "swapview.lisp"))
; compiling file "/home/yoga13/tmp/swapview.lisp" (written 08 JAN 2015
11:53:02 AM):
; compiling (DEFUN NUMBER-STRING-P ...)
; compiling (DEFUN PATH-CHECK ...)
; compiling (DEFUN GET-SWAP-SIZE ...)
; compiling (DEFUN CONVERT-SIZE ...)
; compiling (DEFUN PRINT-RESULT ...)
; compiling (DEFUN GET-PROCESS-ID ...)
; compiling (DEFUN GET-CMDLINE ...)
; compiling (DEFUN PROCESS ...)
; compiling (DEFUN MAIN ...)
; /home/yoga13/tmp/swapview.fasl written
; compilation finished in 0:00:00.067
T
* (disassemble 'number-string-p)
; disassembly for NUMBER-STRING-P
; Size: 236 bytes. Origin: #x100450AC4D
; C4D: 498B4C2460 MOV RCX, [R12+96] ;
thread.binding-stack-pointer
;
no-arg-parsing entry point
; C52: 48894DF8 MOV [RBP-8], RCX
; C56: 488B55F0 MOV RDX, [RBP-16]
; C5A: 4883EC18 SUB RSP, 24
; C5E: 48896C2408 MOV [RSP+8], RBP
; C63: 488D6C2408 LEA RBP, [RSP+8]
; C68: B902000000 MOV ECX, 2
; C6D: FF1425480A1020 CALL QWORD PTR [#x20100A48] ; LENGTH
; C74: 4C8BC2 MOV R8, RDX
; C77: 4C8945E8 MOV [RBP-24], R8
; C7B: 488D5C24F0 LEA RBX, [RSP-16]
; C80: 4883EC18 SUB RSP, 24
; C84: 488B55F0 MOV RDX, [RBP-16]
; C88: 488B3D61FFFFFF MOV RDI, [RIP-159] ;
:JUNK-ALLOWED
; C8F: BE4F001020 MOV ESI, 537919567 ; T
; C94: 488B055DFFFFFF MOV RAX, [RIP-163] ;
#<FDEFINITION for PARSE-INTEGER>
; C9B: B906000000 MOV ECX, 6
; CA0: 48892B MOV [RBX], RBP
; CA3: 488BEB MOV RBP, RBX
; CA6: FF5009 CALL QWORD PTR [RAX+9]
; CA9: 4C8B45E8 MOV R8, [RBP-24]
; CAD: 488BDA MOV RBX, RDX
; CB0: 49896C2440 MOV [R12+64], RBP ;
thread.pseudo-atomic-bits
; CB5: 4D8B5C2418 MOV R11, [R12+24] ;
thread.alloc-region
; CBA: 498D5320 LEA RDX, [R11+32]
; CBE: 493B542420 CMP RDX, [R12+32]
; CC3: 7760 JNBE L2
; CC5: 4989542418 MOV [R12+24], RDX ;
thread.alloc-region
; CCA: 498D5307 LEA RDX, [R11+7]
; CCE: L0: 488BC2 MOV RAX, RDX
; CD1: 488958F9 MOV [RAX-7], RBX
; CD5: 4883C010 ADD RAX, 16
; CD9: 488940F1 MOV [RAX-15], RAX
; CDD: 488978F9 MOV [RAX-7], RDI
; CE1: 48C7400117001020 MOV QWORD PTR [RAX+1], 537919511
; CE9: 49316C2440 XOR [R12+64], RBP ;
thread.pseudo-atomic-bits
; CEE: 7402 JEQ L1
; CF0: CC09 BREAK 9 ; pending
interrupt trap
; CF2: L1: 488B4A01 MOV RCX, [RDX+1]
; CF6: 8D41F9 LEA EAX, [RCX-7]
; CF9: A80F TEST AL, 15
; CFB: 7537 JNE L3
; CFD: 488B79F9 MOV RDI, [RCX-7]
; D01: 498BD0 MOV RDX, R8
; D04: B929040020 MOV ECX, 536871977 ; GENERIC-=
; D09: FFD1 CALL RCX
; D0B: BA17001020 MOV EDX, 537919511
; D10: 41BB4F001020 MOV R11D, 537919567 ; T
; D16: 490F44D3 CMOVEQ RDX, R11
; D1A: 488BE5 MOV RSP, RBP
; D1D: F8 CLC
; D1E: 5D POP RBP
; D1F: C3 RET
; D20: CC0A BREAK 10 ; error trap
; D22: 02 BYTE #X02
; D23: 19 BYTE #X19 ;
INVALID-ARG-COUNT-ERROR
; D24: 9A BYTE #X9A ; RCX
; D25: L2: 6A20 PUSH 32
; D27: BAA0824200 MOV EDX, 4358816 ; alloc_tramp
; D2C: FFD2 CALL RDX
; D2E: 5A POP RDX
; D2F: 80CA07 OR DL, 7
; D32: EB9A JMP L0
; D34: L3: CC0A BREAK 10 ; error trap
; D36: 02 BYTE #X02
; D37: 02 BYTE #X02 ;
OBJECT-NOT-LIST-ERROR
; D38: 9B BYTE #X9B ; RCX
NIL
* (disassemble 'path-check)
; disassembly for PATH-CHECK
; Size: 351 bytes. Origin: #x100450BB2D
; B2D: 498B4C2460 MOV RCX, [R12+96] ;
thread.binding-stack-pointer
;
no-arg-parsing entry point
; B32: 48894DF8 MOV [RBP-8], RCX
; B36: 488D5C24F0 LEA RBX, [RSP-16]
; B3B: 4883EC20 SUB RSP, 32
; B3F: BA492F0000 MOV EDX, 12105
; B44: 488B7DE8 MOV RDI, [RBP-24]
; B48: 488B3541FFFFFF MOV RSI, [RIP-191] ; :FROM-END
; B4F: 48C743F04F001020 MOV QWORD PTR [RBX-16], 537919567 ; T
; B57: 488B053AFFFFFF MOV RAX, [RIP-198] ;
#<FDEFINITION for POSITION>
; B5E: B908000000 MOV ECX, 8
; B63: 48892B MOV [RBX], RBP
; B66: 488BEB MOV RBP, RBX
; B69: FF5009 CALL QWORD PTR [RAX+9]
; B6C: 488BF2 MOV RSI, RDX
; B6F: 488D5C24F0 LEA RBX, [RSP-16]
; B74: 4883EC18 SUB RSP, 24
; B78: 488B55E8 MOV RDX, [RBP-24]
; B7C: BF0C000000 MOV EDI, 12
; B81: 488B0518FFFFFF MOV RAX, [RIP-232] ;
#<FDEFINITION for SUBSEQ>
; B88: B906000000 MOV ECX, 6
; B8D: 48892B MOV [RBX], RBP
; B90: 488BEB MOV RBP, RBX
; B93: FF5009 CALL QWORD PTR [RAX+9]
; B96: 488D5C24F0 LEA RBX, [RSP-16]
; B9B: 4883EC18 SUB RSP, 24
; B9F: 488B0502FFFFFF MOV RAX, [RIP-254] ;
#<FDEFINITION for NUMBER-STRING-P>
; BA6: B902000000 MOV ECX, 2
; BAB: 48892B MOV [RBX], RBP
; BAE: 488BEB MOV RBP, RBX
; BB1: FF5009 CALL QWORD PTR [RAX+9]
; BB4: 480F42E3 CMOVB RSP, RBX
; BB8: 4881FA17001020 CMP RDX, 537919511
; BBF: 0F85A6000000 JNE L4
; BC5: L0: 4881FA17001020 CMP RDX, 537919511
; BCC: 750B JNE L2
; BCE: BA17001020 MOV EDX, 537919511
; BD3: L1: 488BE5 MOV RSP, RBP
; BD6: F8 CLC
; BD7: 5D POP RBP
; BD8: C3 RET
; BD9: L2: 488D5C24F0 LEA RBX, [RSP-16]
; BDE: 4883EC18 SUB RSP, 24
; BE2: 488B55E8 MOV RDX, [RBP-24]
; BE6: 488B3DC3FEFFFF MOV RDI, [RIP-317] ; "smaps"
; BED: 488B05C4FEFFFF MOV RAX, [RIP-316] ;
#<FDEFINITION for SB-KERNEL:%CONCATENATE-TO-STRING>
; BF4: B904000000 MOV ECX, 4
; BF9: 48892B MOV [RBX], RBP
; BFC: 488BEB MOV RBP, RBX
; BFF: FF5009 CALL QWORD PTR [RAX+9]
; C02: 488D5C24F0 LEA RBX, [RSP-16]
; C07: 4883EC18 SUB RSP, 24
; C0B: 488B05AEFEFFFF MOV RAX, [RIP-338] ;
#<FDEFINITION for PROBE-FILE>
; C12: B902000000 MOV ECX, 2
; C17: 48892B MOV [RBX], RBP
; C1A: 488BEB MOV RBP, RBX
; C1D: FF5009 CALL QWORD PTR [RAX+9]
; C20: 4881FA17001020 CMP RDX, 537919511
; C27: 7507 JNE L3
; C29: BA17001020 MOV EDX, 537919511
; C2E: EBA3 JMP L1
; C30: L3: 488D5C24F0 LEA RBX, [RSP-16]
; C35: 4883EC18 SUB RSP, 24
; C39: 488B55E8 MOV RDX, [RBP-24]
; C3D: 488B3D84FEFFFF MOV RDI, [RIP-380] ; "cmdline"
; C44: 488B056DFEFFFF MOV RAX, [RIP-403] ;
#<FDEFINITION for SB-KERNEL:%CONCATENATE-TO-STRING>
; C4B: B904000000 MOV ECX, 4
; C50: 48892B MOV [RBX], RBP
; C53: 488BEB MOV RBP, RBX
; C56: FF5009 CALL QWORD PTR [RAX+9]
; C59: 488B0560FEFFFF MOV RAX, [RIP-416] ;
#<FDEFINITION for PROBE-FILE>
; C60: B902000000 MOV ECX, 2
; C65: FF7508 PUSH QWORD PTR [RBP+8]
; C68: FF6009 JMP QWORD PTR [RAX+9]
; C6B: L4: 4881FA4F001020 CMP RDX, 537919567
; C72: 0F844DFFFFFF JEQ L0
; C78: 488B0551FEFFFF MOV RAX, [RIP-431] ; '(MEMBER
NIL T)
; C7F: CC0A BREAK 10 ; error trap
; C81: 05 BYTE #X05
; C82: 20 BYTE #X20 ;
OBJECT-NOT-TYPE-ERROR
; C83: FE1B01 BYTE #XFE, #X1B, #X01 ; RDX
; C86: 1B BYTE #X1B ; RAX
; C87: CC0A BREAK 10 ; error trap
; C89: 02 BYTE #X02
; C8A: 19 BYTE #X19 ;
INVALID-ARG-COUNT-ERROR
; C8B: 9A BYTE #X9A ; RCX
;-------------------------------------------------------------------------------------------------------------------
è¿æ¯çŽæ¥å»æåå·ä»¥å¯çšâäŒåâç代ç ïŒä»¥åçŒè¯è¿çšã
å¯ä»¥çåºïŒå°œç®¡æ åéé¢å¹¶æ²¡æ诎å¿
须䞺é床äœäŒåïŒå³äŸ¿äœ è¿ä¹åäºoptimizeä¹æ¯åŠæ€ïŒïŒäœæ¯å¯¹äºSBCLæ¥è¯ŽïŒäœ çoptimizeè¿æ¯èµ·äœçšäºãåœç¶ïŒäœ çè¿äžªdeclaimçæææ¯æå¯èœåšè¿äžªæ件çŒè¯ä¹åè¿ååšçïŒè³äºSBCLæ¯åŠè¿ä¹åïŒé£å°±äžæž
æ¥äºã
çŒè¯è¿çšäžïŒSBCLå·²ç»åè¯äœ äºäžäºæ æ³äŒåçåå ã
* (load (compile-file "swapview.lisp"))
; compiling file "/home/yoga13/tmp/swapview.lisp" (written 08 JAN 2015
01:20:10 PM):
; compiling (DECLAIM (OPTIMIZE SPEED))
; compiling (DEFUN NUMBER-STRING-P ...)
; file: /home/yoga13/tmp/swapview.lisp
; in: DEFUN NUMBER-STRING-P
; (= (LENGTH STR)
; (SECOND (MULTIPLE-VALUE-LIST (PARSE-INTEGER STR :JUNK-ALLOWED T))))
;
; note: unable to open code because: The operands might not be the same
type.
è¿éæ¯è¯ŽïŒ=ç䞀䞪åæ°çå
·äœç±»åæ æ³ç¡®å®ïŒæ以åªèœççå»è°çš = è¿äžªåœæ°ïŒå
¶å®å·²ç»è¢«æ¿æ¢æ GENERIC-= äºïŒã
è¿éå
¶å®åªæäœ èªå·±ç¥é第äºäžªåæ°å¿
ç¶æ¯integerïŒæä»¥äœ å¯ä»¥èªå·±æ¥æå®ïŒæ¯æ¹è¯ŽïŒ(the integer (second
(multiple-value-list (parse-integer str :junk-allowed t))))))ã
å
¶å®äœ 代ç éçdeclareä¹æé®é¢ãparse-integerèŠæ±çstræ¯stringç±»åïŒèäžæ¯(simple-array
character)ïŒè¿äž€äžªç±»åæ¯äžåçãè¿å¥œSBCLéçšççç¥æ¯âäžç²ç®çžä¿¡äœ åçç±»åâã
å®é
äžïŒè°çšå°number-string-pçåªæäžäžªåœæ°path-checkïŒæ以æ们ä¹æ¥ççè°çšå°çè¿äžªå°æ¹ã
; compiling (DEFUN PATH-CHECK ...)
; file: /home/yoga13/tmp/swapview.lisp
; in: DEFUN PATH-CHECK
; (POSITION #\/ PATH :FROM-END T)
;
; note: unable to
; optimize
; due to type uncertainty:
; The second argument is a SEQUENCE, not a (OR CONS NULL VECTOR).
position对pathè¿äžªåæ°çèŠæ±æ¯sequenceç±»åïŒå®é
äžåŠæäžæ¯proper
sequenceçè¯äŒåŒåžžïŒãäœ è¿é没ææå®ç±»åïŒç»äœ äœè¿ç§å讟已ç»åŸå¥œäºïŒäŒ°è®¡å·²ç»åšå«å€æç»å
¶å®äžé 谱类åäºïŒãäœæ¯ïŒåŠæäœ èœç¡®ä¿å®é
ç±»åçè¯ïŒé£ä¹å°±å¯ä»¥äŒåãsequenceæ¯äžäžªæ¯èŸå€§çç±»äºã
; (SUBSEQ PATH 6 (POSITION #\/ PATH :FROM-END T))
;
; note: unable to
; optimize
; due to type uncertainty:
; The first argument is a SEQUENCE, not a VECTOR.
;
; note: unable to
; optimize
; due to type uncertainty:
; The first argument is a SEQUENCE, not a LIST.
;
; note: unable to
; optimize
; due to type uncertainty:
; The first argument is a SEQUENCE, not a SB-KERNEL:EXTENDED-SEQUENCE.
åäžãäžè¿è¿äžªsubseqçç»ææ¯èŠäŒ éç»number-string-pçãæçæµè¿éè°çšnumber-string-pçæ¶åå€å€å°å°èŠåäžäºç±»åçžå
³çé¢å€æäœã
äžé¢çå°±äžè¯Žäºã
; compiling (DEFUN GET-SWAP-SIZE ...)
; file: /home/yoga13/tmp/swapview.lisp
; in: DEFUN GET-SWAP-SIZE
; (SEARCH "Swap" LINE)
;
; note: unable to
; open code
; due to type uncertainty:
; The second argument is a SEQUENCE, not a VECTOR.
; (POSITION #\: LINE)
;
; note: unable to
; optimize
; due to type uncertainty:
; The second argument is a (OR CONS VECTOR
; SB-KERNEL:EXTENDED-SEQUENCE), not a (OR
CONS
;
NULL
;
VECTOR).
; (SUBSEQ LINE (1+ (POSITION #\: LINE)))
;
; note: unable to
; optimize
; due to type uncertainty:
; The first argument is a (OR CONS VECTOR
; SB-KERNEL:EXTENDED-SEQUENCE), not a VECTOR.
;
; note: unable to
; optimize
; due to type uncertainty:
; The first argument is a (OR CONS VECTOR
; SB-KERNEL:EXTENDED-SEQUENCE), not a LIST.
;
; note: unable to
; optimize
; due to type uncertainty:
; The first argument is a (OR CONS VECTOR
; SB-KERNEL:EXTENDED-SEQUENCE), not a
SB-KERNEL:EXTENDED-SEQUENCE.
; (LOOP FOR LINE = (READ-LINE STREAM NIL NIL)
; WHILE LINE
; WHEN (SEARCH "Swap" LINE)
; SUMMING (PARSE-INTEGER (SUBSEQ LINE (1+ (POSITION #\: LINE)))
; :JUNK-ALLOWED T))
; --> BLOCK LET SB-LOOP::WITH-SUM-COUNT LET SB-LOOP::LOOP-BODY TAGBODY IF
SETQ
; --> THE
; ==>
; (+ #:LOOP-SUM-448
; (PARSE-INTEGER (SUBSEQ LINE (1+ (POSITION #\: LINE))) :JUNK-ALLOWED
T))
;
; note: forced to do GENERIC-+ (cost 10)
; unable to do inline fixnum arithmetic (cost 2) because:
; The first argument is a NUMBER, not a FIXNUM.
; The second argument is a (OR INTEGER NULL), not a FIXNUM.
; The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM
&REST T).
; unable to do inline (signed-byte 64) arithmetic (cost 5) because:
; The first argument is a NUMBER, not a (SIGNED-BYTE 64).
; The second argument is a (OR INTEGER NULL), not a (SIGNED-BYTE 64).
; The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES
(SIGNED-BYTE 64)
; &REST T).
; etc.
; compiling (DEFUN CONVERT-SIZE ...)
; file: /home/yoga13/tmp/swapview.lisp
; in: DEFUN CONVERT-SIZE
; (> SIZE 1048576)
;
; note: unable to
; open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
; The first argument is a REAL, not a FLOAT.
; (/ SIZE 1048576)
;
; note: unable to
; convert x/2^k to shift
; due to type uncertainty:
; The first argument is a REAL, not a INTEGER.
; (> SIZE 1024)
;
; note: unable to
; open-code FLOAT to RATIONAL comparison
; due to type uncertainty:
; The first argument is a REAL, not a FLOAT.
; (/ SIZE 1024)
;
; note: unable to
; convert x/2^k to shift
; due to type uncertainty:
; The first argument is a REAL, not a INTEGER.
; (> SIZE 1048576)
;
; note: forced to do GENERIC-> (cost 10)
; unable to do inline fixnum comparison (cost 3) because:
; The first argument is a T, not a FIXNUM.
; unable to do inline fixnum comparison (cost 4) because:
; The first argument is a T, not a FIXNUM.
; etc.
; (> SIZE 1024)
;
; note: forced to do GENERIC-> (cost 10)
; unable to do inline fixnum comparison (cost 3) because:
; The first argument is a REAL, not a FIXNUM.
; unable to do inline fixnum comparison (cost 4) because:
; The first argument is a REAL, not a FIXNUM.
; etc.
; compiling (DEFUN PRINT-RESULT ...)
; file: /home/yoga13/tmp/swapview.lisp
; in: DEFUN PRINT-RESULT
; (LOOP FOR ITEM IN LIS
; SUMMING (SECOND ITEM) INTO TOTAL
; DO (FORMAT T FORMAT-STRING (FIRST ITEM) (CONVERT-SIZE (SECOND
ITEM))
; (THIRD ITEM))
; FINALLY ...)
; --> BLOCK LET SB-LOOP::WITH-SUM-COUNT LET SB-LOOP::LOOP-BODY TAGBODY SETQ
THE
; ==>
; (+ TOTAL (SECOND ITEM))
;
; note: forced to do GENERIC-+ (cost 10)
; unable to do inline float arithmetic (cost 2) because:
; The first argument is a NUMBER, not a DOUBLE-FLOAT.
; The second argument is a T, not a DOUBLE-FLOAT.
; The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES
DOUBLE-FLOAT
; &REST T).
; unable to do inline float arithmetic (cost 2) because:
; The first argument is a NUMBER, not a SINGLE-FLOAT.
; The second argument is a T, not a SINGLE-FLOAT.
; The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES
SINGLE-FLOAT
; &REST T).
; etc.
; compiling (DEFUN GET-PROCESS-ID ...)
; file: /home/yoga13/tmp/swapview.lisp
; in: DEFUN GET-PROCESS-ID
; (POSITION #\/ PATH :FROM-END T)
;
; note: unable to
; optimize
; due to type uncertainty:
; The second argument is a SEQUENCE, not a (OR CONS NULL VECTOR).
; (SUBSEQ PATH 6 (POSITION #\/ PATH :FROM-END T))
;
; note: unable to
; optimize
; due to type uncertainty:
; The first argument is a SEQUENCE, not a VECTOR.
;
; note: unable to
; optimize
; due to type uncertainty:
; The first argument is a SEQUENCE, not a LIST.
;
; note: unable to
; optimize
; due to type uncertainty:
; The first argument is a SEQUENCE, not a SB-KERNEL:EXTENDED-SEQUENCE.
; compiling (DEFUN GET-CMDLINE ...)
; compiling (DEFUN PROCESS ...)
; compiling (DEFUN MAIN ...)
; file: /home/yoga13/tmp/swapview.lisp
; in: DEFUN MAIN
; (SORT RESULT-LIST #'< :KEY #'SECOND)
;
; note: unable to
; optimize
; due to type uncertainty:
; The first argument is a SEQUENCE, not a LIST.
;
; compilation unit finished
; printed 23 notes
; /home/yoga13/tmp/swapview.fasl written
; compilation finished in 0:00:00.241
T
* (disassemble 'number-string-p)
; disassembly for NUMBER-STRING-P
; Size: 258 bytes. Origin: #x1005BE61D6
; 1D6: 48895DF0 MOV [RBP-16], RBX ;
no-arg-parsing entry point
; 1DA: 488D7424F0 LEA RSI, [RSP-16]
; 1DF: 4883EC18 SUB RSP, 24
; 1E3: 488BD3 MOV RDX, RBX
; 1E6: 488B052BFFFFFF MOV RAX, [RIP-213] ;
#<FDEFINITION for SB-KERNEL:SEQUENCEP>
; 1ED: B902000000 MOV ECX, 2
; 1F2: 48892E MOV [RSI], RBP
; 1F5: 488BEE MOV RBP, RSI
; 1F8: FF5009 CALL QWORD PTR [RAX+9]
; 1FB: 488B5DF0 MOV RBX, [RBP-16]
; 1FF: 4881FA17001020 CMP RDX, 537919511
; 206: 0F84AC000000 JEQ L2
; 20C: 4C8B4BF9 MOV R9, [RBX-7]
; 210: 4C894DF8 MOV [RBP-8], R9
; 214: 4C8D4424F0 LEA R8, [RSP-16]
; 219: 4883EC18 SUB RSP, 24
; 21D: 488BD3 MOV RDX, RBX
; 220: 488B3DF9FEFFFF MOV RDI, [RIP-263] ;
:JUNK-ALLOWED
; 227: BE4F001020 MOV ESI, 537919567 ; T
; 22C: 488B05F5FEFFFF MOV RAX, [RIP-267] ;
#<FDEFINITION for PARSE-INTEGER>
; 233: B906000000 MOV ECX, 6
; 238: 498928 MOV [R8], RBP
; 23B: 498BE8 MOV RBP, R8
; 23E: FF5009 CALL QWORD PTR [RAX+9]
; 241: 4C8B4DF8 MOV R9, [RBP-8]
; 245: 488BDA MOV RBX, RDX
; 248: 49896C2440 MOV [R12+64], RBP ;
thread.pseudo-atomic-bits
; 24D: 4D8B5C2418 MOV R11, [R12+24] ;
thread.alloc-region
; 252: 498D4B20 LEA RCX, [R11+32]
; 256: 493B4C2420 CMP RCX, [R12+32]
; 25B: 7767 JNBE L3
; 25D: 49894C2418 MOV [R12+24], RCX ;
thread.alloc-region
; 262: 498D4B07 LEA RCX, [R11+7]
; 266: L0: 488BC1 MOV RAX, RCX
; 269: 488958F9 MOV [RAX-7], RBX
; 26D: 4883C010 ADD RAX, 16
; 271: 488940F1 MOV [RAX-15], RAX
; 275: 488978F9 MOV [RAX-7], RDI
; 279: 48C7400117001020 MOV QWORD PTR [RAX+1], 537919511
; 281: 49316C2440 XOR [R12+64], RBP ;
thread.pseudo-atomic-bits
; 286: 7402 JEQ L1
; 288: CC09 BREAK 9 ; pending
interrupt trap
; 28A: L1: 488B4901 MOV RCX, [RCX+1]
; 28E: 8D41F9 LEA EAX, [RCX-7]
; 291: A80F TEST AL, 15
; 293: 753E JNE L4
; 295: 488B79F9 MOV RDI, [RCX-7]
; 299: 498BD1 MOV RDX, R9
; 29C: B929040020 MOV ECX, 536871977 ; GENERIC-=
; 2A1: FFD1 CALL RCX
; 2A3: BA17001020 MOV EDX, 537919511
; 2A8: 41BB4F001020 MOV R11D, 537919567 ; T
; 2AE: 490F44D3 CMOVEQ RDX, R11
; 2B2: 488BE5 MOV RSP, RBP
; 2B5: F8 CLC
; 2B6: 5D POP RBP
; 2B7: C3 RET
; 2B8: L2: CC0A BREAK 10 ; error trap
; 2BA: 04 BYTE #X04
; 2BB: 55 BYTE #X55 ;
OBJECT-NOT-SEQUENCE-ERROR
; 2BC: FE9B01 BYTE #XFE, #X9B, #X01 ; RBX
; 2BF: CC0A BREAK 10 ; error trap
; 2C1: 02 BYTE #X02
; 2C2: 19 BYTE #X19 ;
INVALID-ARG-COUNT-ERROR
; 2C3: 9A BYTE #X9A ; RCX
; 2C4: L3: 6A20 PUSH 32
; 2C6: B9A0824200 MOV ECX, 4358816 ; alloc_tramp
; 2CB: FFD1 CALL RCX
; 2CD: 59 POP RCX
; 2CE: 80C907 OR CL, 7
; 2D1: EB93 JMP L0
; 2D3: L4: CC0A BREAK 10 ; error trap
; 2D5: 02 BYTE #X02
; 2D6: 02 BYTE #X02 ;
OBJECT-NOT-LIST-ERROR
; 2D7: 9B BYTE #X9B ; RCX
NIL
* (disassemble 'path-check)
; disassembly for PATH-CHECK
; Size: 1897 bytes. Origin: #x1005BE70CF
; 0CF: 4C896DE8 MOV [RBP-24], R13 ;
no-arg-parsing entry point
; 0D3: 488D5C24F0 LEA RBX, [RSP-16]
; 0D8: 4883EC20 SUB RSP, 32
; 0DC: BA492F0000 MOV EDX, 12105
; 0E1: 498BFD MOV RDI, R13
; 0E4: 488B3545FFFFFF MOV RSI, [RIP-187] ; :FROM-END
; 0EB: 48C743F04F001020 MOV QWORD PTR [RBX-16], 537919567 ; T
; 0F3: 488B053EFFFFFF MOV RAX, [RIP-194] ;
#<FDEFINITION for POSITION>
; 0FA: B908000000 MOV ECX, 8
; 0FF: 48892B MOV [RBX], RBP
; 102: 488BEB MOV RBP, RBX
; 105: FF5009 CALL QWORD PTR [RAX+9]
; 108: 4C8B6DE8 MOV R13, [RBP-24]
; 10C: 488BF2 MOV RSI, RDX
; 10F: 488D5C24F0 LEA RBX, [RSP-16]
; 114: 4883EC18 SUB RSP, 24
; 118: 498BD5 MOV RDX, R13
; 11B: BF0C000000 MOV EDI, 12
; 120: 488B0519FFFFFF MOV RAX, [RIP-231] ;
#<FDEFINITION for SUBSEQ>
; 127: B906000000 MOV ECX, 6
; 12C: 48892B MOV [RBX], RBP
; 12F: 488BEB MOV RBP, RBX
; 132: FF5009 CALL QWORD PTR [RAX+9]
; 135: 488D5C24F0 LEA RBX, [RSP-16]
; 13A: 4883EC18 SUB RSP, 24
; 13E: 488B0503FFFFFF MOV RAX, [RIP-253] ;
#<FDEFINITION for NUMBER-STRING-P>
; 145: B902000000 MOV ECX, 2
; 14A: 48892B MOV [RBX], RBP
; 14D: 488BEB MOV RBP, RBX
; 150: FF5009 CALL QWORD PTR [RAX+9]
; 153: 480F42E3 CMOVB RSP, RBX
; 157: 4C8B6DE8 MOV R13, [RBP-24]
; 15B: 4881FA17001020 CMP RDX, 537919511
; 162: 0F8529060000 JNE L46
; 168: L0: 4881FA17001020 CMP RDX, 537919511
; 16F: 750B JNE L2
; 171: BA17001020 MOV EDX, 537919511
; 176: L1: 488BE5 MOV RSP, RBP
; 179: F8 CLC
; 17A: 5D POP RBP
; 17B: C3 RET
; 17C: L2: 4D8BC5 MOV R8, R13
; 17F: 418D45F1 LEA EAX, [R13-15]
; 183: A80F TEST AL, 15
; 185: 750E JNE L3
; 187: 418B45F1 MOV EAX, [R13-15]
; 18B: 2C85 SUB AL, -123
; 18D: 3C60 CMP AL, 96
; 18F: 0F86F3050000 JBE L45
; 195: L3: 4C8945F0 MOV [RBP-16], R8
; 199: 4C896DE8 MOV [RBP-24], R13
; 19D: 498BD5 MOV RDX, R13
; 1A0: 4883EC18 SUB RSP, 24
; 1A4: 48896C2408 MOV [RSP+8], RBP
; 1A9: 488D6C2408 LEA RBP, [RSP+8]
; 1AE: B902000000 MOV ECX, 2
; 1B3: FF1425480A1020 CALL QWORD PTR [#x20100A48] ; LENGTH
; 1BA: 488BCA MOV RCX, RDX
; 1BD: 4C8B6DE8 MOV R13, [RBP-24]
; 1C1: 4C8B45F0 MOV R8, [RBP-16]
; 1C5: L4: 48D1F9 SAR RCX, 1
; 1C8: 4883C105 ADD RCX, 5
; 1CC: 483B0D4D060000 CMP RCX, [RIP+1613] ;
#x3FFFFFFFFFFFFFFC
; 1D3: 0F87AA050000 JNBE L44
; 1D9: 31F6 XOR ESI, ESI
; 1DB: 488D1C09 LEA RBX, [RCX+RCX]
; 1DF: 488D4B02 LEA RCX, [RBX+2]
; 1E3: 4883C102 ADD RCX, 2
; 1E7: 48D1F9 SAR RCX, 1
; 1EA: 4883E1FE AND RCX, -2
; 1EE: 483B0D33060000 CMP RCX, [RIP+1587] ;
#x1FFFFFFFFFFFFFF8
; 1F5: 0F8778050000 JNBE L43
; 1FB: 488D3C8D1F000000 LEA RDI, [RCX*4+31]
; 203: 4883E7F0 AND RDI, -16
; 207: 49896C2440 MOV [R12+64], RBP ;
thread.pseudo-atomic-bits
; 20C: 4D8B5C2418 MOV R11, [R12+24] ;
thread.alloc-region
; 211: 4C01DF ADD RDI, R11
; 214: 493B7C2420 CMP RDI, [R12+32]
; 219: 0F8793050000 JNBE L47
; 21F: 49897C2418 MOV [R12+24], RDI ;
thread.alloc-region
; 224: 498D7B0F LEA RDI, [R11+15]
; 228: L5: 48C747F1E5000000 MOV QWORD PTR [RDI-15], 229
; 230: 48895FF9 MOV [RDI-7], RBX
; 234: 49316C2440 XOR [R12+64], RBP ;
thread.pseudo-atomic-bits
; 239: 7402 JEQ L6
; 23B: CC09 BREAK 9 ; pending
interrupt trap
; 23D: L6: 488BDF MOV RBX, RDI
; 240: 418D45F1 LEA EAX, [R13-15]
; 244: A80F TEST AL, 15
; 246: 750B JNE L7
; 248: 41807DF1E5 CMP BYTE PTR [R13-15], -27
; 24D: 0F8456040000 JEQ L36
; 253: L7: 418D45F1 LEA EAX, [R13-15]
; 257: A80F TEST AL, 15
; 259: 750B JNE L8
; 25B: 41807DF1E1 CMP BYTE PTR [R13-15], -31
; 260: 0F84DB030000 JEQ L32
; 266: L8: 48895DF8 MOV [RBP-8], RBX
; 26A: 4C896DE8 MOV [RBP-24], R13
; 26E: 488D7424F0 LEA RSI, [RSP-16]
; 273: 4883EC18 SUB RSP, 24
; 277: 488BD3 MOV RDX, RBX
; 27A: 498BF8 MOV RDI, R8
; 27D: 488B05CCFDFFFF MOV RAX, [RIP-564] ;
#<FDEFINITION for REPLACE>
; 284: B904000000 MOV ECX, 4
; 289: 48892E MOV [RSI], RBP
; 28C: 488BEE MOV RBP, RSI
; 28F: FF5009 CALL QWORD PTR [RAX+9]
; 292: 4C8B6DE8 MOV R13, [RBP-24]
; 296: 498BD5 MOV RDX, R13
; 299: 4883EC18 SUB RSP, 24
; 29D: 48896C2408 MOV [RSP+8], RBP
; 2A2: 488D6C2408 LEA RBP, [RSP+8]
; 2A7: B902000000 MOV ECX, 2
; 2AC: FF1425480A1020 CALL QWORD PTR [#x20100A48] ; LENGTH
; 2B3: 488BF2 MOV RSI, RDX
; 2B6: 4C8B6DE8 MOV R13, [RBP-24]
; 2BA: 488B5DF8 MOV RBX, [RBP-8]
; 2BE: L9: 4C896DE8 MOV [RBP-24], R13
; 2C2: B873000000 MOV EAX, 115
; 2C7: 89447301 MOV [RBX+RSI*2+1], EAX
; 2CB: 488D4602 LEA RAX, [RSI+2]
; 2CF: B96D000000 MOV ECX, 109
; 2D4: 894C4301 MOV [RBX+RAX*2+1], ECX
; 2D8: 488BC1 MOV RAX, RCX
; 2DB: 488D4604 LEA RAX, [RSI+4]
; 2DF: B961000000 MOV ECX, 97
; 2E4: 894C4301 MOV [RBX+RAX*2+1], ECX
; 2E8: 488BC1 MOV RAX, RCX
; 2EB: 488D4606 LEA RAX, [RSI+6]
; 2EF: B970000000 MOV ECX, 112
; 2F4: 894C4301 MOV [RBX+RAX*2+1], ECX
; 2F8: 488BC1 MOV RAX, RCX
; 2FB: 488D4E08 LEA RCX, [RSI+8]
; 2FF: B873000000 MOV EAX, 115
; 304: 89444B01 MOV [RBX+RCX*2+1], EAX
; 308: 4883C60A ADD RSI, 10
; 30C: 488D7424F0 LEA RSI, [RSP-16]
; 311: 4883EC18 SUB RSP, 24
; 315: 488BD3 MOV RDX, RBX
; 318: 488B0539FDFFFF MOV RAX, [RIP-711] ;
#<FDEFINITION for PROBE-FILE>
; 31F: B902000000 MOV ECX, 2
; 324: 48892E MOV [RSI], RBP
; 327: 488BEE MOV RBP, RSI
; 32A: FF5009 CALL QWORD PTR [RAX+9]
; 32D: 4C8B6DE8 MOV R13, [RBP-24]
; 331: 4881FA17001020 CMP RDX, 537919511
; 338: 750A JNE L10
; 33A: BA17001020 MOV EDX, 537919511
; 33F: E932FEFFFF JMP L1
; 344: L10: 4D8BC5 MOV R8, R13
; 347: 418D45F1 LEA EAX, [R13-15]
; 34B: A80F TEST AL, 15
; 34D: 750E JNE L11
; 34F: 418B45F1 MOV EAX, [R13-15]
; 353: 2C85 SUB AL, -123
; 355: 3C60 CMP AL, 96
; 357: 0F86DB020000 JBE L31
; 35D: L11: 4C8945F0 MOV [RBP-16], R8
; 361: 4C896DE8 MOV [RBP-24], R13
; 365: 498BD5 MOV RDX, R13
; 368: 4883EC18 SUB RSP, 24
; 36C: 48896C2408 MOV [RSP+8], RBP
; 371: 488D6C2408 LEA RBP, [RSP+8]
; 376: B902000000 MOV ECX, 2
; 37B: FF1425480A1020 CALL QWORD PTR [#x20100A48] ; LENGTH
; 382: 488BCA MOV RCX, RDX
; 385: 4C8B6DE8 MOV R13, [RBP-24]
; 389: 4C8B45F0 MOV R8, [RBP-16]
; 38D: L12: 48D1F9 SAR RCX, 1
; 390: 4883C107 ADD RCX, 7
; 394: 483B0D85040000 CMP RCX, [RIP+1157] ;
#x3FFFFFFFFFFFFFFC
; 39B: 0F8792020000 JNBE L30
; 3A1: 31F6 XOR ESI, ESI
; 3A3: 488D1C09 LEA RBX, [RCX+RCX]
; 3A7: 488D4B02 LEA RCX, [RBX+2]
; 3AB: 4883C102 ADD RCX, 2
; 3AF: 48D1F9 SAR RCX, 1
; 3B2: 4883E1FE AND RCX, -2
; 3B6: 483B0D6B040000 CMP RCX, [RIP+1131] ;
#x1FFFFFFFFFFFFFF8
; 3BD: 0F8760020000 JNBE L29
; 3C3: 488D3C8D1F000000 LEA RDI, [RCX*4+31]
; 3CB: 4883E7F0 AND RDI, -16
; 3CF: 49896C2440 MOV [R12+64], RBP ;
thread.pseudo-atomic-bits
; 3D4: 4D8B5C2418 MOV R11, [R12+24] ;
thread.alloc-region
; 3D9: 4C01DF ADD RDI, R11
; 3DC: 493B7C2420 CMP RDI, [R12+32]
; 3E1: 0F87E2030000 JNBE L48
; 3E7: 49897C2418 MOV [R12+24], RDI ;
thread.alloc-region
; 3EC: 498D7B0F LEA RDI, [R11+15]
; 3F0: L13: 48C747F1E5000000 MOV QWORD PTR [RDI-15], 229
; 3F8: 48895FF9 MOV [RDI-7], RBX
; 3FC: 49316C2440 XOR [R12+64], RBP ;
thread.pseudo-atomic-bits
; 401: 7402 JEQ L14
; 403: CC09 BREAK 9 ; pending
interrupt trap
; 405: L14: 488BDF MOV RBX, RDI
; 408: 418D45F1 LEA EAX, [R13-15]
; 40C: A80F TEST AL, 15
; 40E: 750B JNE L15
; 410: 41807DF1E5 CMP BYTE PTR [R13-15], -27
; 415: 0F843E010000 JEQ L22
; 41B: L15: 418D45F1 LEA EAX, [R13-15]
; 41F: A80F TEST AL, 15
; 421: 750B JNE L16
; 423: 41807DF1E1 CMP BYTE PTR [R13-15], -31
; 428: 0F84CD000000 JEQ L18
; 42E: L16: 48895DF8 MOV [RBP-8], RBX
; 432: 4C896DE8 MOV [RBP-24], R13
; 436: 488D7424F0 LEA RSI, [RSP-16]
; 43B: 4883EC18 SUB RSP, 24
; 43F: 488BD3 MOV RDX, RBX
; 442: 498BF8 MOV RDI, R8
; 445: 488B0504FCFFFF MOV RAX, [RIP-1020] ;
#<FDEFINITION for REPLACE>
; 44C: B904000000 MOV ECX, 4
; 451: 48892E MOV [RSI], RBP
; 454: 488BEE MOV RBP, RSI
; 457: FF5009 CALL QWORD PTR [RAX+9]
; 45A: 4C8B6DE8 MOV R13, [RBP-24]
; 45E: 498BD5 MOV RDX, R13
; 461: 4883EC18 SUB RSP, 24
; 465: 48896C2408 MOV [RSP+8], RBP
; 46A: 488D6C2408 LEA RBP, [RSP+8]
; 46F: B902000000 MOV ECX, 2
; 474: FF1425480A1020 CALL QWORD PTR [#x20100A48] ; LENGTH
; 47B: 488BF2 MOV RSI, RDX
; 47E: 488B5DF8 MOV RBX, [RBP-8]
; 482: L17: B863000000 MOV EAX, 99
; 487: 89447301 MOV [RBX+RSI*2+1], EAX
; 48B: 488D4602 LEA RAX, [RSI+2]
; 48F: B96D000000 MOV ECX, 109
; 494: 894C4301 MOV [RBX+RAX*2+1], ECX
; 498: 488BC1 MOV RAX, RCX
; 49B: 488D4604 LEA RAX, [RSI+4]
; 49F: B964000000 MOV ECX, 100
; 4A4: 894C4301 MOV [RBX+RAX*2+1], ECX
; 4A8: 488BC1 MOV RAX, RCX
; 4AB: 488D4606 LEA RAX, [RSI+6]
; 4AF: B96C000000 MOV ECX, 108
; 4B4: 894C4301 MOV [RBX+RAX*2+1], ECX
; 4B8: 488BC1 MOV RAX, RCX
; 4BB: 488D4E08 LEA RCX, [RSI+8]
; 4BF: B869000000 MOV EAX, 105
; 4C4: 89444B01 MOV [RBX+RCX*2+1], EAX
; 4C8: 488D4E0A LEA RCX, [RSI+10]
; 4CC: B86E000000 MOV EAX, 110
; 4D1: 89444B01 MOV [RBX+RCX*2+1], EAX
; 4D5: 488D4E0C LEA RCX, [RSI+12]
; 4D9: B865000000 MOV EAX, 101
; 4DE: 89444B01 MOV [RBX+RCX*2+1], EAX
; 4E2: 4883C60E ADD RSI, 14
; 4E6: 488BD3 MOV RDX, RBX
; 4E9: 488B0568FBFFFF MOV RAX, [RIP-1176] ;
#<FDEFINITION for PROBE-FILE>
; 4F0: B902000000 MOV ECX, 2
; 4F5: FF7508 PUSH QWORD PTR [RBP+8]
; 4F8: FF6009 JMP QWORD PTR [RAX+9]
; 4FB: L18: 498BF5 MOV RSI, R13
; 4FE: 4C8B47F9 MOV R8, [RDI-7]
; 502: 498BC8 MOV RCX, R8
; 505: 498B7DF9 MOV RDI, [R13-7]
; 509: 488BD7 MOV RDX, RDI
; 50C: 488BFA MOV RDI, RDX
; 50F: 4C8BC1 MOV R8, RCX
; 512: 4839D1 CMP RCX, RDX
; 515: 4C0F4FC7 CMOVNLE R8, RDI
; 519: 31D2 XOR EDX, EDX
; 51B: 31C9 XOR ECX, ECX
; 51D: EB21 JMP L20
; 51F: 90 NOP
; 520: L19: 483B0D09030000 CMP RCX, [RIP+777] ;
#x7FFFFFFFFFFFFFF8
; 527: 7728 JNBE L21
; 529: 488BC1 MOV RAX, RCX
; 52C: 48D1F8 SAR RAX, 1
; 52F: 0FB6440601 MOVZX EAX, BYTE PTR [RSI+RAX+1]
; 534: 89445301 MOV [RBX+RDX*2+1], EAX
; 538: 4883C202 ADD RDX, 2
; 53C: 4883C102 ADD RCX, 2
; 540: L20: 4C39C2 CMP RDX, R8
; 543: 7CDB JL L19
; 545: 488B4EF9 MOV RCX, [RSI-7]
; 549: 488BF1 MOV RSI, RCX
; 54C: E931FFFFFF JMP L17
; 551: L21: 48D1F9 SAR RCX, 1
; 554: CC0A BREAK 10 ; error trap
; 556: 02 BYTE #X02
; 557: 3D BYTE #X3D ;
OBJECT-NOT-INDEX-ERROR
; 558: 9E BYTE #X9E ; RCX
; 559: L22: 498BD5 MOV RDX, R13
; 55C: 488B4FF9 MOV RCX, [RDI-7]
; 560: 4D8B45F9 MOV R8, [R13-7]
; 564: 498BF0 MOV RSI, R8
; 567: 4C8BC6 MOV R8, RSI
; 56A: 4C8BC9 MOV R9, RCX
; 56D: 4839F1 CMP RCX, RSI
; 570: 498BC9 MOV RCX, R9
; 573: 490F4FC8 CMOVNLE RCX, R8
; 577: 488BF1 MOV RSI, RCX
; 57A: 48D1FE SAR RSI, 1
; 57D: 4883E6FE AND RSI, -2
; 581: 4C8BC1 MOV R8, RCX
; 584: 4983E002 AND R8, 2
; 588: 4D85C0 TEST R8, R8
; 58B: 7540 JNE L26
; 58D: L23: 488BCE MOV RCX, RSI
; 590: EB2A JMP L25
; 592: 660F1F840000000000 NOP
; 59B: 0F1F440000 NOP
; 5A0: L24: 488BF1 MOV RSI, RCX
; 5A3: 4883EE02 SUB RSI, 2
; 5A7: 488BC1 MOV RAX, RCX
; 5AA: 4883E802 SUB RAX, 2
; 5AE: 488B448201 MOV RAX, [RDX+RAX*4+1]
; 5B3: 488944B301 MOV [RBX+RSI*4+1], RAX
; 5B8: 4883E902 SUB RCX, 2
; 5BC: L25: 4885C9 TEST RCX, RCX
; 5BF: 7FDF JNLE L24
; 5C1: 488B4AF9 MOV RCX, [RDX-7]
; 5C5: 488BF1 MOV RSI, RCX
; 5C8: E9B5FEFFFF JMP L17
; 5CD: L26: 4883E102 AND RCX, 2
; 5D1: 4883E904 SUB RCX, 4
; 5D5: 48C1E105 SHL RCX, 5
; 5D9: 4883F980 CMP RCX, -128
; 5DD: 7E3F JLE L28
; 5DF: 48F7D9 NEG RCX
; 5E2: 49C7C2FFFFFFFF MOV R10, -1
; 5E9: 48D1F9 SAR RCX, 1
; 5EC: 49D3EA SHR R10, CL
; 5EF: 49D1E2 SHL R10, 1
; 5F2: L27: 488B4CB701 MOV RCX, [RDI+RSI*4+1]
; 5F7: 498BC2 MOV RAX, R10
; 5FA: 48D1F8 SAR RAX, 1
; 5FD: 48F7D0 NOT RAX
; 600: 4821C1 AND RCX, RAX
; 603: 498B44B501 MOV RAX, [R13+RSI*4+1]
; 608: 48D1E0 SHL RAX, 1
; 60B: 4C21D0 AND RAX, R10
; 60E: 48D1F8 SAR RAX, 1
; 611: 4809C1 OR RCX, RAX
; 614: 48894CB701 MOV [RDI+RSI*4+1], RCX
; 619: E96FFFFFFF JMP L23
; 61E: L28: 4D31D2 XOR R10, R10
; 621: EBCF JMP L27
; 623: L29: 48D1F9 SAR RCX, 1
; 626: 488B053BFAFFFF MOV RAX, [RIP-1477] ; '(MOD
;
1152921504606846973)
; 62D: CC0A BREAK 10 ; error trap
; 62F: 03 BYTE #X03
; 630: 20 BYTE #X20 ;
OBJECT-NOT-TYPE-ERROR
; 631: 9E BYTE #X9E ; RCX
; 632: 1B BYTE #X1B ; RAX
; 633: L30: CC0A BREAK 10 ; error trap
; 635: 02 BYTE #X02
; 636: 3D BYTE #X3D ;
OBJECT-NOT-INDEX-ERROR
; 637: 9E BYTE #X9E ; RCX
; 638: L31: 498B4DF9 MOV RCX, [R13-7]
; 63C: E94CFDFFFF JMP L12
; 641: L32: 498BF5 MOV RSI, R13
; 644: 4C8B47F9 MOV R8, [RDI-7]
; 648: 498BC8 MOV RCX, R8
; 64B: 498B7DF9 MOV RDI, [R13-7]
; 64F: 488BD7 MOV RDX, RDI
; 652: 488BFA MOV RDI, RDX
; 655: 4C8BC1 MOV R8, RCX
; 658: 4839D1 CMP RCX, RDX
; 65B: 4C0F4FC7 CMOVNLE R8, RDI
; 65F: 31D2 XOR EDX, EDX
; 661: 31C9 XOR ECX, ECX
; 663: EB2B JMP L34
; 665: 660F1F840000000000 NOP
; 66E: 6690 NOP
; 670: L33: 483B0DB9010000 CMP RCX, [RIP+441] ;
#x7FFFFFFFFFFFFFF8
; 677: 7728 JNBE L35
; 679: 488BC1 MOV RAX, RCX
; 67C: 48D1F8 SAR RAX, 1
; 67F: 0FB6440601 MOVZX EAX, BYTE PTR [RSI+RAX+1]
; 684: 89445301 MOV [RBX+RDX*2+1], EAX
; 688: 4883C202 ADD RDX, 2
; 68C: 4883C102 ADD RCX, 2
; 690: L34: 4C39C2 CMP RDX, R8
; 693: 7CDB JL L33
; 695: 488B4EF9 MOV RCX, [RSI-7]
; 699: 488BF1 MOV RSI, RCX
; 69C: E91DFCFFFF JMP L9
; 6A1: L35: 48D1F9 SAR RCX, 1
; 6A4: CC0A BREAK 10 ; error trap
; 6A6: 02 BYTE #X02
; 6A7: 3D BYTE #X3D ;
OBJECT-NOT-INDEX-ERROR
; 6A8: 9E BYTE #X9E ; RCX
; 6A9: L36: 498BD5 MOV RDX, R13
; 6AC: 488B4FF9 MOV RCX, [RDI-7]
; 6B0: 4D8B45F9 MOV R8, [R13-7]
; 6B4: 498BF0 MOV RSI, R8
; 6B7: 4C8BC6 MOV R8, RSI
; 6BA: 4C8BC9 MOV R9, RCX
; 6BD: 4839F1 CMP RCX, RSI
; 6C0: 498BC9 MOV RCX, R9
; 6C3: 490F4FC8 CMOVNLE RCX, R8
; 6C7: 488BF1 MOV RSI, RCX
; 6CA: 48D1FE SAR RSI, 1
; 6CD: 4883E6FE AND RSI, -2
; 6D1: 4C8BC1 MOV R8, RCX
; 6D4: 4983E002 AND R8, 2
; 6D8: 4D85C0 TEST R8, R8
; 6DB: 7540 JNE L40
; 6DD: L37: 488BCE MOV RCX, RSI
; 6E0: EB2A JMP L39
; 6E2: 660F1F840000000000 NOP
; 6EB: 0F1F440000 NOP
; 6F0: L38: 488BF1 MOV RSI, RCX
; 6F3: 4883EE02 SUB RSI, 2
; 6F7: 488BC1 MOV RAX, RCX
; 6FA: 4883E802 SUB RAX, 2
; 6FE: 488B448201 MOV RAX, [RDX+RAX*4+1]
; 703: 488944B301 MOV [RBX+RSI*4+1], RAX
; 708: 4883E902 SUB RCX, 2
; 70C: L39: 4885C9 TEST RCX, RCX
; 70F: 7FDF JNLE L38
; 711: 488B4AF9 MOV RCX, [RDX-7]
; 715: 488BF1 MOV RSI, RCX
; 718: E9A1FBFFFF JMP L9
; 71D: L40: 4883E102 AND RCX, 2
; 721: 4883E904 SUB RCX, 4
; 725: 48C1E105 SHL RCX, 5
; 729: 4883F980 CMP RCX, -128
; 72D: 7E3F JLE L42
; 72F: 48F7D9 NEG RCX
; 732: 49C7C2FFFFFFFF MOV R10, -1
; 739: 48D1F9 SAR RCX, 1
; 73C: 49D3EA SHR R10, CL
; 73F: 49D1E2 SHL R10, 1
; 742: L41: 488B4CB701 MOV RCX, [RDI+RSI*4+1]
; 747: 498BC2 MOV RAX, R10
; 74A: 48D1F8 SAR RAX, 1
; 74D: 48F7D0 NOT RAX
; 750: 4821C1 AND RCX, RAX
; 753: 498B44B501 MOV RAX, [R13+RSI*4+1]
; 758: 48D1E0 SHL RAX, 1
; 75B: 4C21D0 AND RAX, R10
; 75E: 48D1F8 SAR RAX, 1
; 761: 4809C1 OR RCX, RAX
; 764: 48894CB701 MOV [RDI+RSI*4+1], RCX
; 769: E96FFFFFFF JMP L37
; 76E: L42: 4D31D2 XOR R10, R10
; 771: EBCF JMP L41
; 773: L43: 48D1F9 SAR RCX, 1
; 776: 488B05EBF8FFFF MOV RAX, [RIP-1813] ; '(MOD
;
1152921504606846973)
; 77D: CC0A BREAK 10 ; error trap
; 77F: 03 BYTE #X03
; 780: 20 BYTE #X20 ;
OBJECT-NOT-TYPE-ERROR
; 781: 9E BYTE #X9E ; RCX
; 782: 1B BYTE #X1B ; RAX
; 783: L44: CC0A BREAK 10 ; error trap
; 785: 02 BYTE #X02
; 786: 3D BYTE #X3D ;
OBJECT-NOT-INDEX-ERROR
; 787: 9E BYTE #X9E ; RCX
; 788: L45: 498B4DF9 MOV RCX, [R13-7]
; 78C: E934FAFFFF JMP L4
; 791: L46: 4881FA4F001020 CMP RDX, 537919567
; 798: 0F84CAF9FFFF JEQ L0
; 79E: 488B05CBF8FFFF MOV RAX, [RIP-1845] ; '(MEMBER
NIL T)
; 7A5: CC0A BREAK 10 ; error trap
; 7A7: 05 BYTE #X05
; 7A8: 20 BYTE #X20 ;
OBJECT-NOT-TYPE-ERROR
; 7A9: FE1B01 BYTE #XFE, #X1B, #X01 ; RDX
; 7AC: 1B BYTE #X1B ; RAX
; 7AD: CC0A BREAK 10 ; error trap
; 7AF: 02 BYTE #X02
; 7B0: 19 BYTE #X19 ;
INVALID-ARG-COUNT-ERROR
; 7B1: 9A BYTE #X9A ; RCX
; 7B2: L47: 492B7C2418 SUB RDI, [R12+24] ;
thread.alloc-region
; 7B7: 57 PUSH RDI
; 7B8: BFA0824200 MOV EDI, 4358816 ; alloc_tramp
; 7BD: FFD7 CALL RDI
; 7BF: 5F POP RDI
; 7C0: 4080CF0F OR DIL, 15
; 7C4: E95FFAFFFF JMP L5
; 7C9: L48: 492B7C2418 SUB RDI, [R12+24] ;
thread.alloc-region
; 7CE: 57 PUSH RDI
; 7CF: BFA0824200 MOV EDI, 4358816 ; alloc_tramp
; 7D4: FFD7 CALL RDI
; 7D6: 5F POP RDI
; 7D7: 4080CF0F OR DIL, 15
; 7DB: E910FCFFFF JMP L13
; 7E0: 660F1F840000000000 NOP
; 7E9: 660F1F840000000000 NOP
; 7F2: 660F1F840000000000 NOP
; 7FB: 660F1F840000000000 NOP
; 804: 660F1F840000000000 NOP
; 80D: 660F1F840000000000 NOP
; 816: 660F1F840000000000 NOP
; 81F: 90 NOP
; Unboxed data:
; 820: FCFFFFFFFFFFFF3F
; 828: F8FFFFFFFFFFFF1F
; 830: F8FFFFFFFFFFFF7F
NIL
æ倧èŽçäºäžçŒoptimize
speedååç代ç ïŒåºå«è¿æ¯æçãåœç¶äœ äžèœå¯¹sbclææ倪é«ïŒå³äŸ¿sbclæ¯ç®åå
¬è®€äŒåæ奜çCLå®ç°ïŒäœæ¯SBCLä¹åŸæž
æ¥èªå·±çžæ¯èµ·gccä¹ç±»ççŒè¯åšçŒºå°å€ªå€çåžžè§äŒåäºã
åŠææ没çéçè¯æ¯è¿æ ·åçã
number-string-p:
åšoptimize speedä¹åïŒäŒè°çšlengthæ¥æ¥çé¿åºŠã
åšoptimize
speedä¹åïŒælengthç»inlineè¿æ¥äºãåæ¶ïŒå 䞺å讟äºäœ çåæ°æ¯sequenceïŒæ以è¿å
¥åœæ°ä¹åèŠå¿è°çšsequence-pæ¥æ£æ¥äžæ¯äžæ¯sequenceïŒå¹¶äžåŠæäžæ¯çè¯ïŒåé¢è¿å€äºäžäºè®©äœ åºéç代ç ã
path-checkå°±äžçäºïŒäœæ¯åå䞀䞪path-checké¿åºŠäžåæ¥çïŒsbclç¡®å®åäºåŸå€äŒåå·¥äœãè³å°ïŒåšoptimize
speedä¹åïŒé¿åºŠå¢å äºå¥œå åïŒè¿è¯ŽæCLå
çåœæ°è¢«inlineè¿æ¥äºïŒå¹¶åäºäžäºçžåºçåæ¢ã
åŠå€æäžç¹èŠæç¡®ïŒè¿ééœæ¯åºäºcompile-fileä¹åload compiled
fileçæ¹åŒæ¥è®šè®ºçãåŠæäœ æä»åœæèæ¬æ¥æ§è¡ïŒäŒ°è®¡æ¯çº¯EVALïŒïŒé£ä¹äžåéœå°äŒå®å
šäžåã
Best regards,
Xiaofeng Yang
Post by Liutosåæå°æ¿å³å¬è¯Ÿ(âÂŽâœ`â)
é£äžªåªæ¯æåççæ¬ïŒäžéŽæµè¯çæ¬æ¯äžªåœæ°éœå äºïŒé床ææ
¢ïŒæ以倧éšåéœå»æäº
Post by Xiaofeng Yangæ就倧èŽçäºäžçŒãä¹å°±äž€å€æ³šéïŒäœ å äžä¹æ²¡å¥æä¹ã
Post by Xiaofeng Yangäžå¥è¯ïŒäœ éèŠæŽå äºè§£CLïŒç¹å«æ¯æ åCLïŒå
¶æ¬¡ææ¯å®ç°ïŒæèœèŸŸå°äœ é¢æ³çææã
Best regards,
Xiaofeng Yang
Post by loong0倧家奜ïŒ
åäºå€©åäºäžªclçå°çšåºïŒswapviewïŒçšæ¥è¯»å/procç®åœäžçææè¿çšçswap䜿çšæ
åµã
äž»èŠåšsbcläžè¿è¡æµè¯ïŒåŒå§ä»¥scriptæš¡åŒè¿è¡æµè¯ãåšåèœå®ç°ä¹åïŒåå€è¿è¡ç±»å声ææ¥æé«äžè¿è¡é床ã
å äºäžäºdeclaimãdeclareè¿è¡ç±»å声æåå
èçŒè¯ïŒéè¿sbclè¿è¡çŒè¯ïŒçæå¯æ§è¡æ件ïŒé床并没ææ³è±¡çé£æ ·æååŸå€ã
çžåïŒåç°åšçŒè¯çæå¯æ§è¡æ件çæ¶åå äžç±»å声æåèæå¯èœéäœæ§è¡æçïŒæ¯èæ¬æš¡åŒæ§è¡çè¿æ
¢ã
åŒå§äœäžºèæ¬è¿è¡ç代ç ïŒ
https://github.com/longlene/swapview/raw/master/CommonLisp_old/swapview.lisp
ä¿®æ¹åäŒåç代ç ïŒ
https://github.com/longlene/swapview/raw/master/CommonLisp_opt/swapview.lisp
çæå¯æ§è¡çšåºç代ç åŠäžïŒ
sbcl --noinform --quit --eval "(progn (load (compile-file \"
swapview.lisp\"))(save-lisp-and-die \"swapview\" :toplevel #'main
:executable t))"
å
¶äžä¿®æ¹äŒååççæ¬äžïŒæäžéŽæµè¯å ç
;(declaim (optimize speed)) 泚éæäºïŒè¿æå䞪åœæ°çç±»å声æä¹å»æäºïŒå 䞺åç°å äºä¹åé床äŒåæ
¢äžå°ã
ç°åšæè¿ä¹å 䞪é®é¢ïŒ
1ãå äžäŒåç±»ç代ç ïŒåŠç±»å声æãå
èçŒè¯ïŒåè富èŽè¿è¡é床åæ
¢ïŒè¿äžªæ¯å 䞺sbclçŒè¯æ¬èº«æäŒåïŒäž€äžªæå²çªå¯ŒèŽçåïŒæ¥äºäžsbclçææ¡£ïŒæ²¡åç°ä»ä¹å¥æçšçä¿¡æ¯ãå¢å äºå£°æåèåæ
¢æ¯æä¹åäºïŒè¿è¿èäžçŽä»¥æ¥æ对lispåŒåæµçšç讀ç¥ïŒå¿«éå®ç°ååïŒç¶ååé¢äŒåïŒç°åšäŒå没å¥äœçšå¢ïŒ
2ã倧家æ¯åŠäœäŒålispç代ç çïŒçœäžæå°çéœæ¯å 幎åçææ¡£äºïŒæè§äžæä¹å¥œçšäº
è¿æå°±æ¯å€§å®¶è°æ没ææ£çLispWorksïŒå¯åŠåž®å¿çæLinuxäž64äœçäºè¿å¶æ§è¡æ件ïŒçäžäžæ§è¡æçã代ç äžçšå°äºå°éåŠnative-namestringçsbclç¹æçåœæ°ïŒå°è®žæ¹åšäžäžåºè¯¥åŸå®¹æåšå
¶ä»å®ç°äžçŒè¯éè¿ãåŠæå¯ä»¥ïŒå¯åŠäžå€§å®¶å享äžäžè¿è¡ç»æãå
è°¢è¿:-D
äžèŸ¹éŸæ¥æ¯ä»åå客äžswapviewåç§è¯èšå®ç°çè·åæ
åµïŒ
http://lilydjwg.is-programmer.com/2015/1/6/lang-battle-on-swapview.75431.html
åœç¶ïŒè¿å¯èœæ¯äžªå¹¶äžå€ªäž¥è°šçæ¯èŸïŒè§£éåè¯èšåçŒè¯åè¯èšæŸåšäžèµ·æ¯èŸçïŒå€§å®¶äžèŠå€ªåšæã:-)
åŠïŒä»£ç äžåŠæbugä»ä¹çïŒä¹è¯·å€§å®¶äžåèµæã
--
Follow your dream!
--
--
Lisp-cn(Lispäžæçšæ·ç»)
CLUG http://lisp.org.cn
---
æšæ¶å°æ€é®ä»¶æ¯å 䞺æšè®¢é
äºGoogleçœäžè®ºåäžçâLisp-cn(Lispäžæçšæ·ç»)â矀ç»ã
èŠæ¥çæŽå€é项ïŒè¯·è®¿é®https://groups.google.com/d/optoutã
--
--
Lisp-cn(Lispäžæçšæ·ç»)
CLUG http://lisp.org.cn
---
æšæ¶å°æ€é®ä»¶æ¯å 䞺æšè®¢é
äºGoogleçœäžè®ºåäžçâLisp-cn(Lispäžæçšæ·ç»)â矀ç»ã
èŠæ¥çæŽå€é项ïŒè¯·è®¿é®https://groups.google.com/d/optoutã
--
Follow your dream!
--
--
Lisp-cn(Lispäžæçšæ·ç»)
CLUG http://lisp.org.cn
---
æšæ¶å°æ€é®ä»¶æ¯å 䞺æšè®¢é
äºGoogleçœäžè®ºåäžçâLisp-cn(Lispäžæçšæ·ç»)â矀ç»ã
èŠæ¥çæŽå€é项ïŒè¯·è®¿é®https://groups.google.com/d/optoutã
--
Liutos Love Linux LaTeX Lisp Ling
æçGitHub䞻页ïŒhttps://github.com/Liutos
--
--
Lisp-cn(Lispäžæçšæ·ç»)
CLUG http://lisp.org.cn
---
æšæ¶å°æ€é®ä»¶æ¯å 䞺æšè®¢é
äºGoogleçœäžè®ºåäžçâLisp-cn(Lispäžæçšæ·ç»)â矀ç»ã
èŠæ¥çæŽå€é项ïŒè¯·è®¿é®https://groups.google.com/d/optoutã
--
--
Lisp-cn(Lispäžæçšæ·ç»)
CLUG http://lisp.org.cn
---
æšæ¶å°æ€é®ä»¶æ¯å 䞺æšè®¢é
äº Google çœäžè®ºåçâLisp-cn(Lispäžæçšæ·ç»)â矀ç»ã
èŠé订æ€çŸ€ç»å¹¶åæ¢æ¥æ¶æ€çŸ€ç»ççµåé®ä»¶ïŒè¯·åéçµåé®ä»¶å°lisp-cn+***@googlegroups.comã
èŠæ¥çæŽå€é项ïŒè¯·è®¿é® https://groups.google.com/d/optoutã