User Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

cl:types:storage-condition [2017/05/01 21:00] (current)
Line 1: Line 1:
 +====== Condition Type STORAGE-CONDITION ======
 +
 +====Class Precedence List==== ​
 +**storage-condition**,​ **[[CL:​Types:​serious-condition]]**,​ **[[CL:​Types:​condition]]**,​ **[[CL:​Types:​t]]**
 +
 +====Description====
 +The type **storage-condition** consists of serious conditions that relate to problems with memory management that are potentially due to //​[[CL:​Glossary:​implementation-dependent]]//​ limits rather than semantic errors in //​[[CL:​Glossary:​conforming program|conforming programs]]//,​ and that typically warrant entry to the debugger if not handled. Depending on the details of the //​[[CL:​Glossary:​implementation]]//,​ these might include such problems as stack overflow, memory region overflow, and storage exhausted.
 +
 +====Notes====
 +While some Common Lisp operations might signal //​[[CL:​Glossary:​storage-condition]]//​ because they are defined to create //​[[CL:​Glossary:​object|objects]]//,​ it is unspecified whether operations that are not defined to create //​[[CL:​Glossary:​object|objects]]//​ create them anyway and so might also signal **storage-condition**. Likewise, the evaluator itself might create //​[[CL:​Glossary:​object|objects]]//​ and so might signal **storage-condition**. (The natural assumption might be that such //​[[CL:​Glossary:​object]]//​ creation is naturally inefficient,​ but even that is //​[[CL:​Glossary:​implementation-dependent]]//​.) In general, the entire question of how storage allocation is done is //​[[CL:​Glossary:​implementation-dependent]]//,​ and so any operation might signal **storage-condition** at any time. Because such a //​[[CL:​Glossary:​condition]]//​ is indicative of a limitation of the //​[[CL:​Glossary:​implementation]]//​ or of the //​[[CL:​Glossary:​image]]//​ rather than an error in a //​[[CL:​Glossary:​program]]//,​ //​[[CL:​Glossary:​object|objects]]//​ of type **storage-condition** are not of type **[[CL:​Types:​error]]**.
 +