X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fexhaust.lisp;h=a96112b2a82e7b6269144bf9d0a54bc4ba4a4a96;hb=ae09f8fd7765f6cab6ad317a13e27ff22ab0c11e;hp=50c5bdb8f9e8271c5d5d1d2daee543ae7a16cf2c;hpb=08671cc8f003e0b1f9879635fa950c78f7bf40fe;p=sbcl.git diff --git a/src/code/exhaust.lisp b/src/code/exhaust.lisp index 50c5bdb..a96112b 100644 --- a/src/code/exhaust.lisp +++ b/src/code/exhaust.lisp @@ -1,4 +1,5 @@ -;;;; detecting and handling exhaustion of memory (stack or heap) +;;;; detecting and handling exhaustion of fundamental system resources +;;;; (stack or heap) ;;;; This software is part of the SBCL system. See the README file for ;;;; more information. @@ -10,14 +11,9 @@ ;;;; files for more information. (in-package "SB!KERNEL") - -;;; FIXME: Even though this is only called when (> SAFETY (MAX SPEED SPACE)) -;;; it's still annoyingly wasteful for it to be a full function call. -;;; It should probably be a VOP calling an assembly routine or something -;;; like that. -(defun %detect-stack-exhaustion () - ;; FIXME: Check the stack pointer against *STACK-EXHAUSTION*, and if - ;; out of range signal an error (in a context where *S-E* has been - ;; rebound to give some space to let error handling code do its - ;; thing without new exhaustion problems). - (values)) +(define-alien-routine ("protect_control_stack_guard_page" + %protect-control-stack-guard-page) + sb!alien:void + (protect-p sb!alien:int)) +(defun protect-control-stack-guard-page (n) + (%protect-control-stack-guard-page (if n 1 0)))