You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
(23) |
Apr
(68) |
May
(99) |
Jun
(109) |
Jul
(112) |
Aug
(104) |
Sep
(177) |
Oct
(211) |
Nov
(162) |
Dec
(135) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(126) |
Feb
(228) |
Mar
(238) |
Apr
(299) |
May
(257) |
Jun
(283) |
Jul
(192) |
Aug
(227) |
Sep
(295) |
Oct
(202) |
Nov
(180) |
Dec
(70) |
2004 |
Jan
(88) |
Feb
(73) |
Mar
(133) |
Apr
(141) |
May
(205) |
Jun
(130) |
Jul
(148) |
Aug
(247) |
Sep
(228) |
Oct
(175) |
Nov
(158) |
Dec
(222) |
2005 |
Jan
(159) |
Feb
(96) |
Mar
(145) |
Apr
(192) |
May
(132) |
Jun
(190) |
Jul
(194) |
Aug
(280) |
Sep
(195) |
Oct
(207) |
Nov
(154) |
Dec
(101) |
2006 |
Jan
(156) |
Feb
(110) |
Mar
(261) |
Apr
(183) |
May
(148) |
Jun
(133) |
Jul
(94) |
Aug
(141) |
Sep
(137) |
Oct
(111) |
Nov
(172) |
Dec
(124) |
2007 |
Jan
(111) |
Feb
(72) |
Mar
(155) |
Apr
(286) |
May
(138) |
Jun
(170) |
Jul
(129) |
Aug
(156) |
Sep
(170) |
Oct
(90) |
Nov
(119) |
Dec
(112) |
2008 |
Jan
(135) |
Feb
(102) |
Mar
(115) |
Apr
(42) |
May
(132) |
Jun
(106) |
Jul
(94) |
Aug
(67) |
Sep
(33) |
Oct
(123) |
Nov
(54) |
Dec
(219) |
2009 |
Jan
(143) |
Feb
(168) |
Mar
(68) |
Apr
(142) |
May
(224) |
Jun
(202) |
Jul
(83) |
Aug
(86) |
Sep
(68) |
Oct
(37) |
Nov
(93) |
Dec
(80) |
2010 |
Jan
(39) |
Feb
(76) |
Mar
(144) |
Apr
(141) |
May
(27) |
Jun
(70) |
Jul
(23) |
Aug
(155) |
Sep
(152) |
Oct
(167) |
Nov
(87) |
Dec
(12) |
2011 |
Jan
(18) |
Feb
(39) |
Mar
(18) |
Apr
(27) |
May
(45) |
Jun
(135) |
Jul
(31) |
Aug
(82) |
Sep
(14) |
Oct
(60) |
Nov
(112) |
Dec
(117) |
2012 |
Jan
(15) |
Feb
(4) |
Mar
(30) |
Apr
(62) |
May
(45) |
Jun
(30) |
Jul
(9) |
Aug
(23) |
Sep
(41) |
Oct
(56) |
Nov
(35) |
Dec
(43) |
2013 |
Jan
(19) |
Feb
(41) |
Mar
(31) |
Apr
(28) |
May
(109) |
Jun
(90) |
Jul
(24) |
Aug
(37) |
Sep
(52) |
Oct
(45) |
Nov
(58) |
Dec
(35) |
2014 |
Jan
(24) |
Feb
(48) |
Mar
(93) |
Apr
(100) |
May
(204) |
Jun
(107) |
Jul
(85) |
Aug
(89) |
Sep
(79) |
Oct
(70) |
Nov
(92) |
Dec
(54) |
2015 |
Jan
(100) |
Feb
(103) |
Mar
(94) |
Apr
(77) |
May
(96) |
Jun
(63) |
Jul
(116) |
Aug
(76) |
Sep
(81) |
Oct
(269) |
Nov
(253) |
Dec
(143) |
2016 |
Jan
(78) |
Feb
(150) |
Mar
(151) |
Apr
(107) |
May
(52) |
Jun
(49) |
Jul
(71) |
Aug
(68) |
Sep
(127) |
Oct
(95) |
Nov
(73) |
Dec
(106) |
2017 |
Jan
(224) |
Feb
(144) |
Mar
(144) |
Apr
(99) |
May
(84) |
Jun
(112) |
Jul
(136) |
Aug
(200) |
Sep
(206) |
Oct
(255) |
Nov
(210) |
Dec
(324) |
2018 |
Jan
(289) |
Feb
(140) |
Mar
(223) |
Apr
(171) |
May
(174) |
Jun
(131) |
Jul
(108) |
Aug
(139) |
Sep
(126) |
Oct
(142) |
Nov
(109) |
Dec
(195) |
2019 |
Jan
(129) |
Feb
(102) |
Mar
(120) |
Apr
(157) |
May
(126) |
Jun
(99) |
Jul
(102) |
Aug
(117) |
Sep
(128) |
Oct
(143) |
Nov
(153) |
Dec
(156) |
2020 |
Jan
(139) |
Feb
(149) |
Mar
(251) |
Apr
(175) |
May
(140) |
Jun
(117) |
Jul
(140) |
Aug
(209) |
Sep
(194) |
Oct
(160) |
Nov
(177) |
Dec
(170) |
2021 |
Jan
(41) |
Feb
(126) |
Mar
(155) |
Apr
(152) |
May
(150) |
Jun
(116) |
Jul
(54) |
Aug
(151) |
Sep
(102) |
Oct
(182) |
Nov
(230) |
Dec
(161) |
2022 |
Jan
(213) |
Feb
(164) |
Mar
(206) |
Apr
(232) |
May
(219) |
Jun
(196) |
Jul
(177) |
Aug
(142) |
Sep
(179) |
Oct
(161) |
Nov
(165) |
Dec
(212) |
2023 |
Jan
(265) |
Feb
(98) |
Mar
(149) |
Apr
(87) |
May
(110) |
Jun
(207) |
Jul
(176) |
Aug
(223) |
Sep
(136) |
Oct
(117) |
Nov
(202) |
Dec
(217) |
2024 |
Jan
(228) |
Feb
(246) |
Mar
(291) |
Apr
(215) |
May
(145) |
Jun
(128) |
Jul
(164) |
Aug
(143) |
Sep
(104) |
Oct
|
Nov
|
Dec
|
From: Christophe R. <cr...@us...> - 2015-04-30 11:29:25
|
The branch "master" has been updated in SBCL: via 21a43d0caf5c14b3924166c86899d263739bb423 (commit) from 8f549215df1741d0ca9c0073ebf76df4e695f267 (commit) - Log ----------------------------------------------------------------- commit 21a43d0caf5c14b3924166c86899d263739bb423 Author: Christophe Rhodes <cs...@ca...> Date: Thu Apr 30 12:27:06 2015 +0100 INFINITE-ERROR-PROTECTOR never returns normally In which case, having it used as (unless (infinite-error-protector) ...) only serves to confuse the compiler, making it insert extra %COMPILE-TIME-TYPE-ERRORs to check that ERROR itself never returns. These had no particular effect, other than to show up when I started investigating string context forms in cross-compiled fasls. Eliminating all %COMPILE-TIME-TYPE-ERRORs in the cross-compiler would make a worthy project, complicated a little by the existence of (ARRAY NIL) objects :-/ --- src/code/toplevel.lisp | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/code/toplevel.lisp b/src/code/toplevel.lisp index 39c9b68..8626e7c 100644 --- a/src/code/toplevel.lisp +++ b/src/code/toplevel.lisp @@ -124,7 +124,8 @@ means to wait indefinitely.") ;;; INFINITE-ERROR-PROTECT is used by ERROR and friends to keep us out ;;; of hyperspace. (defmacro infinite-error-protect (&rest forms) - `(unless (infinite-error-protector) + `(progn + (infinite-error-protector) (/show0 "back from INFINITE-ERROR-PROTECTOR") (let ((*current-error-depth* (1+ *current-error-depth*))) (/show0 "in INFINITE-ERROR-PROTECT, incremented error depth") @@ -151,8 +152,7 @@ means to wait indefinitely.") (error-error "Help! " cur " nested errors. " - "SB-KERNEL:*MAXIMUM-ERROR-DEPTH* exceeded.") - t) + "SB-KERNEL:*MAXIMUM-ERROR-DEPTH* exceeded.")) (t (/show0 "returning normally from INFINITE-ERROR-PROTECTOR") nil)))) ----------------------------------------------------------------------- hooks/post-receive -- SBCL |
From: Christophe R. <cr...@us...> - 2015-04-30 11:29:23
|
The branch "master" has been updated in SBCL: via 8f549215df1741d0ca9c0073ebf76df4e695f267 (commit) from 98e1f05c0b5b8358b0aab0a31f164f51ccff6a4b (commit) - Log ----------------------------------------------------------------- commit 8f549215df1741d0ca9c0073ebf76df4e695f267 Author: Christophe Rhodes <cs...@ca...> Date: Thu Apr 30 12:25:41 2015 +0100 sort the SET-DIFFERENCE when ignoring registers --- src/assembly/assemfile.lisp | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/assembly/assemfile.lisp b/src/assembly/assemfile.lisp index 9d86638..906ee2a 100644 --- a/src/assembly/assemfile.lisp +++ b/src/assembly/assemfile.lisp @@ -158,8 +158,9 @@ (:results ,@(mapcar #'arg-or-res-spec results)) ;; This formerly unioned in the contents of an :ignore clause from ;; the value of the 'call-temps' variable, for no good reason afaict. - (:ignore ,@(set-difference (mapcar #'reg-spec-name temps) - (cdr (assoc :call-temps options)))) + (:ignore ,@(sort (set-difference (mapcar #'reg-spec-name temps) + (cdr (assoc :call-temps options))) + #'string<)) ,@call-temps ;; This too is a tad sleazy - because of how VOP parsing works, ;; any :SAVE-P specified in options supersedes one from call-temps. ----------------------------------------------------------------------- hooks/post-receive -- SBCL |
From: Christophe R. <cr...@us...> - 2015-04-30 11:29:20
|
The branch "master" has been updated in SBCL: via 98e1f05c0b5b8358b0aab0a31f164f51ccff6a4b (commit) from faa74a87f8ba802160143ebe32b759e002635ddc (commit) - Log ----------------------------------------------------------------- commit 98e1f05c0b5b8358b0aab0a31f164f51ccff6a4b Author: Christophe Rhodes <cs...@ca...> Date: Thu Apr 30 12:23:21 2015 +0100 at xc-time, dump forms not strings for compile-time-type-errors string-printing is too erratic between CL implementations -- e.g. some will look at macro lambda lists when pretty printing, others won't. Since we control our own code we can assure that all context forms in the compiler itself for compile-time-type-errors are dumpable. --- src/compiler/ir1opt.lisp | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/src/compiler/ir1opt.lisp b/src/compiler/ir1opt.lisp index 4b4e471..46cd649 100644 --- a/src/compiler/ir1opt.lisp +++ b/src/compiler/ir1opt.lisp @@ -2211,6 +2211,10 @@ (return-from may-delete-vestigial-exit nil)))))) (values t)) +(defun compile-time-type-error-context (context) + #+sb-xc-host context + #-sb-xc-host (source-to-string context)) + (defun ir1-optimize-cast (cast &optional do-not-optimize) (declare (type cast cast)) (let ((value (cast-value cast)) @@ -2271,7 +2275,7 @@ ',(type-specifier atype) ',(type-specifier value-type) ',detail - ',(source-to-string context)))) + ',(compile-time-type-error-context context)))) ;; KLUDGE: FILTER-LVAR does not work for non-returning ;; functions, so we declare the return type of ;; %COMPILE-TIME-TYPE-ERROR to be * and derive the real type ----------------------------------------------------------------------- hooks/post-receive -- SBCL |
From: Christophe R. <cr...@us...> - 2015-04-30 11:29:18
|
The branch "master" has been updated in SBCL: via faa74a87f8ba802160143ebe32b759e002635ddc (commit) from 5f28e3cfa1a09031450c26182c9e51f108668a5f (commit) - Log ----------------------------------------------------------------- commit faa74a87f8ba802160143ebe32b759e002635ddc Author: Christophe Rhodes <cs...@ca...> Date: Thu Apr 30 12:12:27 2015 +0100 make info :type :lambda-list have a type of T not NIL bug reported by J. Gareth Williams on sbcl-help --- src/compiler/globaldb.lisp | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/compiler/globaldb.lisp b/src/compiler/globaldb.lisp index ae51892..f040b0f 100644 --- a/src/compiler/globaldb.lisp +++ b/src/compiler/globaldb.lisp @@ -647,7 +647,7 @@ ;;; DEFTYPE lambda-list ;; FIXME: remove this after making swank-fancy-inspector not use it. -(define-info-type (:type :lambda-list) :type-spec nil) +(define-info-type (:type :lambda-list) :type-spec t) (define-info-type (:type :source-location) :type-spec t) ----------------------------------------------------------------------- hooks/post-receive -- SBCL |
From: Christophe R. <cr...@us...> - 2015-04-30 11:29:16
|
The branch "master" has been updated in SBCL: via 5f28e3cfa1a09031450c26182c9e51f108668a5f (commit) from 4a839b9edd7fca8b2cd4729ba050f4450377220b (commit) - Log ----------------------------------------------------------------- commit 5f28e3cfa1a09031450c26182c9e51f108668a5f Author: Christophe Rhodes <cs...@ca...> Date: Thu Apr 30 12:12:12 2015 +0100 whitespace --- tests/threads.impure.lisp | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) diff --git a/tests/threads.impure.lisp b/tests/threads.impure.lisp index 6df3b38..36fac5c 100644 --- a/tests/threads.impure.lisp +++ b/tests/threads.impure.lisp @@ -1575,7 +1575,6 @@ (sb-thread:make-thread (lambda () (dpb 0 sb-vm::float-sticky-bits (sb-vm:floating-point-modes))))))) - (assert (= fp-mode thread-fp-mode))))) (test) (sb-int:with-float-traps-masked (:divide-by-zero) ----------------------------------------------------------------------- hooks/post-receive -- SBCL |
From: Jim W. <ji...@us...> - 2015-04-29 15:57:26
|
The branch "master" has been updated in SBCL webpage: from a7295360698622f679fb3263a2c7a31100396d2f (commit) - Log ----------------------------------------------------------------- commit ff7ed84d8d2deba0163378ce6e3abebf2b26f459 Author: Jim Wise <jw...@dr...> Date: Wed Apr 29 11:57:18 2015 -0400 Note availability of 1.2.11 for darwin/x86-64 --- platform-support-platforms.lisp | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/platform-support-platforms.lisp b/platform-support-platforms.lisp index bf69948..4454807 100644 --- a/platform-support-platforms.lisp +++ b/platform-support-platforms.lisp @@ -37,7 +37,7 @@ (define-port :powerpc :darwin :available "1.0.47") (define-port :x86 :darwin :available "1.1.6") -(define-port :x86-64 :darwin :available "1.1.8") +(define-port :x86-64 :darwin :available "1.2.11") (define-port :sparc :solaris :available "1.0.23") (define-port :x86 :solaris :available "1.2.7") ----------------------------------------------------------------------- hooks/post-receive -- SBCL webpage |
From: Christophe R. <cr...@us...> - 2015-04-29 12:49:35
|
The branch "master" has been updated in SBCL: via 4a839b9edd7fca8b2cd4729ba050f4450377220b (commit) from 940ca85ca7684230b0700c4a7c898a0025b87d56 (commit) - Log ----------------------------------------------------------------- commit 4a839b9edd7fca8b2cd4729ba050f4450377220b Author: Christophe Rhodes <cs...@ca...> Date: Wed Apr 29 09:24:07 2015 +0100 fix handling of named (CONS x) types in set-pprint-dispatch We now parse them properly, but that means that the user-specified type need not have the list structure expected. --- src/code/pprint.lisp | 2 +- tests/pprint.impure.lisp | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletions(-) diff --git a/src/code/pprint.lisp b/src/code/pprint.lisp index 80627ba..881ff38 100644 --- a/src/code/pprint.lisp +++ b/src/code/pprint.lisp @@ -1012,7 +1012,7 @@ line break." (warn "~S contains an unrecognized type specifier" type))) (if consp (let ((hashtable (pprint-dispatch-table-cons-entries table)) - (key (second (second type)))) + (key (car (member-type-members (cons-type-car-type ctype))))) (if function (setf (gethash key hashtable) entry) (remhash key hashtable))) diff --git a/tests/pprint.impure.lisp b/tests/pprint.impure.lisp index d097ff2..3a8d5ba 100644 --- a/tests/pprint.impure.lisp +++ b/tests/pprint.impure.lisp @@ -376,4 +376,15 @@ (assert (string= (write-to-string (make-weasel) :pretty t) "hi WEASEL!"))) +(deftype known-cons () + '(cons (member known-cons))) +(with-test (:name (:pprint-dispatch :known-cons-type)) + (flet ((pprint-known-cons (stream obj) + (format stream "#<KNOWN-CONS ~S>" (cdr obj)))) + (set-pprint-dispatch 'known-cons #'pprint-known-cons)) + (assert (string= (write-to-string (cons 'known-cons t) :pretty t) + "#<KNOWN-CONS T>")) + (assert (string= (write-to-string (cons 'known-cons (cons 'known-cons t)) :pretty t) + "#<KNOWN-CONS #<KNOWN-CONS T>>"))) + ;;; success ----------------------------------------------------------------------- hooks/post-receive -- SBCL |
From: stassats <sta...@us...> - 2015-04-28 16:55:47
|
The branch "master" has been updated in SBCL: via 940ca85ca7684230b0700c4a7c898a0025b87d56 (commit) from c9bd3fad4ec861528a3ba84e54c84423a56bb7cd (commit) - Log ----------------------------------------------------------------- commit 940ca85ca7684230b0700c4a7c898a0025b87d56 Author: Stas Boukarev <sta...@gm...> Date: Tue Apr 28 19:50:23 2015 +0300 threads.impure: Ignore resreved fp control bits for inheritance on x86. --- tests/threads.impure.lisp | 17 ++++++++++------- 1 files changed, 10 insertions(+), 7 deletions(-) diff --git a/tests/threads.impure.lisp b/tests/threads.impure.lisp index 543b03f..6df3b38 100644 --- a/tests/threads.impure.lisp +++ b/tests/threads.impure.lisp @@ -1566,13 +1566,16 @@ (with-test (:name :fp-mode-inheritance-threads) (flet ((test () - (let ((thread-fp-mode) - (fp-mode (dpb 0 sb-vm::float-sticky-bits (sb-vm:floating-point-modes)))) - (sb-thread:join-thread - (sb-thread:make-thread - (lambda () - (setf thread-fp-mode - (dpb 0 sb-vm::float-sticky-bits (sb-vm:floating-point-modes)))))) + (let* ((reserved-bits #+x86 (ash #b1110000011000000 16) + #-x86 0) + (fp-mode (logandc2 (dpb 0 sb-vm::float-sticky-bits (sb-vm:floating-point-modes)) + reserved-bits)) + (thread-fp-mode + (sb-thread:join-thread + (sb-thread:make-thread + (lambda () + (dpb 0 sb-vm::float-sticky-bits (sb-vm:floating-point-modes))))))) + (assert (= fp-mode thread-fp-mode))))) (test) (sb-int:with-float-traps-masked (:divide-by-zero) ----------------------------------------------------------------------- hooks/post-receive -- SBCL |
From: Christophe R. <cr...@us...> - 2015-04-28 10:53:20
|
The branch "master" has been updated in SBCL: via c9bd3fad4ec861528a3ba84e54c84423a56bb7cd (commit) from 74f66dcd906f954d4df8db387f8518ca8af3e87b (commit) - Log ----------------------------------------------------------------- commit c9bd3fad4ec861528a3ba84e54c84423a56bb7cd Author: Christophe Rhodes <cs...@ca...> Date: Tue Apr 28 11:52:06 2015 +0100 cross-host-friendly version of uninterned symbol dumping in the cross-compiler, always dump via copy-symbol if possble, ignoring issues of string type --- src/compiler/dump.lisp | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/compiler/dump.lisp b/src/compiler/dump.lisp index f59f89c..2a566e9 100644 --- a/src/compiler/dump.lisp +++ b/src/compiler/dump.lisp @@ -951,7 +951,8 @@ (setq pkg sb!int:*cl-package*))) (cond ((null pkg) - (let ((this-base-p (typep pname 'base-string))) + (let ((this-base-p #+sb-xc-host t + #-sb-xc-host (typep pname 'base-string))) (dolist (lookalike (gethash pname (fasl-output-string=-table file)) (dump-fop 'fop-uninterned-symbol-save file pname-length)) @@ -960,7 +961,9 @@ ;; preserve the type of the string (base or character) anyway, ;; but if we did, then this would be right also. ;; [what about a symbol whose name is a (simple-array nil (0))?] - (let ((that-base-p (typep (symbol-name lookalike) 'base-string))) + (let ((that-base-p + #+sb-xc-host t + #-sb-xc-host (typep (symbol-name lookalike) 'base-string))) (when (or (and this-base-p that-base-p) (and (not this-base-p) (not that-base-p))) (dump-fop 'fop-copy-symbol-save file ----------------------------------------------------------------------- hooks/post-receive -- SBCL |
From: stassats <sta...@us...> - 2015-04-27 20:56:18
|
The branch "master" has been updated in SBCL webpage: from e8e1f890c0166c2776b6261c276952029ef3338a (commit) - Log ----------------------------------------------------------------- commit a7295360698622f679fb3263a2c7a31100396d2f Author: Stas Boukarev <sta...@gm...> Date: Mon Apr 27 23:52:35 2015 +0300 + 1.2.11 Windows --- platform-support-platforms.lisp | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/platform-support-platforms.lisp b/platform-support-platforms.lisp index 85c9908..bf69948 100644 --- a/platform-support-platforms.lisp +++ b/platform-support-platforms.lisp @@ -59,5 +59,5 @@ (define-port :x86 :debian-kfreebsd :available "1.2.7") (define-port :x86-64 :debian-kfreebsd :available "1.2.7") -(define-port :x86 :windows :available "1.2.7" :file-type "msi") -(define-port :x86-64 :windows :available "1.2.7" :file-type "msi") +(define-port :x86 :windows :available "1.2.11" :file-type "msi") +(define-port :x86-64 :windows :available "1.2.11" :file-type "msi") ----------------------------------------------------------------------- hooks/post-receive -- SBCL webpage |
From: Christophe R. <cr...@us...> - 2015-04-27 15:37:57
|
The branch "master" has been updated in SBCL webpage: from 314feb3fc0c5eba78cec4ae23ce3b05fa25e2c93 (commit) - Log ----------------------------------------------------------------- commit e8e1f890c0166c2776b6261c276952029ef3338a Author: Christophe Rhodes <cs...@ca...> Date: Mon Apr 27 16:37:54 2015 +0100 Update for 1.2.11 --- platform-support-platforms.lisp | 2 +- sbcl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/platform-support-platforms.lisp b/platform-support-platforms.lisp index 179df0f..85c9908 100644 --- a/platform-support-platforms.lisp +++ b/platform-support-platforms.lisp @@ -26,7 +26,7 @@ (define-status :not-applicable "not-applicable" "No such system" " ") (define-port :x86 :linux :available "1.2.7") -(define-port :x86-64 :linux :available "1.2.10") +(define-port :x86-64 :linux :available "1.2.11") (define-port :armel :linux :available "1.2.7") (define-port :armhf :linux :available "1.2.7") (define-port :powerpc :linux :available "1.2.7") diff --git a/sbcl b/sbcl index e9071b4..969d9c6 160000 --- a/sbcl +++ b/sbcl @@ -1 +1 @@ -Subproject commit e9071b4ccb3e7f8eb94fa809e84bf0ea7fdfb4e3 +Subproject commit 969d9c67180e781916991667fbd5ab53c369c7f3 ----------------------------------------------------------------------- hooks/post-receive -- SBCL webpage |
From: stassats <sta...@us...> - 2015-04-27 15:33:08
|
The branch "master" has been updated in SBCL: via 74f66dcd906f954d4df8db387f8518ca8af3e87b (commit) from 969d9c67180e781916991667fbd5ab53c369c7f3 (commit) - Log ----------------------------------------------------------------- commit 74f66dcd906f954d4df8db387f8518ca8af3e87b Author: Stas Boukarev <sta...@gm...> Date: Mon Apr 27 18:31:56 2015 +0300 sb-introspect: restore finding VOPs through translated functions. --- contrib/sb-introspect/introspect.lisp | 33 ++++++++++++++++++++++++++++++++- 1 files changed, 32 insertions(+), 1 deletions(-) diff --git a/contrib/sb-introspect/introspect.lisp b/contrib/sb-introspect/introspect.lisp index f8317e8..a7cacc7 100644 --- a/contrib/sb-introspect/introspect.lisp +++ b/contrib/sb-introspect/introspect.lisp @@ -162,6 +162,32 @@ constant pool." ;; is. (description nil :type list)) +(defun vop-sources-from-fun-templates (name) + (let ((fun-info (sb-int:info :function :info name))) + (when fun-info + (loop for vop in (sb-c::fun-info-templates fun-info) + for source = (find-definition-source + (sb-c::vop-info-generator-function vop)) + do (setf (definition-source-description source) + (list (sb-c::template-name vop) + (sb-c::template-note vop))) + collect source)))) + +(defun find-vop-source (name) + (let* ((templates (vop-sources-from-fun-templates name)) + (vop (gethash name sb-c::*backend-template-names*)) + (generator (when vop + (sb-c::vop-info-generator-function vop))) + (source (when generator + (find-definition-source generator)))) + (cond + (source + (setf (definition-source-description source) + (list name)) + (cons source templates)) + (t + templates)))) + (defun find-definition-sources-by-name (name type) "Returns a list of DEFINITION-SOURCEs for the objects of type TYPE defined with name NAME. NAME may be a symbol or a extended function @@ -335,7 +361,12 @@ If an unsupported TYPE is requested, the function will return NIL. (setf (definition-source-description source) (list name)) source)))))) - ((:vop :alien-type) + (:vop + (let ((loc (sb-int:info :source-location type name))) + (if loc + (translate-source-location loc) + (find-vop-source name)))) + (:alien-type (let ((loc (sb-int:info :source-location type name))) (and loc (translate-source-location loc)))) ----------------------------------------------------------------------- hooks/post-receive -- SBCL |
From: Christophe R. <cr...@us...> - 2015-04-27 15:23:39
|
The annotated tag "sbcl-1.2.11" has been created in SBCL: at 9cd86f804bf9d6b8fed9d31c749cc5a7e3a88eb9 (tag) tagging 969d9c67180e781916991667fbd5ab53c369c7f3 (commit) replaces sbcl-1.2.10 tagged by Christophe Rhodes on Mon Apr 27 14:56:40 2015 +0000 - Log ----------------------------------------------------------------- changes in sbcl-1.2.11 relative to sbcl-1.2.10: * enhancement: SET-PPRINT-DISPATCH will warn when given an expression in which any part is unrecognizable as a legal type-specifier. The dispatch table will be altered, but the new entry is disabled. Subsequent type-defining forms will cause pprint-dispatch tables to re-examine whether any disabled entries should be enabled. (lp#1429520) * enhancement: Loading code containing calls to a deprecated function will, under most circumstances, signal warnings similar to compiling such code. The usual caveat holds about not detecting calls through a computed name, as in (funcall (intern "DEPRECATED-FUN" "SB-EXT")). * enhancement: (SB-EXT:COMPILE-FILE-LINE) is a new macro that expands to a constant (VALUES integer integer) indicating the source line/column from which it was read, intended for logging Lisp runtime errors in a style similar to that afforded by the C preprocessor __LINE__ macro. Similarly (SB-EXT:COMPILE-FILE-POSITION) returns a position in characters. * enhancement: improved source locations for VOPs, alien types and declarations. * bug fix: functions in :FINAL deprecation have the correct docstring. No visible change, as no such functions presently exist. (lp#1439151) * bug fix: (SETF (FDEFINITION this) (FDEFINITION OTHER)) signals an error if OTHER names either a macro or special-operator. (lp#1439921) -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iQEcBAABCgAGBQJVPk4pAAoJEOvVlakQDWPNrt0H/0InepQMzt/sdGW2q+N171pM aaaxakqe9X772SnMRCM37x4OzbERZEksZZIOEV0r7/JivYX3Wz3GwglD5vkUMrJk cMzYNWTk4JCmxY1QVyIhWP1UGzlSl4NR+HKdeDFx2gPVM5MqfCp6WifCHriNATe8 0OPL3ajCtbxPxhfGNJCnCOfRKg/kROMCHO6nssbgeWOAIAWC9xPF/hdZQBIXCBPa zLNdhOaFbUcdGyLNDDwLQ9DigXRXva4E6YPYrJ9uo1CQmt0N+gKHaG/iV7d21+dZ Kp5eXx02ZCPtS7pOAtTyidPjG8slTLY/pFgjR1tkZvcStsthK2rnqE8LafXNOQk= =P6dE -----END PGP SIGNATURE----- Christophe Rhodes (2): build fix for compile-file-position 1.2.11: will be tagged as "sbcl-1.2.11" Douglas Katzman (50): Replace literal number with symbolic constant Delete the x86-specific variant of LOAD-CODE Remove misplaced DECLARE Don't freely reference *FASL-INPUT-STREAM*. Change *FOP-TABLE* into a structure slot. Rewrite COLD-FOP-FUNCALL{-FOR-EFFECT} Fix unused variable warning in genesis. Don't need *COLD-FOP-FUNS* - just change *FOP-FOPS* in the xc host. Move *FOP-STACK* into FASL-INPUT structure. Pad assembly routines to double-Lispword alignment. x86-64: accept :LOCK prefix on INC,DEC,BTS,BTR,BTC Delete not-terribly-useful infinite loop. x86-64: Remove all except RAX variant of ENSURE-SYMBOL-TLS-INDEX Use barrier where intended. Dunno why it didn't work for me before. Fix meta-bug in test case. Make pprint-dispatch tables resilient to uncheckable types. Refactor CALL-WITH-EACH-GLOBALDB-NAME Warn about use of deprecated functions when loading compiled code Fix finally deprecated function documentation. A kludge is gone as of 9ff0b77a if not earlier than that. Reject macro/special-operator guard functions in (SETF FDEFINITION). Really remove FOP-FSET Enable FOP-KNOWN-FUN during cross-compilation Add comment that get-header-data seems wrong for 64-bit. Avoid forward-reference to some simple inline functions. *SOURCE-LOCATION-THUNKS* are no more. Refactor DO-FORMS-FROM-INFO Don't cons strings when read-suppressing Reader enhancement from sbcl-devel (Nov. 2014) with better interface. Put ASFLAGS back. PPC build fails without them. Skip a bunch of type checks in FAST-READ-CHAR Small improvement to TYPEP for abstract base structure types Rename FD-STREAM-CHAR-POS to FD-STREAM-OUTPUT-COLUMN. Improve STREAMP and EXTENDED-SEQUENCE-P Change the return convention of two local refill-buffer functions. Make POSITION-DERIVE-TYPE understand some non-constant sequences Generate shorter and equally fast code for read-line-from-frc-buffer. Don't want two different versions of FOO in one compiled test file. Make FORM-TRACKING-STREAM inherit from FD-STREAM Derive type of COUNT,COUNT-IF Allow COMPILE-FILE-POSITION in more situations Add FIXME at comment which disagrees with reality. Express !INVOKE-TYPE-METHOD more succinctly. Report reader error position in COMPILE-FILE more accurately. Fix data race on PCC discovered by Stas. DEFINE-HASH-CACHE is not needed in the target. By popular demand, rename COMPILE-FILE-POSITION to -LINE Report reader error position in LOAD of lisp files more accurately. BARRIER can't be a DEF!MACRO nor twice defined (blame 7bb4c044). x86-64: Fix MOVNTI encoder/printer which never worked right. Jan Moringen (6): Comment fixes in ir1tran-lambda.lisp OAOO fix in default MAKE-LOAD-FORM methods Fix unused variable warnings in step.impure.lisp Typo fixes in Unicode section of beyond-ansi.texinfo Merge {early,late}-setf.lisp into just setf.lisp {SHIFT,PSET,ROTATE}F simplifications Stas Boukarev (23): Disable os-provides-dladdr on NetBSD. Optimize ABS slightly. Adapt to the new version of WiX. Prune old and used stuff from makefiles. Put ASFLAGS back on sparc and alpha. Put back LDFLAGS. Restore locating of ir1 translators. Source locate mixin VOPs. sb-bsd-sockets: Stop failing tests when there's no ipv6 support. Fix stream.impure tests. Track source location of declarations. Fix sb-gmp and sb-mpfr on 64-bit Windows. Add source locations for alien-types. Add source locations for define-primitive-object. Fix threads on Windows with newer MinGW. Add source locations for alien variables. Change the remaining pthread_sigmask to thread_sigmask on win32. Fix win32-x86 build. Fix sb-bsd-sockets on win32-x86. Don't report sb-sprof as failing on Windows. unset EXTRA_CFLAGS when building contribs. Use `undefine' instead of `unset' in asdf-module.mk `undefine' directive is only present in newer make versions. ----------------------------------------------------------------------- hooks/post-receive -- SBCL |
From: Christophe R. <cr...@us...> - 2015-04-27 15:23:36
|
The branch "master" has been updated in SBCL: via 969d9c67180e781916991667fbd5ab53c369c7f3 (commit) from cb7ca3fcb190cf5c05451cf979a8126d5526fa10 (commit) - Log ----------------------------------------------------------------- commit 969d9c67180e781916991667fbd5ab53c369c7f3 Author: Christophe Rhodes <cs...@ca...> Date: Mon Apr 27 14:56:40 2015 +0000 1.2.11: will be tagged as "sbcl-1.2.11" --- NEWS | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/NEWS b/NEWS index 6cf565b..43e49f0 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,5 @@ ;;;; -*- coding: utf-8; fill-column: 78 -*- -changes relative to sbcl-1.2.10: +changes in sbcl-1.2.11 relative to sbcl-1.2.10: * enhancement: SET-PPRINT-DISPATCH will warn when given an expression in which any part is unrecognizable as a legal type-specifier. The dispatch table will be altered, but the new entry is disabled. ----------------------------------------------------------------------- hooks/post-receive -- SBCL |
From: stassats <sta...@us...> - 2015-04-26 23:48:56
|
The branch "master" has been updated in SBCL: via cb7ca3fcb190cf5c05451cf979a8126d5526fa10 (commit) from 1830176417adac41d9c4c5894b1dce2c10280dcb (commit) - Log ----------------------------------------------------------------- commit cb7ca3fcb190cf5c05451cf979a8126d5526fa10 Author: Stas Boukarev <sta...@gm...> Date: Mon Apr 27 02:47:43 2015 +0300 `undefine' directive is only present in newer make versions. unset EXTRA_CFLAGS in make-target-contrib.sh instead. --- contrib/asdf-module.mk | 2 -- make-target-contrib.sh | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/asdf-module.mk b/contrib/asdf-module.mk index fa1f7c7..df134ea 100644 --- a/contrib/asdf-module.mk +++ b/contrib/asdf-module.mk @@ -10,8 +10,6 @@ DEST=$(SBCL_PWD)/obj/sbcl-home/contrib/ FASL=$(DEST)/$(SYSTEM).fasl ASD=$(DEST)/$(SYSTEM).asd -undefine EXTRA_CFLAGS - ifeq (SunOS,$(UNAME)) EXTRA_CFLAGS=-D_XOPEN_SOURCE=500 -D__EXTENSIONS__ PATH:=/usr/xpg4/bin:${PATH} diff --git a/make-target-contrib.sh b/make-target-contrib.sh index af9df82..71f0a3f 100755 --- a/make-target-contrib.sh +++ b/make-target-contrib.sh @@ -28,6 +28,8 @@ if [ -z $CC ]; then CC=gcc fi fi + +unset EXTRA_CFLAGS # avoid any potential interference export CC LANG LC_ALL # Load our build configuration ----------------------------------------------------------------------- hooks/post-receive -- SBCL |
From: stassats <sta...@us...> - 2015-04-26 20:53:22
|
The branch "master" has been updated in SBCL: via 1830176417adac41d9c4c5894b1dce2c10280dcb (commit) from faf9cd25760ff05063fa1cf2340e14193dcb9eab (commit) - Log ----------------------------------------------------------------- commit 1830176417adac41d9c4c5894b1dce2c10280dcb Author: Stas Boukarev <sta...@gm...> Date: Sun Apr 26 23:52:55 2015 +0300 Use `undefine' instead of `unset' in asdf-module.mk This a makefile, not a shell script. --- contrib/asdf-module.mk | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/contrib/asdf-module.mk b/contrib/asdf-module.mk index 1329134..fa1f7c7 100644 --- a/contrib/asdf-module.mk +++ b/contrib/asdf-module.mk @@ -10,7 +10,7 @@ DEST=$(SBCL_PWD)/obj/sbcl-home/contrib/ FASL=$(DEST)/$(SYSTEM).fasl ASD=$(DEST)/$(SYSTEM).asd -unset EXTRA_CFLAGS +undefine EXTRA_CFLAGS ifeq (SunOS,$(UNAME)) EXTRA_CFLAGS=-D_XOPEN_SOURCE=500 -D__EXTENSIONS__ ----------------------------------------------------------------------- hooks/post-receive -- SBCL |
From: stassats <sta...@us...> - 2015-04-26 20:27:00
|
The branch "master" has been updated in SBCL: via faf9cd25760ff05063fa1cf2340e14193dcb9eab (commit) from 88d1c28806352ee474a2a6f9de5fc91d4fbdb98b (commit) - Log ----------------------------------------------------------------- commit faf9cd25760ff05063fa1cf2340e14193dcb9eab Author: Stas Boukarev <sta...@gm...> Date: Sun Apr 26 23:26:43 2015 +0300 unset EXTRA_CFLAGS when building contribs. The user supplied EXTRA_CFLAGS may interfere with contrib building. --- contrib/asdf-module.mk | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/contrib/asdf-module.mk b/contrib/asdf-module.mk index df134ea..1329134 100644 --- a/contrib/asdf-module.mk +++ b/contrib/asdf-module.mk @@ -10,6 +10,8 @@ DEST=$(SBCL_PWD)/obj/sbcl-home/contrib/ FASL=$(DEST)/$(SYSTEM).fasl ASD=$(DEST)/$(SYSTEM).asd +unset EXTRA_CFLAGS + ifeq (SunOS,$(UNAME)) EXTRA_CFLAGS=-D_XOPEN_SOURCE=500 -D__EXTENSIONS__ PATH:=/usr/xpg4/bin:${PATH} ----------------------------------------------------------------------- hooks/post-receive -- SBCL |
From: stassats <sta...@us...> - 2015-04-26 20:06:45
|
The branch "master" has been updated in SBCL: via 88d1c28806352ee474a2a6f9de5fc91d4fbdb98b (commit) from 6d29a65afa98f36a19b58831a01453d23d8708db (commit) - Log ----------------------------------------------------------------- commit 88d1c28806352ee474a2a6f9de5fc91d4fbdb98b Author: Stas Boukarev <sta...@gm...> Date: Sun Apr 26 23:06:25 2015 +0300 Don't report sb-sprof as failing on Windows. It just doesn't work on Windows yet, no reason to treat it as if it's broken. --- contrib/sb-sprof/sb-sprof.lisp | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/contrib/sb-sprof/sb-sprof.lisp b/contrib/sb-sprof/sb-sprof.lisp index 6c3ee7c..3e84800 100644 --- a/contrib/sb-sprof/sb-sprof.lisp +++ b/contrib/sb-sprof/sb-sprof.lisp @@ -506,7 +506,7 @@ profiling, and :TIME for wallclock profiling.") (not (eq *timer-thread* thread))) (member thread profiled-threads :test #'eq)))) -#+(or x86 x86-64) +#+(and (or x86 x86-64) (not win32)) (progn ;; Ensure that only one thread at a time will be doing profiling stuff. (defvar *profiler-lock* (sb-thread:make-mutex :name "Statistical Profiler")) @@ -750,6 +750,7 @@ The following keyword args are recognized: (defvar *old-alloc-interval* nil) (defvar *old-sample-interval* nil) +#-win32 (defun start-profiling (&key (max-samples *max-samples*) (mode *sampling-mode*) (sample-interval *sample-interval*) ----------------------------------------------------------------------- hooks/post-receive -- SBCL |
From: Douglas K. <sn...@us...> - 2015-04-25 00:27:07
|
The branch "master" has been updated in SBCL: via 6d29a65afa98f36a19b58831a01453d23d8708db (commit) from 7014958ab489a3e77e7860d7860c2463820e417d (commit) - Log ----------------------------------------------------------------- commit 6d29a65afa98f36a19b58831a01453d23d8708db Author: Douglas Katzman <do...@go...> Date: Fri Apr 24 20:05:20 2015 -0400 x86-64: Fix MOVNTI encoder/printer which never worked right. --- src/compiler/x86-64/insts.lisp | 5 +-- tests/assembler.pure.lisp | 42 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/src/compiler/x86-64/insts.lisp b/src/compiler/x86-64/insts.lisp index ff2940a..04f4812 100644 --- a/src/compiler/x86-64/insts.lisp +++ b/src/compiler/x86-64/insts.lisp @@ -3724,14 +3724,13 @@ (define-sse-inst-implicit-mask blendvps #x66 #x38 #x14) (define-sse-inst-implicit-mask blendvpd #x66 #x38 #x15)) -;; FIXME: is that right!? (define-instruction movnti (segment dst src) - (:printer ext-reg-reg/mem-no-width ((op #xc3))) + (:printer ext-reg-reg/mem-no-width ((op #xc3)) '(:name :tab reg/mem ", " reg)) (:emitter (aver (not (or (register-p dst) (xmm-register-p dst)))) (aver (register-p src)) - (maybe-emit-rex-for-ea segment src dst) + (maybe-emit-rex-for-ea segment dst src) (emit-byte segment #x0f) (emit-byte segment #xc3) (emit-ea segment dst (reg-tn-encoding src)))) diff --git a/tests/assembler.pure.lisp b/tests/assembler.pure.lisp new file mode 100644 index 0000000..c4cb4ca --- /dev/null +++ b/tests/assembler.pure.lisp @@ -0,0 +1,42 @@ +;;;; tests for assembler/disassembler + +;;;; This software is part of the SBCL system. See the README file for +;;;; more information. +;;;; +;;;; While most of SBCL is derived from the CMU CL system, the test +;;;; files (like this one) were written from scratch after the fork +;;;; from CMU CL. +;;;; +;;;; This 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) + +(load "test-util.lisp") +(use-package :test-util) + +;; this is architecture-agnostic +(defun test-assemble (inst expect) + (let ((segment (sb-assem:make-segment :type :regular))) + (apply (symbolicate (car inst) "-INST-EMITTER") segment nil (cdr inst)) + (let* ((buf (sb-assem::segment-buffer segment)) + (string + (with-output-to-string (stream) + (with-pinned-objects (buf) + (let ((sb-disassem:*disassem-location-column-width* 0)) + (sb-disassem:disassemble-memory + (sap-int (vector-sap buf)) + (sb-assem::segment-current-posn segment) + :stream stream)))))) + (assert (string= (subseq string (1+ (position #\newline string)) + (1- (length string))) ; chop final newline + expect))))) + +(with-test (:name :assemble-movti-instruction :skipped-on '(not :x86-64)) + (flet ((test-movnti (dst src expect) + (test-assemble `(movnti ,dst ,src) expect))) + (test-movnti (make-ea :dword :base rdi-tn :disp 57) eax-tn + "; 0FC34739 MOVNTI [RDI+57], EAX") + (test-movnti (make-ea :qword :base rax-tn) r12-tn + "; 4C0FC320 MOVNTI [RAX], R12"))) ----------------------------------------------------------------------- hooks/post-receive -- SBCL |
From: stassats <sta...@us...> - 2015-04-23 18:08:07
|
The branch "master" has been updated in SBCL: via 7014958ab489a3e77e7860d7860c2463820e417d (commit) from e6d051189f61a91b1c06601407caccb3487023d8 (commit) - Log ----------------------------------------------------------------- commit 7014958ab489a3e77e7860d7860c2463820e417d Author: Stas Boukarev <sta...@gm...> Date: Thu Apr 23 21:07:54 2015 +0300 Fix sb-bsd-sockets on win32-x86. EAFNOSUPPORT isn't inclued in winsock2.h on x86 (but is on x86-64), include errno.h as well. --- contrib/sb-bsd-sockets/win32-constants.lisp | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/contrib/sb-bsd-sockets/win32-constants.lisp b/contrib/sb-bsd-sockets/win32-constants.lisp index 19fae1e..de823f5 100644 --- a/contrib/sb-bsd-sockets/win32-constants.lisp +++ b/contrib/sb-bsd-sockets/win32-constants.lisp @@ -4,7 +4,7 @@ ;;; name it thus to avoid having to mess with the clc lpn translations ;;; first, the headers necessary to find definitions of everything -("winsock2.h") +("winsock2.h" "errno.h") ;;; then the stuff we're looking for ((:integer af-inet "AF_INET" "IP Protocol family") ----------------------------------------------------------------------- hooks/post-receive -- SBCL |
From: stassats <sta...@us...> - 2015-04-23 18:08:05
|
The branch "master" has been updated in SBCL: via e6d051189f61a91b1c06601407caccb3487023d8 (commit) from b9e3180b4daf4835879937ce593dc2b9c8d8a0c6 (commit) - Log ----------------------------------------------------------------- commit e6d051189f61a91b1c06601407caccb3487023d8 Author: Stas Boukarev <sta...@gm...> Date: Thu Apr 23 21:07:23 2015 +0300 Fix win32-x86 build. Padding zeros between unwind and win32-unwind-tail interfered with their operation. Merging them into a single routine solves the problem. --- src/assembly/x86/assem-rtns.lisp | 21 ++------------------- 1 files changed, 2 insertions(+), 19 deletions(-) diff --git a/src/assembly/x86/assem-rtns.lisp b/src/assembly/x86/assem-rtns.lisp index 60a6ec4..d0ad391 100644 --- a/src/assembly/x86/assem-rtns.lisp +++ b/src/assembly/x86/assem-rtns.lisp @@ -326,12 +326,8 @@ (dotimes (i 8) (inst fstp fr0-tn)) - ;; I'm unlikely to ever forget this again. + ;; ABI requires this (inst cld) - - ;; Set up a bogus stack frame for RtlUnwind to pick its return - ;; address from. (Yes, this is how RtlUnwind works.) - (inst push (make-fixup 'win32-unwind-tail :assembly-routine)) (inst push ebp-tn) (inst mov ebp-tn esp-tn) @@ -340,22 +336,10 @@ (inst push 0) (inst push 0) (inst push ecx-tn) - (inst call (make-fixup "RtlUnwind" :foreign))) -;; We want no VOP for this one and for it to only happen on Win32 -;; targets. Hence the following disaster. -#!+#.(cl:if (cl:member sb-assembling cl:*features*) win32 '(or)) -(define-assembly-routine - (win32-unwind-tail (:return-style :none)) - ((:temp block unsigned-reg eax-offset)) + (inst call (make-fixup "RtlUnwind" :foreign)) - ;; The unwind returns here. Had to use a VOP for this because - ;; PUSH won't accept a label as an argument. - - ;; Clean up the bogus stack frame we pushed for the unwind. (inst pop ebp-tn) - (inst pop esi-tn) ;; Random scratch register. - ;; This section based on VOP CALL-OUT. ;; Restore the NPX for lisp; ensure no regs are empty (dotimes (i 8) @@ -372,7 +356,6 @@ ;; in ecx-tn. Fortunately, that's where they are already. (inst jmp (make-ea-for-object-slot block unwind-block-entry-pc-slot 0))) - ;;;; Win32 UWP block SEH interface. ;; We want no VOP for this one and for it to only happen on Win32 ----------------------------------------------------------------------- hooks/post-receive -- SBCL |
From: stassats <sta...@us...> - 2015-04-23 14:37:25
|
The branch "master" has been updated in SBCL: via b9e3180b4daf4835879937ce593dc2b9c8d8a0c6 (commit) from c2a4aec2a72566c6fbae566a4a8a8e5995b8803f (commit) - Log ----------------------------------------------------------------- commit b9e3180b4daf4835879937ce593dc2b9c8d8a0c6 Author: Stas Boukarev <sta...@gm...> Date: Thu Apr 23 17:32:03 2015 +0300 Change the remaining pthread_sigmask to thread_sigmask on win32. --- src/code/target-exception.lisp | 1 + src/runtime/win32-os.c | 2 +- 2 files changed, 2 insertions(+), 1 deletions(-) diff --git a/src/code/target-exception.lisp b/src/code/target-exception.lisp index 6f22232..14152ba 100644 --- a/src/code/target-exception.lisp +++ b/src/code/target-exception.lisp @@ -156,6 +156,7 @@ void (mask unsigned)) + ;; KLUDGE: unused, was intended for invoke-interruption below? (defmacro without-interrupts/with-deferrables-blocked (&body body) (let ((mask-var (gensym))) `(without-interrupts diff --git a/src/runtime/win32-os.c b/src/runtime/win32-os.c index 4b664db..8a5f6aa 100644 --- a/src/runtime/win32-os.c +++ b/src/runtime/win32-os.c @@ -229,7 +229,7 @@ unsigned long block_deferrables_and_return_mask() void apply_sigmask(unsigned long sigmask) { sigset_t sset = (sigset_t)sigmask; - pthread_sigmask(SIG_SETMASK, &sset, 0); + thread_sigmask(SIG_SETMASK, &sset, 0); } #endif ----------------------------------------------------------------------- hooks/post-receive -- SBCL |
From: Douglas K. <sn...@us...> - 2015-04-22 22:22:44
|
The branch "master" has been updated in SBCL: via c2a4aec2a72566c6fbae566a4a8a8e5995b8803f (commit) from 997a155d617c0a6a9d3c82236627a1585801388e (commit) - Log ----------------------------------------------------------------- commit c2a4aec2a72566c6fbae566a4a8a8e5995b8803f Author: Douglas Katzman <do...@go...> Date: Wed Apr 22 17:05:24 2015 -0400 BARRIER can't be a DEF!MACRO nor twice defined (blame 7bb4c044). Otherwise it is impossible to comprehend the behavior of macros like DEFUN-CACHED which expand to macros which define functions. Just one definition for the host, and one for the target. --- build-order.lisp-expr | 6 +++--- src/code/barrier.lisp | 14 ++++++-------- src/code/early-extensions.lisp | 9 ++------- 3 files changed, 11 insertions(+), 18 deletions(-) diff --git a/build-order.lisp-expr b/build-order.lisp-expr index 1e92c5c..7dbbf59 100644 --- a/build-order.lisp-expr +++ b/build-order.lisp-expr @@ -117,6 +117,9 @@ ;; to %OTHER-POINTER-WIDETAG, which is an ordinary inline function, and not ;; known to the cross-compiler until it has seen the DEFUN in 'kernel' ("src/code/kernel" :not-host) + ;; This has the BARRIER stuff that the threading support needs, + ;; required for some code in 'early-extensions' + ("src/code/barrier" :not-host) ("src/code/early-extensions") ; on host for COLLECT, SYMBOLICATE, etc. ("src/code/parse-body") ; on host for PARSE-BODY ("src/code/parse-defmacro") ; on host for PARSE-DEFMACRO @@ -474,9 +477,6 @@ ;; This has ASSEMBLY-UNIT-related stuff needed by core.lisp. ("src/compiler/early-assem") - ;; This has the BARRIER stuff that the threading support needs. - ("src/code/barrier") - ;; core.lisp contains DEFSTRUCT CORE-OBJECT, and "compiler/main.lisp" ;; does lots of (TYPEP FOO 'CORE-OBJECT), so it's nice to compile this ;; before "compiler/main.lisp" so that those can be coded efficiently diff --git a/src/code/barrier.lisp b/src/code/barrier.lisp index 0da2cdd..937cebe 100644 --- a/src/code/barrier.lisp +++ b/src/code/barrier.lisp @@ -36,16 +36,13 @@ ;;;; The actual barrier macro and support -(defparameter *barrier-kind-functions* +(defconstant-eqx +barrier-kind-functions+ '(:compiler sb!vm:%compiler-barrier :memory sb!vm:%memory-barrier :read sb!vm:%read-barrier :write sb!vm:%write-barrier - :data-dependency sb!vm:%data-dependency-barrier)) + :data-dependency sb!vm:%data-dependency-barrier) + #'equal) -(defun barrier-kind-function (kind) - (or (getf *barrier-kind-functions* kind) - (error "Unknown barrier kind ~S" kind))) - -(def!macro barrier ((kind) &body forms) +(defmacro barrier ((kind) &body forms) #!+sb-doc "Insert a barrier in the code stream, preventing some sort of reordering. @@ -77,4 +74,5 @@ The file \"memory-barriers.txt\" in the Linux kernel documentation is highly recommended reading for anyone programming at this level." `(multiple-value-prog1 (progn ,@forms) - (,(barrier-kind-function kind)))) + (,(or (getf +barrier-kind-functions+ kind) + (error "Unknown barrier kind ~S" kind))))) diff --git a/src/code/early-extensions.lisp b/src/code/early-extensions.lisp index 6dbef43..0205066 100644 --- a/src/code/early-extensions.lisp +++ b/src/code/early-extensions.lisp @@ -648,11 +648,7 @@ ;; This barrier is a no-op on all multi-threaded SBCL ;; architectures. No CPU except Alpha will move a read ;; prior to a read on which it depends. - ;; FIXME: shouldn't need "#-sb-xc-host" but BARRIER in - ;; cross-thread is somehow replaced in xc with code - ;; that makes (SB!VM:%DATA-DEPENDENCY-BARRIER) appear - ;; as an infinitely self-recursive call. - #-sb-xc-host (sb!thread:barrier (:data-dependency)) + (sb!thread:barrier (:data-dependency)) (locally (declare (type ,line-type ,entry)) (let* ,binds (when (and ,@tests) @@ -676,8 +672,7 @@ ;; MUST NOT be observed by another thread before its cells ;; are filled. Equally bad, the 'output' cells in the line ;; could be 0 while the 'input' cells matched something. - ;; FIXME: as above, "#-sb-xc-host" should not be needed. - #-sb-xc-host (sb!thread:barrier (:write)) + (sb!thread:barrier (:write)) (cond ((eql (svref ,cache idx1) 0) (setf (svref ,cache idx1) ,entry)) ((eql (svref ,cache idx2) 0) ----------------------------------------------------------------------- hooks/post-receive -- SBCL |
From: Douglas K. <sn...@us...> - 2015-04-22 12:29:31
|
The branch "master" has been updated in SBCL: via 997a155d617c0a6a9d3c82236627a1585801388e (commit) from fff145335f417c66f2856c27067409d8de40d096 (commit) - Log ----------------------------------------------------------------- commit 997a155d617c0a6a9d3c82236627a1585801388e Author: Douglas Katzman <do...@go...> Date: Wed Apr 22 08:24:57 2015 -0400 Report reader error position in LOAD of lisp files more accurately. --- src/code/early-extensions.lisp | 18 +++++-------- src/code/fd-stream.lisp | 8 +++-- src/code/target-load.lisp | 5 ++- src/compiler/main.lisp | 33 ++++++++--------------- src/compiler/target-main.lisp | 56 ++++++++++++++++++++------------------- tests/load.pure.lisp | 15 ++++++++++ 6 files changed, 70 insertions(+), 65 deletions(-) diff --git a/src/code/early-extensions.lisp b/src/code/early-extensions.lisp index f552f17..6dbef43 100644 --- a/src/code/early-extensions.lisp +++ b/src/code/early-extensions.lisp @@ -1645,21 +1645,17 @@ to :INTERPRET, an interpreter will be used.") (file-position stream)))) (defun stream-error-position-info (stream &optional position) - (declare (special sb!c::*source-info*)) ; FIXME: disentangle from compiler - (when (and (not position) - (form-tracking-stream-p stream) - (boundp 'sb!c::*source-info*) - (eq (sb!c::source-info-stream sb!c::*source-info*) stream) - (sb!c::file-info-newlines - (sb!c::source-info-file-info sb!c::*source-info*))) - (let* ((charpos (sb!impl::ansi-stream-input-char-pos stream)) - (line/col (sb!c::line/col-from-charpos - charpos - (sb!c::source-info-file-info sb!c::*source-info*)))) + (when (and (not position) (form-tracking-stream-p stream)) + (let ((line/col (sb!c::line/col-from-charpos stream))) (return-from stream-error-position-info `((:line ,(car line/col)) (:column ,(cdr line/col)) ,@(let ((position (file-position-or-nil-for-error stream))) + ;; FIXME: 1- is technically broken for multi-byte external + ;; encodings, albeit bug-compatible with the broken code in + ;; the general case (below) for non-form-tracking-streams. + ;; i.e. If you position to this byte, it might not be the + ;; first byte of any character. (when position `((:file-position ,(1- position))))))))) ;; Give up early for interactive streams and non-character stream. diff --git a/src/code/fd-stream.lisp b/src/code/fd-stream.lisp index b1fb7dd..8058a6a 100644 --- a/src/code/fd-stream.lisp +++ b/src/code/fd-stream.lisp @@ -211,7 +211,9 @@ (input-char-pos 0)) (:copier nil)) ;; a function which is called for events on this stream. - (observer #'error :type function) + (observer (lambda (x y z) (declare (ignore x y z))) :type function) + ;; A vector of the character position of each #\Newline seen + (newlines (make-array 10 :fill-pointer 0 :adjustable t)) (last-newline -1 :type index-or-minus-1) ;; Better than reporting that a reader error occurred at a position ;; before any whitespace (or equivalently, a macro producing no value), @@ -2676,9 +2678,9 @@ (setf (form-tracking-stream-input-char-pos stream) pos)) (let ((char (aref chars i))) (when (and (eql char #\Newline) - ;; call observer only if it wasn't an unread and re-read + ;; record it only if it wasn't unread and re-read (> pos (form-tracking-stream-last-newline stream))) - (funcall (form-tracking-stream-observer stream) :newline pos nil) + (vector-push-extend pos (form-tracking-stream-newlines stream)) (setf (form-tracking-stream-last-newline stream) pos)) (incf pos)))) diff --git a/src/code/target-load.lisp b/src/code/target-load.lisp index 8da778f..7896b86 100644 --- a/src/code/target-load.lisp +++ b/src/code/target-load.lisp @@ -162,8 +162,9 @@ (when (and (or should-be-fasl-p (not (eql 0 (file-length stream)))) (fasl-header-p stream :errorp should-be-fasl-p)) (return-from load (load-stream stream t))))) - ;; Case 3: Open using the gived external format, process as source. - (with-open-file (stream pathname :external-format external-format) + ;; Case 3: Open using the given external format, process as source. + (with-open-file (stream pathname :external-format external-format + :class 'form-tracking-stream) (load-stream stream nil))))) ;; This implements the defaulting SBCL seems to have inherited from diff --git a/src/compiler/main.lisp b/src/compiler/main.lisp index 2bc572e..35b2973 100644 --- a/src/compiler/main.lisp +++ b/src/compiler/main.lisp @@ -821,12 +821,8 @@ necessary, since type inference may take arbitrarily long to converge.") ;; end of the previous form) (forms (make-array 10 :fill-pointer 0 :adjustable t) :type (vector t)) (positions (make-array 10 :fill-pointer 0 :adjustable t) :type (vector t)) - ;; The next two slots are updated by form-tracking-stream-observer - ;; when this FILE-INFO is for COMPILE-FILE (and not for COMPILE). - ;; A vector of the character position of each #\Newline seen - (newlines nil :type (or null (vector t)) :read-only t) - ;; A vector of character ranges than span each subform in the TLF, - ;; reset to empty for each one. + ;; A vector of character ranges than span each subform in the TLF, + ;; reset to empty for each one, updated by form-tracking-stream-observer. (subforms nil :type (or null (vector t)) :read-only t)) ;;; The SOURCE-INFO structure provides a handle on all the source @@ -834,7 +830,8 @@ necessary, since type inference may take arbitrarily long to converge.") (def!struct (source-info #-no-ansi-print-object (:print-object (lambda (s stream) - (print-unreadable-object (s stream :type t)))) + (print-unreadable-object + (s stream :type t :identity t)))) (:copier nil)) ;; the UT that compilation started at (start-time (get-universal-time) :type unsigned-byte) @@ -859,9 +856,6 @@ necessary, since type inference may take arbitrarily long to converge.") :file-info (make-file-info :name (truename file) :untruename (merge-pathnames file) :external-format external-format - :newlines - (if form-tracking-p - (make-array 10 :fill-pointer 0 :adjustable t)) :subforms (if form-tracking-p (make-array 100 :fill-pointer 0 :adjustable t)) @@ -911,14 +905,10 @@ necessary, since type inference may take arbitrarily long to converge.") (open name :direction :input :external-format external-format - #-sb-xc-host - :class ;; SBCL stream classes aren't available in the host - #-sb-xc-host - (if (file-info-newlines file-info) - 'form-tracking-stream - 'fd-stream)))) - (when (form-tracking-stream-p stream) + #-sb-xc-host :class + #-sb-xc-host 'form-tracking-stream))) + (when (file-info-subforms file-info) (setf (form-tracking-stream-observer stream) (make-form-tracking-stream-observer file-info))) stream))))) @@ -945,8 +935,6 @@ necessary, since type inference may take arbitrarily long to converge.") (handler-case (progn ;; Reset for a new toplevel form. - ;; FIXME: It would be nice to make LOAD similarly do this - ;; for accurate position reporting by line/column. (when (form-tracking-stream-p stream) (setf (form-tracking-stream-form-start-char-pos stream) nil)) (awhen (file-info-subforms file-info) @@ -978,8 +966,8 @@ necessary, since type inference may take arbitrarily long to converge.") :line/col (and (form-tracking-stream-p stream) (line/col-from-charpos - (form-tracking-stream-form-start-char-pos stream) - file-info)) + stream + (form-tracking-stream-form-start-char-pos stream))) :stream stream))))) (unless (eq form stream) ; not EOF (funcall function form @@ -1884,7 +1872,8 @@ SPEED and COMPILATION-SPEED optimization values, and the (failure-p t) ; T in case error keeps this from being set later (input-pathname (verify-source-file input-file)) (source-info - (make-file-source-info input-pathname external-format t)) + (make-file-source-info input-pathname external-format + #-sb-xc-host t)) ; can't track, no SBCL streams (*compiler-trace-output* nil)) ; might be modified below (unwind-protect diff --git a/src/compiler/target-main.lisp b/src/compiler/target-main.lisp index 72f11b0..13876e4 100644 --- a/src/compiler/target-main.lisp +++ b/src/compiler/target-main.lisp @@ -172,8 +172,6 @@ not STYLE-WARNINGs occur during compilation, and NIL otherwise. (lambda (arg1 arg2 arg3) ;; Log some kind of reader event into FILE-INFO. (case arg1 - (:newline - (vector-push-extend arg2 (file-info-newlines file-info))) (:reset ; a char macro returned zero values - "virtual whitespace". ;; I think this would be an ideal place at which to inquire and stash ;; the FILE-POSITION in bytes so that DEBUG-SOURCE-START-POSITIONS @@ -222,7 +220,7 @@ not STYLE-WARNINGs occur during compilation, and NIL otherwise. (compute-compile-file-position this-form t)) (defun compute-compile-file-position (this-form as-line/col-p) - (let (file-info charpos) + (let (file-info stream charpos) (flet ((find-form-eq (form &optional fallback-path) (with-array-data ((vect (file-info-subforms file-info)) (start) (end) :check-fill-pointer t) @@ -238,38 +236,42 @@ not STYLE-WARNINGs occur during compilation, and NIL otherwise. (compile-file-position-helper file-info fallback-path)))) (setq charpos (svref vect (- i 2))))))))) - (cond - ((and *source-info* (boundp '*current-path*) (not *current-path*)) - ;; probably a read-time eval - (setq file-info (source-info-file-info *source-info*)) - (find-form-eq this-form)) + (let ((source-info *source-info*)) + (when (and source-info (boundp '*current-path*)) + (setq file-info (source-info-file-info source-info) + stream (source-info-stream source-info)) + (cond + ((not *current-path*) + ;; probably a read-time eval + (find-form-eq this-form)) ;; Hmm, would a &WHOLE argument would work better or worse in general? - ((and *source-info* (boundp '*current-path*) *current-path*) - (setq file-info (source-info-file-info *source-info*)) - (let* ((original-source-path - (cddr (member 'original-source-start *current-path*))) - (path (reverse original-source-path))) - (when (file-info-subforms file-info) - (let ((form (elt (file-info-forms file-info) (car path)))) - (dolist (p (cdr path)) - (setq form (nth p form))) - (find-form-eq form (cdr path)))) - (unless charpos - (let ((parent (source-info-parent *source-info*))) + (t + (let* ((original-source-path + (cddr (member 'original-source-start *current-path*))) + (path (reverse original-source-path))) + (when (file-info-subforms file-info) + (let ((form (elt (file-info-forms file-info) (car path)))) + (dolist (p (cdr path)) + (setq form (nth p form))) + (find-form-eq form (cdr path)))) + (unless charpos + (let ((parent (source-info-parent *source-info*))) ;; probably in a local macro executing COMPILE-FILE-POSITION, ;; not producing a sexpr containing an invocation of C-F-P. - (when parent - (setq file-info (source-info-file-info parent)) - (find-form-eq this-form)))))))) + (when parent + (setq file-info (source-info-file-info parent) + stream (source-info-stream parent)) + (find-form-eq this-form)))))))))) (if as-line/col-p - (if charpos - (let ((line/col (line/col-from-charpos charpos file-info))) + (if (and charpos (form-tracking-stream-p stream)) + (let ((line/col (line/col-from-charpos stream charpos))) `(values ,(car line/col) ,(cdr line/col))) '(values 0 -1)) charpos))) -(defun line/col-from-charpos (charpos file-info) - (let* ((newlines (file-info-newlines file-info)) +(defun line/col-from-charpos + (stream &optional (charpos (sb!impl::ansi-stream-input-char-pos stream))) + (let* ((newlines (sb!impl::form-tracking-stream-newlines stream)) (index (position charpos newlines :test #'>= :from-end t))) ;; Line numbers traditionally begin at 1, columns at 0. (if index diff --git a/tests/load.pure.lisp b/tests/load.pure.lisp index eed5f45..cbade16 100644 --- a/tests/load.pure.lisp +++ b/tests/load.pure.lisp @@ -25,3 +25,18 @@ ;;; IF-DOES-NOT-EXIST was true. (assert (typep (nth-value 1 (ignore-errors (load "i-am-not"))) 'file-error)) (assert (typep (nth-value 1 (ignore-errors (load "i-am-not" :if-does-not-exist t))) 'file-error)) + +;; These tests are essentially the same as in compiler.pure.lisp +(with-test (:name :load-as-source-error-position-reporting) + (dolist (input '("data/wonky1.lisp" "data/wonky2.lisp" "data/wonky3.lisp")) + (let ((expect (with-open-file (f input) (read f)))) + (assert (stringp expect)) + (let ((err-string + (block foo + ;; you can't query the stream position with HANDLER-CASE + ;; because it closes before the condition is formatted. + (handler-bind ((error (lambda (c) + (return-from foo + (write-to-string c :escape nil))))) + (load input))))) + (assert (search expect err-string)))))) ----------------------------------------------------------------------- hooks/post-receive -- SBCL |
From: Douglas K. <sn...@us...> - 2015-04-22 02:29:49
|
The branch "master" has been updated in SBCL: via fff145335f417c66f2856c27067409d8de40d096 (commit) from 11df74cf5a2665e51d2a0d725f89bfb466b6fffc (commit) - Log ----------------------------------------------------------------- commit fff145335f417c66f2856c27067409d8de40d096 Author: Douglas Katzman <do...@go...> Date: Tue Apr 21 20:52:50 2015 -0400 By popular demand, rename COMPILE-FILE-POSITION to -LINE and make COMPILE-FILE-POSITION return character position. --- NEWS | 3 +- package-data-list.lisp-expr | 1 + src/compiler/target-main.lisp | 31 +++++++++++++++++++++-------- tests/compiler-2.impure-cload.lisp | 12 +++++----- tests/data/compile-file-pos-utf16be.lisp | Bin 0 -> 424 bytes tests/data/compile-file-pos.lisp | 6 +++++ tests/octets.pure.lisp | 28 +++++++++++++++++++++++++++ 7 files changed, 65 insertions(+), 16 deletions(-) diff --git a/NEWS b/NEWS index a03eb81..6cf565b 100644 --- a/NEWS +++ b/NEWS @@ -9,10 +9,11 @@ changes relative to sbcl-1.2.10: under most circumstances, signal warnings similar to compiling such code. The usual caveat holds about not detecting calls through a computed name, as in (funcall (intern "DEPRECATED-FUN" "SB-EXT")). - * enhancement: (SB-EXT:COMPILE-FILE-POSITION) is a new macro that expands + * enhancement: (SB-EXT:COMPILE-FILE-LINE) is a new macro that expands to a constant (VALUES integer integer) indicating the source line/column from which it was read, intended for logging Lisp runtime errors in a style similar to that afforded by the C preprocessor __LINE__ macro. + Similarly (SB-EXT:COMPILE-FILE-POSITION) returns a position in characters. * enhancement: improved source locations for VOPs, alien types and declarations. * bug fix: functions in :FINAL deprecation have the correct docstring. diff --git a/package-data-list.lisp-expr b/package-data-list.lisp-expr index 22b72fa..6366347 100644 --- a/package-data-list.lisp-expr +++ b/package-data-list.lisp-expr @@ -652,6 +652,7 @@ like *STACK-TOP-HINT* and unsupported stuff like *TRACED-FUN-LIST*." ;; Customizing printing of compiler and debugger messages "*COMPILER-PRINT-VARIABLE-ALIST*" "*DEBUG-PRINT-VARIABLE-ALIST*" + "COMPILE-FILE-LINE" "COMPILE-FILE-POSITION" ;; Hooks into init & save sequences diff --git a/src/compiler/target-main.lisp b/src/compiler/target-main.lisp index d13995d..72f11b0 100644 --- a/src/compiler/target-main.lisp +++ b/src/compiler/target-main.lisp @@ -207,12 +207,23 @@ not STYLE-WARNINGs occur during compilation, and NIL otherwise. ;; times as there are calls to the function - not very defensible ;; as a design choice, but just an accident of the particular implementation. ;; -(let () - (defmacro compile-file-position (&whole this-form) - #!+sb-doc - "Return line# and column# of this macro invocation as multiple values." - (let (file-info charpos) - (flet ((find-form-eq (form &optional fallback-path) +(defmacro compile-file-position (&whole this-form) + #!+sb-doc + "Return character position of this macro invocation or NIL if unavailable." + ;; Counting characters is intuitive because the transfer element size is 1 + ;; measurement unit. The standard allows counting in something other than + ;; characters (namely bytes) for character streams, which is basically + ;; irrelevant here, as we don't need random access to the file. + (compute-compile-file-position this-form nil)) + +(defmacro compile-file-line (&whole this-form) + #!+sb-doc + "Return line# and column# of this macro invocation as multiple values." + (compute-compile-file-position this-form t)) + +(defun compute-compile-file-position (this-form as-line/col-p) + (let (file-info charpos) + (flet ((find-form-eq (form &optional fallback-path) (with-array-data ((vect (file-info-subforms file-info)) (start) (end) :check-fill-pointer t) (declare (ignore start)) @@ -227,7 +238,7 @@ not STYLE-WARNINGs occur during compilation, and NIL otherwise. (compile-file-position-helper file-info fallback-path)))) (setq charpos (svref vect (- i 2))))))))) - (cond + (cond ((and *source-info* (boundp '*current-path*) (not *current-path*)) ;; probably a read-time eval (setq file-info (source-info-file-info *source-info*)) @@ -249,11 +260,13 @@ not STYLE-WARNINGs occur during compilation, and NIL otherwise. ;; not producing a sexpr containing an invocation of C-F-P. (when parent (setq file-info (source-info-file-info parent)) - (find-form-eq this-form))))))) + (find-form-eq this-form)))))))) + (if as-line/col-p (if charpos (let ((line/col (line/col-from-charpos charpos file-info))) `(values ,(car line/col) ,(cdr line/col))) - '(values 0 -1)))))) + '(values 0 -1)) + charpos))) (defun line/col-from-charpos (charpos file-info) (let* ((newlines (file-info-newlines file-info)) diff --git a/tests/compiler-2.impure-cload.lisp b/tests/compiler-2.impure-cload.lisp index 433ef07..98bb449 100644 --- a/tests/compiler-2.impure-cload.lisp +++ b/tests/compiler-2.impure-cload.lisp @@ -89,9 +89,9 @@ (sb-int:info :variable :macro-expansion '%trash%) (assert (and (not val) (not foundp))))) -;;; COMPILE-FILE-POSITION +;;; COMPILE-FILE-LINE and COMPILE-FILE-POSITION -(macrolet ((line () `(multiple-value-call 'cons (compile-file-position)))) +(macrolet ((line () `(multiple-value-call 'cons (compile-file-line)))) (defun more-foo (x) (if x (format nil "Great! ~D" (line)) ; <-- this is line 97 @@ -100,7 +100,7 @@ (declaim (inline thing)) (defun thing () (format nil "failed to frob a knob at line #~D" - (compile-file-position))) ; <-- this is line 103 + (compile-file-line))) ; <-- this is line 103 (defmacro more-randomness () '(progn @@ -117,16 +117,16 @@ (progn (more-randomness))))))) ; <-- this is line 117 (defun compile-file-pos-sharp-dot (x) - (list #.(format nil "Foo line ~D" (compile-file-position)) ; line #120 + (list #.(format nil "Foo line ~D" (compile-file-line)) ; line #120 x)) (defun compile-file-pos-eval-in-macro () (macrolet ((macro (x) (format nil "hi ~A at ~D" x - (compile-file-position)))) ; line #126 + (compile-file-line)))) ; line #126 (macro "there"))) -(with-test (:name :compile-file-position) +(with-test (:name :compile-file-line) (assert (string= (more-foo t) "Great! (97 . 32)")) (assert (string= (more-foo nil) "Yikes (98 . 31)")) (assert (string= (bork t) "failed to frob a knob at line #103")) diff --git a/tests/data/compile-file-pos-utf16be.lisp b/tests/data/compile-file-pos-utf16be.lisp new file mode 100644 index 0000000..a9b1379 Binary files /dev/null and b/tests/data/compile-file-pos-utf16be.lisp differ diff --git a/tests/data/compile-file-pos.lisp b/tests/data/compile-file-pos.lisp new file mode 100644 index 0000000..bbbbb50 --- /dev/null +++ b/tests/data/compile-file-pos.lisp @@ -0,0 +1,6 @@ +;; This file is encoded in UTF8 xxx. +;; +(defun cfp-foolz1 () + (values "Here is a string: ×××ש" + (format nil "Line ~D" (compile-file-line)) + (format nil "Hey hey! ~D" (compile-file-position)))) diff --git a/tests/octets.pure.lisp b/tests/octets.pure.lisp index e78e2db..77cb2a6 100644 --- a/tests/octets.pure.lisp +++ b/tests/octets.pure.lisp @@ -396,3 +396,31 @@ :external-format :utf-32be))) (let ((string (map 'string 'code-char '(#xd800 #xdc00 #xfffe #x10ffff)))) (assert (equalp (enc string) #(0 0 0 63 0 0 0 63 0 0 0 63 0 0 0 63)))))) + +(with-test (:name :compile-file-position-with-encodings + :skipped-on '(not :sb-unicode)) + (with-open-file (f1 "data/compile-file-pos.lisp" :external-format :utf-8) + (with-open-file (f2 "data/compile-file-pos-utf16be.lisp" + :external-format :utf-16be) + (dotimes (i 3) ; skip three lines + ;; because a comment line differs, and the function names differ + (read-line f1) + (read-line f2)) + (dotimes (i 3) ; compare three lines + (assert (string= (read-line f1) (read-line f2)))))) + (flet ((compile-and-load (file encoding main-fun) + (let ((fasl (compile-file file + :external-format encoding + :print nil :verbose nil))) + (load fasl) + (delete-file fasl) + (funcall main-fun)))) + (multiple-value-bind (a1 b1 c1) + (compile-and-load "data/compile-file-pos.lisp" :utf-8 'cfp-foolz1) + (multiple-value-bind (a2 b2 c2) + (compile-and-load "data/compile-file-pos-utf16be.lisp" :utf-16be + 'cfp-foolz2) + (assert (string= a1 a2)) + (assert (string= b1 b2)) + ;; COMPILE-FILE-POSITION is insensitive to file encoding. + (assert (string= c1 c2)))))) ----------------------------------------------------------------------- hooks/post-receive -- SBCL |