\doxysection{stack.\+c}
\hypertarget{stack_8c_source}{}\label{stack_8c_source}\index{workspace/post-\/scarcity/src/memory/stack.c@{workspace/post-\/scarcity/src/memory/stack.c}}
\mbox{\hyperlink{stack_8c}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00001}00001\ \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00002}00002\ \textcolor{comment}{\ *\ stack.c}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00003}00003\ \textcolor{comment}{\ *}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00004}00004\ \textcolor{comment}{\ *\ The\ Lisp\ evaluation\ stack.}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00005}00005\ \textcolor{comment}{\ *}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00006}00006\ \textcolor{comment}{\ *\ Stack\ frames\ could\ be\ implemented\ in\ cons\ space;\ indeed,\ the\ stack}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00007}00007\ \textcolor{comment}{\ *\ could\ simply\ be\ an\ assoc\ list\ consed\ onto\ the\ front\ of\ the\ environment.}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00008}00008\ \textcolor{comment}{\ *\ But\ such\ a\ stack\ would\ be\ costly\ to\ search.\ The\ design\ sketched\ here,}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00009}00009\ \textcolor{comment}{\ *\ with\ stack\ frames\ as\ special\ objects,\ SHOULD\ be\ substantially\ more}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00010}00010\ \textcolor{comment}{\ *\ efficient,\ but\ does\ imply\ we\ need\ to\ generalise\ the\ idea\ of\ cons\ pages}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00011}00011\ \textcolor{comment}{\ *\ with\ freelists\ to\ a\ more\ general\ 'equal\ sized\ object\ pages',\ so\ that}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00012}00012\ \textcolor{comment}{\ *\ allocating/freeing\ stack\ frames\ can\ be\ more\ efficient.}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00013}00013\ \textcolor{comment}{\ *}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00014}00014\ \textcolor{comment}{\ *\ (c)\ 2017\ Simon\ Brooke\ <simon@journeyman.cc>}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00015}00015\ \textcolor{comment}{\ *\ Licensed\ under\ GPL\ version\ 2.0,\ or,\ at\ your\ option,\ any\ later\ version.}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00016}00016\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00017}00017\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00018}00018\ \textcolor{preprocessor}{\#include\ <stdlib.h>}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00019}00019\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00020}00020\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{consspaceobject_8h}{memory/consspaceobject.h}}"{}}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00021}00021\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{conspage_8h}{memory/conspage.h}}"{}}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00022}00022\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{debug_8h}{debug.h}}"{}}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00023}00023\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{dump_8h}{memory/dump.h}}"{}}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00024}00024\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{lispops_8h}{ops/lispops.h}}"{}}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00025}00025\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{print_8h}{io/print.h}}"{}}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00026}00026\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{stack_8h}{memory/stack.h}}"{}}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00027}00027\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{vectorspace_8h}{memory/vectorspace.h}}"{}}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00028}00028\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00029}00029\ \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00030}00030\ \textcolor{comment}{\ *\ set\ a\ register\ in\ a\ stack\ frame.\ Alwaye\ use\ this\ to\ do\ so,}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00031}00031\ \textcolor{comment}{\ *\ because\ that\ way\ we\ can\ be\ sure\ the\ inc\_ref\ happens!}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00032}00032\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00033}\mbox{\hyperlink{stack_8c_a6f06ca39c92c6c67e589086d32d132a8}{00033}}\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{stack_8c_a6f06ca39c92c6c67e589086d32d132a8}{set\_reg}}(\ \textcolor{keyword}{struct}\ \mbox{\hyperlink{consspaceobject_8h_structstack__frame}{stack\_frame}}\ *frame,\ \textcolor{keywordtype}{int}\ reg,\ \textcolor{keyword}{struct}\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ value\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00034}00034\ \ \ \ \ \mbox{\hyperlink{debug_8c_aa335b357cde1ba7eb6e8a71955079aab}{debug\_printf}}(\ \mbox{\hyperlink{debug_8h_a7f8cbac7da8fca71eec213ae075aa710}{DEBUG\_STACK}},\ L\textcolor{stringliteral}{"{}Setting\ register\ \%d\ to\ "{}},\ reg\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00035}00035\ \ \ \ \ \mbox{\hyperlink{debug_8c_ada2d4646201b5827137d0bf053fcac59}{debug\_print\_object}}(\ value,\ \mbox{\hyperlink{debug_8h_a7f8cbac7da8fca71eec213ae075aa710}{DEBUG\_STACK}}\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00036}00036\ \ \ \ \ \mbox{\hyperlink{debug_8c_a9d5aa8671cb579261b2049c09aafa773}{debug\_println}}(\ \mbox{\hyperlink{debug_8h_a7f8cbac7da8fca71eec213ae075aa710}{DEBUG\_STACK}}\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00037}00037\ \ \ \ \ \mbox{\hyperlink{consspaceobject_8c_aecb4a52465163e0377356bcaa85539bf}{dec\_ref}}(\ frame-\/>\mbox{\hyperlink{consspaceobject_8h_ae7d2185c096473b2eabfd5a566d48090}{arg}}[reg]\ );\ \textcolor{comment}{/*\ if\ there\ was\ anything\ in\ that\ slot}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00038}00038\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *\ previously\ other\ than\ NIL,\ we\ need\ to\ decrement\ it;}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00039}00039\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *\ NIL\ won't\ be\ decremented\ as\ it\ is\ locked.\ */}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00040}00040\ \ \ \ \ frame-\/>\mbox{\hyperlink{consspaceobject_8h_ae7d2185c096473b2eabfd5a566d48090}{arg}}[reg]\ =\ value;}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00041}00041\ \ \ \ \ \mbox{\hyperlink{consspaceobject_8c_aa38b760ee4493c5d98400e04db3c8d47}{inc\_ref}}(\ value\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00042}00042\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00043}00043\ \ \ \ \ \textcolor{keywordflow}{if}\ (\ reg\ ==\ frame-\/>\mbox{\hyperlink{consspaceobject_8h_a1bd7a8575ca2650132d636d65dcda2f6}{args}}\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00044}00044\ \ \ \ \ \ \ \ \ frame-\/>\mbox{\hyperlink{consspaceobject_8h_a1bd7a8575ca2650132d636d65dcda2f6}{args}}++;}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00045}00045\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00046}00046\ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00047}00047\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00048}00048\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00049}00049\ \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00050}00050\ \textcolor{comment}{\ *\ get\ the\ actual\ stackframe\ object\ from\ this\ \`{}pointer`,\ or\ NULL\ if}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00051}00051\ \textcolor{comment}{\ *\ \`{}pointer`\ is\ not\ a\ stackframe\ pointer.}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00052}00052\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00053}\mbox{\hyperlink{stack_8c_a81653b4495f0fd4e7e49b9bd99e8e8db}{00053}}\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structstack__frame}{stack\_frame}}\ *\mbox{\hyperlink{stack_8c_a81653b4495f0fd4e7e49b9bd99e8e8db}{get\_stack\_frame}}(\ \textcolor{keyword}{struct}\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ pointer\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00054}00054\ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structstack__frame}{stack\_frame}}\ *result\ =\ NULL;}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00055}00055\ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{vectorspace_8h_structvector__space__object}{vector\_space\_object}}\ *vso\ =}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00056}00056\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{consspaceobject_8h_af31e1da9438d7ae4410864ecc901b131}{pointer2cell}}(\ pointer\ ).\mbox{\hyperlink{vectorspace_8h_a52100a8d038844c00250f5356f1b9a3f}{payload}}.vectorp.address;}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00057}00057\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00058}00058\ \ \ \ \ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{consspaceobject_8h_aea54db22dcf0db6b94cce75bbed0fc93}{vectorpointp}}(\ pointer\ )\ \&\&\ \mbox{\hyperlink{stack_8h_a18f65e8c5f1e28111a9a7f2e8a6f6ad5}{stackframep}}(\ vso\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00059}00059\ \ \ \ \ \ \ \ \ result\ =\ (\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structstack__frame}{stack\_frame}}\ *\ )\ \&(\ vso-\/>\mbox{\hyperlink{vectorspace_8h_a52100a8d038844c00250f5356f1b9a3f}{payload}}\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00060}00060\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{debug_8c_aa335b357cde1ba7eb6e8a71955079aab}{debug\_printf}}(\ \mbox{\hyperlink{debug_8h_a7f8cbac7da8fca71eec213ae075aa710}{DEBUG\_STACK}},}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00061}00061\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ L\textcolor{stringliteral}{"{}get\_stack\_frame:\ all\ good,\ returning\ \%p\(\backslash\)n"{}},\ result\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00062}00062\ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00063}00063\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{}get\_stack\_frame:\ fail,\ returning\ NULL\(\backslash\)n"{}},\ \mbox{\hyperlink{debug_8h_a7f8cbac7da8fca71eec213ae075aa710}{DEBUG\_STACK}}\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00064}00064\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00065}00065\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00066}00066\ \ \ \ \ \textcolor{keywordflow}{return}\ result;}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00067}00067\ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00068}00068\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00069}00069\ \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00070}00070\ \textcolor{comment}{\ *\ Make\ an\ empty\ stack\ frame,\ and\ return\ it.}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00071}00071\ \textcolor{comment}{\ *\ @param\ previous\ the\ current\ top-\/of-\/stack;}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00072}00072\ \textcolor{comment}{\ *\ @param\ env\ the\ environment\ in\ which\ evaluation\ happens.}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00073}00073\ \textcolor{comment}{\ *\ @return\ the\ new\ frame,\ or\ NULL\ if\ memory\ is\ exhausted.}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00074}00074\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00075}\mbox{\hyperlink{stack_8c_ae97b7f0d449fa282f7a7c68c521dffd3}{00075}}\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ \mbox{\hyperlink{stack_8c_ae97b7f0d449fa282f7a7c68c521dffd3}{make\_empty\_frame}}(\ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ previous\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00076}00076\ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{}Entering\ make\_empty\_frame\(\backslash\)n"{}},\ \mbox{\hyperlink{debug_8h_ab99ea81093661d24ffaaa4e85cb2387a}{DEBUG\_ALLOC}}\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00077}00077\ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ result\ =}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00078}00078\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{vectorspace_8c_af82611898537d85117224ce5d4c5eeb5}{make\_vso}}(\ \mbox{\hyperlink{stack_8h_a4ee879be4822abe5825ec13126557e40}{STACKFRAMETV}},\ \textcolor{keyword}{sizeof}(\ \textcolor{keyword}{struct}\ \mbox{\hyperlink{consspaceobject_8h_structstack__frame}{stack\_frame}}\ )\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00079}00079\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00080}00080\ \ \ \ \ \mbox{\hyperlink{debug_8c_aa0ffa929ddbce890ce4f81264a211233}{debug\_dump\_object}}(\ result,\ \mbox{\hyperlink{debug_8h_ab99ea81093661d24ffaaa4e85cb2387a}{DEBUG\_ALLOC}}\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00081}00081\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00082}00082\ \ \ \ \ \textcolor{keywordflow}{if}\ (\ !\mbox{\hyperlink{consspaceobject_8h_a758a42bfac22caaf66e29c666c91702d}{nilp}}(\ result\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00083}00083\ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structstack__frame}{stack\_frame}}\ *frame\ =\ \mbox{\hyperlink{stack_8c_a81653b4495f0fd4e7e49b9bd99e8e8db}{get\_stack\_frame}}(\ result\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00084}00084\ \ \ \ \ \ \ \ \ \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00085}00085\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ *\ \(\backslash\)todo\ later,\ pop\ a\ frame\ off\ a\ free-\/list\ of\ stack\ frames}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00086}00086\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ */}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00087}00087\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00088}00088\ \ \ \ \ \ \ \ \ frame-\/>\mbox{\hyperlink{consspaceobject_8h_a83b06591da1671fb9f6b1c6087b4718f}{previous}}\ =\ previous;}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00089}00089\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00090}00090\ \ \ \ \ \ \ \ \ \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00091}00091\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ *\ clearing\ the\ frame\ with\ memset\ would\ probably\ be\ slightly\ quicker,\ but}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00092}00092\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ *\ this\ is\ clear.}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00093}00093\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ */}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00094}00094\ \ \ \ \ \ \ \ \ frame-\/>\mbox{\hyperlink{consspaceobject_8h_a09a69198d75c81fd53b5ee56d27234c7}{more}}\ =\ \mbox{\hyperlink{consspaceobject_8h_a263efce0e5cda1d387a1a43f94715445}{NIL}};}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00095}00095\ \ \ \ \ \ \ \ \ frame-\/>\mbox{\hyperlink{consspaceobject_8h_ab4ecb655d4a1c2acfed64b0146520699}{function}}\ =\ \mbox{\hyperlink{consspaceobject_8h_a263efce0e5cda1d387a1a43f94715445}{NIL}};}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00096}00096\ \ \ \ \ \ \ \ \ frame-\/>\mbox{\hyperlink{consspaceobject_8h_a1bd7a8575ca2650132d636d65dcda2f6}{args}}\ =\ 0;}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00097}00097\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00098}00098\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (\ \textcolor{keywordtype}{int}\ i\ =\ 0;\ i\ <\ \mbox{\hyperlink{consspaceobject_8h_a214b772c864ac6458405e6a37fb9bf6e}{args\_in\_frame}};\ i++\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00099}00099\ \ \ \ \ \ \ \ \ \ \ \ \ frame-\/>\mbox{\hyperlink{consspaceobject_8h_ae7d2185c096473b2eabfd5a566d48090}{arg}}[i]\ =\ \mbox{\hyperlink{consspaceobject_8h_a263efce0e5cda1d387a1a43f94715445}{NIL}};}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00100}00100\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00101}00101\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00102}00102\ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{}Leaving\ make\_empty\_frame\(\backslash\)n"{}},\ \mbox{\hyperlink{debug_8h_ab99ea81093661d24ffaaa4e85cb2387a}{DEBUG\_ALLOC}}\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00103}00103\ \ \ \ \ \mbox{\hyperlink{debug_8c_aa0ffa929ddbce890ce4f81264a211233}{debug\_dump\_object}}(\ result,\ \mbox{\hyperlink{debug_8h_ab99ea81093661d24ffaaa4e85cb2387a}{DEBUG\_ALLOC}}\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00104}00104\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00105}00105\ \ \ \ \ \textcolor{keywordflow}{return}\ result;}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00106}00106\ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00107}00107\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00108}00108\ \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00109}00109\ \textcolor{comment}{\ *\ Allocate\ a\ new\ stack\ frame\ with\ its\ previous\ pointer\ set\ to\ this\ value,}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00110}00110\ \textcolor{comment}{\ *\ its\ arguments\ set\ up\ from\ these\ args,\ evaluated\ in\ this\ env.}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00111}00111\ \textcolor{comment}{\ *\ @param\ previous\ the\ current\ top-\/of-\/stack;}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00112}00112\ \textcolor{comment}{\ *\ @args\ the\ arguments\ to\ load\ into\ this\ frame;}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00113}00113\ \textcolor{comment}{\ *\ @param\ env\ the\ environment\ in\ which\ evaluation\ happens.}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00114}00114\ \textcolor{comment}{\ *\ @return\ the\ new\ frame,\ or\ an\ exception\ if\ one\ occurred\ while\ building\ it.}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00115}00115\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00116}\mbox{\hyperlink{stack_8c_af448982b321038e7c24a5873b74533a7}{00116}}\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ \mbox{\hyperlink{stack_8c_af448982b321038e7c24a5873b74533a7}{make\_stack\_frame}}(\ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ previous,}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00117}00117\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ args,}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00118}00118\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ env\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00119}00119\ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{}Entering\ make\_stack\_frame\(\backslash\)n"{}},\ \mbox{\hyperlink{debug_8h_a7f8cbac7da8fca71eec213ae075aa710}{DEBUG\_STACK}}\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00120}00120\ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ result\ =\ \mbox{\hyperlink{stack_8c_ae97b7f0d449fa282f7a7c68c521dffd3}{make\_empty\_frame}}(\ previous\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00121}00121\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00122}00122\ \ \ \ \ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{consspaceobject_8h_a758a42bfac22caaf66e29c666c91702d}{nilp}}(\ result\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00123}00123\ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ i.e.\ out\ of\ memory\ */}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00124}00124\ \ \ \ \ \ \ \ \ result\ =}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00125}00125\ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{consspaceobject_8h_a2a1abab0c80ab1e97f507bc4eab02523}{make\_exception}}(\ \mbox{\hyperlink{consspaceobject_8h_a9e4202c8555763ca9a119f0d63a058cd}{c\_string\_to\_lisp\_string}}(\ L\textcolor{stringliteral}{"{}Memory\ exhausted."{}}\ ),}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00126}00126\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ previous\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00127}00127\ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00128}00128\ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structstack__frame}{stack\_frame}}\ *frame\ =\ \mbox{\hyperlink{stack_8c_a81653b4495f0fd4e7e49b9bd99e8e8db}{get\_stack\_frame}}(\ result\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00129}00129\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00130}00130\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{while}\ (\ frame-\/>\mbox{\hyperlink{consspaceobject_8h_a1bd7a8575ca2650132d636d65dcda2f6}{args}}\ <\ \mbox{\hyperlink{consspaceobject_8h_a214b772c864ac6458405e6a37fb9bf6e}{args\_in\_frame}}\ \&\&\ \mbox{\hyperlink{consspaceobject_8h_a69012ee77381bb1d51aafa1002f64430}{consp}}(\ args\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00131}00131\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ iterate\ down\ the\ arg\ list\ filling\ in\ the\ arg\ slots\ in\ the}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00132}00132\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ \ *\ frame.\ When\ there\ are\ no\ more\ slots,\ if\ there\ are\ still\ args,}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00133}00133\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ \ *\ stash\ them\ on\ more\ */}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00134}00134\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__space__object}{cons\_space\_object}}\ cell\ =\ \mbox{\hyperlink{consspaceobject_8h_af31e1da9438d7ae4410864ecc901b131}{pointer2cell}}(\ args\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00135}00135\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00136}00136\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00137}00137\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ \ *\ \(\backslash\)todo\ if\ we\ were\ running\ on\ real\ massively\ parallel\ hardware,}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00138}00138\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ \ *\ each\ arg\ except\ the\ first\ should\ be\ handed\ off\ to\ another}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00139}00139\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ \ *\ processor\ to\ be\ evaled\ in\ parallel;\ but\ see\ notes\ here:}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00140}00140\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ \ *\ https://github.com/simon-\/brooke/post-\/scarcity/wiki/parallelism}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00141}00141\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ \ */}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00142}00142\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ val\ =}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00143}00143\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{lispops_8c_a44a5860734b40a3b74b9bcf681422017}{eval\_form}}(\ frame,\ result,\ cell.\mbox{\hyperlink{consspaceobject_8h_a259b3afe36776f8ba8498fdf95904f25}{payload}}.cons.car,\ env\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00144}00144\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{consspaceobject_8h_a08d81da027288f19974af4e6bbb1e99e}{exceptionp}}(\ val\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00145}00145\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ result\ =\ val;}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00146}00146\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00147}00147\ \ \ \ \ \ \ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00148}00148\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{debug_8c_aa335b357cde1ba7eb6e8a71955079aab}{debug\_printf}}(\ \mbox{\hyperlink{debug_8h_a7f8cbac7da8fca71eec213ae075aa710}{DEBUG\_STACK}},\ L\textcolor{stringliteral}{"{}Setting\ argument\ \%d\ to\ "{}},}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00149}00149\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ frame-\/>\mbox{\hyperlink{consspaceobject_8h_a1bd7a8575ca2650132d636d65dcda2f6}{args}}\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00150}00150\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{debug_8c_ada2d4646201b5827137d0bf053fcac59}{debug\_print\_object}}(\ cell.\mbox{\hyperlink{consspaceobject_8h_a259b3afe36776f8ba8498fdf95904f25}{payload}}.cons.car,\ \mbox{\hyperlink{debug_8h_a7f8cbac7da8fca71eec213ae075aa710}{DEBUG\_STACK}}\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00151}00151\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{stack_8c_a6f06ca39c92c6c67e589086d32d132a8}{set\_reg}}(\ frame,\ frame-\/>\mbox{\hyperlink{consspaceobject_8h_a1bd7a8575ca2650132d636d65dcda2f6}{args}},\ val\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00152}00152\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00153}00153\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00154}00154\ \ \ \ \ \ \ \ \ \ \ \ \ args\ =\ cell.\mbox{\hyperlink{consspaceobject_8h_a259b3afe36776f8ba8498fdf95904f25}{payload}}.cons.cdr;}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00155}00155\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00156}00156\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00157}00157\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\ !\mbox{\hyperlink{consspaceobject_8h_a08d81da027288f19974af4e6bbb1e99e}{exceptionp}}(\ result\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00158}00158\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{consspaceobject_8h_a69012ee77381bb1d51aafa1002f64430}{consp}}(\ args\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00159}00159\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ if\ we\ still\ have\ args,\ eval\ them\ and\ stick\ the\ values\ on\ \`{}more`\ */}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00160}00160\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ more\ =}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00161}00161\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{lispops_8c_a75b0b6eb243d1137eb9daa78d03e51f6}{eval\_forms}}(\ \mbox{\hyperlink{stack_8c_a81653b4495f0fd4e7e49b9bd99e8e8db}{get\_stack\_frame}}(\ previous\ ),\ previous,\ args,}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00162}00162\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ env\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00163}00163\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ frame-\/>\mbox{\hyperlink{consspaceobject_8h_a09a69198d75c81fd53b5ee56d27234c7}{more}}\ =\ more;}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00164}00164\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{consspaceobject_8h_aa38b760ee4493c5d98400e04db3c8d47}{inc\_ref}}(\ more\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00165}00165\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00166}00166\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00167}00167\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00168}00168\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00169}00169\ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{}make\_stack\_frame:\ returning\(\backslash\)n"{}},\ \mbox{\hyperlink{debug_8h_a7f8cbac7da8fca71eec213ae075aa710}{DEBUG\_STACK}}\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00170}00170\ \ \ \ \ \mbox{\hyperlink{debug_8c_aa0ffa929ddbce890ce4f81264a211233}{debug\_dump\_object}}(\ result,\ \mbox{\hyperlink{debug_8h_a7f8cbac7da8fca71eec213ae075aa710}{DEBUG\_STACK}}\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00171}00171\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00172}00172\ \ \ \ \ \textcolor{keywordflow}{return}\ result;}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00173}00173\ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00174}00174\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00175}00175\ \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00176}00176\ \textcolor{comment}{\ *\ A\ 'special'\ frame\ is\ exactly\ like\ a\ normal\ stack\ frame\ except\ that\ the}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00177}00177\ \textcolor{comment}{\ *\ arguments\ are\ unevaluated.}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00178}00178\ \textcolor{comment}{\ *\ @param\ previous\ the\ previous\ stack\ frame;}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00179}00179\ \textcolor{comment}{\ *\ @param\ args\ a\ list\ of\ the\ arguments\ to\ be\ stored\ in\ this\ stack\ frame;}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00180}00180\ \textcolor{comment}{\ *\ @param\ env\ the\ execution\ environment;}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00181}00181\ \textcolor{comment}{\ *\ @return\ a\ new\ special\ frame.}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00182}00182\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00183}\mbox{\hyperlink{stack_8c_a494ca1435350714304b05f67a9fe8ba9}{00183}}\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ \mbox{\hyperlink{stack_8c_a494ca1435350714304b05f67a9fe8ba9}{make\_special\_frame}}(\ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ previous,}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00184}00184\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ args,}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00185}00185\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ struct\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ env\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00186}00186\ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{}Entering\ make\_special\_frame\(\backslash\)n"{}},\ \mbox{\hyperlink{debug_8h_a7f8cbac7da8fca71eec213ae075aa710}{DEBUG\_STACK}}\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00187}00187\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00188}00188\ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ result\ =\ \mbox{\hyperlink{stack_8c_ae97b7f0d449fa282f7a7c68c521dffd3}{make\_empty\_frame}}(\ previous\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00189}00189\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00190}00190\ \ \ \ \ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{consspaceobject_8h_a758a42bfac22caaf66e29c666c91702d}{nilp}}(\ result\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00191}00191\ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ i.e.\ out\ of\ memory\ */}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00192}00192\ \ \ \ \ \ \ \ \ result\ =}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00193}00193\ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{consspaceobject_8h_a2a1abab0c80ab1e97f507bc4eab02523}{make\_exception}}(\ \mbox{\hyperlink{consspaceobject_8h_a9e4202c8555763ca9a119f0d63a058cd}{c\_string\_to\_lisp\_string}}(\ L\textcolor{stringliteral}{"{}Memory\ exhausted."{}}\ ),}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00194}00194\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ previous\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00195}00195\ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00196}00196\ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structstack__frame}{stack\_frame}}\ *frame\ =\ \mbox{\hyperlink{stack_8c_a81653b4495f0fd4e7e49b9bd99e8e8db}{get\_stack\_frame}}(\ result\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00197}00197\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00198}00198\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{while}\ (\ frame-\/>\mbox{\hyperlink{consspaceobject_8h_a1bd7a8575ca2650132d636d65dcda2f6}{args}}\ <\ \mbox{\hyperlink{consspaceobject_8h_a214b772c864ac6458405e6a37fb9bf6e}{args\_in\_frame}}\ \&\&\ !\mbox{\hyperlink{consspaceobject_8h_a758a42bfac22caaf66e29c666c91702d}{nilp}}(\ args\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00199}00199\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ iterate\ down\ the\ arg\ list\ filling\ in\ the\ arg\ slots\ in\ the}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00200}00200\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ \ *\ frame.\ When\ there\ are\ no\ more\ slots,\ if\ there\ are\ still\ args,}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00201}00201\ \textcolor{comment}{\ \ \ \ \ \ \ \ \ \ \ \ \ *\ stash\ them\ on\ more\ */}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00202}00202\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__space__object}{cons\_space\_object}}\ cell\ =\ \mbox{\hyperlink{consspaceobject_8h_af31e1da9438d7ae4410864ecc901b131}{pointer2cell}}(\ args\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00203}00203\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00204}00204\ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{stack_8c_a6f06ca39c92c6c67e589086d32d132a8}{set\_reg}}(\ frame,\ frame-\/>\mbox{\hyperlink{consspaceobject_8h_a1bd7a8575ca2650132d636d65dcda2f6}{args}},\ cell.\mbox{\hyperlink{consspaceobject_8h_a259b3afe36776f8ba8498fdf95904f25}{payload}}.cons.car\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00205}00205\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00206}00206\ \ \ \ \ \ \ \ \ \ \ \ \ args\ =\ cell.\mbox{\hyperlink{consspaceobject_8h_a259b3afe36776f8ba8498fdf95904f25}{payload}}.cons.cdr;}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00207}00207\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00208}00208\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\ !\mbox{\hyperlink{consspaceobject_8h_a08d81da027288f19974af4e6bbb1e99e}{exceptionp}}(\ result\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00209}00209\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{consspaceobject_8h_a69012ee77381bb1d51aafa1002f64430}{consp}}(\ args\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00210}00210\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ frame-\/>\mbox{\hyperlink{consspaceobject_8h_a09a69198d75c81fd53b5ee56d27234c7}{more}}\ =\ args;}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00211}00211\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{consspaceobject_8h_aa38b760ee4493c5d98400e04db3c8d47}{inc\_ref}}(\ args\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00212}00212\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00213}00213\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00214}00214\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00215}00215\ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{}make\_special\_frame:\ returning\(\backslash\)n"{}},\ \mbox{\hyperlink{debug_8h_a7f8cbac7da8fca71eec213ae075aa710}{DEBUG\_STACK}}\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00216}00216\ \ \ \ \ \mbox{\hyperlink{debug_8c_aa0ffa929ddbce890ce4f81264a211233}{debug\_dump\_object}}(\ result,\ \mbox{\hyperlink{debug_8h_a7f8cbac7da8fca71eec213ae075aa710}{DEBUG\_STACK}}\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00217}00217\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00218}00218\ \ \ \ \ \textcolor{keywordflow}{return}\ result;}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00219}00219\ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00220}00220\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00221}00221\ \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00222}00222\ \textcolor{comment}{\ *\ Free\ this\ stack\ frame.}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00223}00223\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00224}\mbox{\hyperlink{stack_8c_ad9c6f148f705d561caa12cd7d64d4016}{00224}}\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{stack_8c_ad9c6f148f705d561caa12cd7d64d4016}{free\_stack\_frame}}(\ \textcolor{keyword}{struct}\ \mbox{\hyperlink{consspaceobject_8h_structstack__frame}{stack\_frame}}\ *frame\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00225}00225\ \ \ \ \ \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00226}00226\ \textcolor{comment}{\ \ \ \ \ *\ \(\backslash\)todo\ later,\ push\ it\ back\ on\ the\ stack-\/frame\ freelist}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00227}00227\ \textcolor{comment}{\ \ \ \ \ */}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00228}00228\ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{}Entering\ free\_stack\_frame\(\backslash\)n"{}},\ \mbox{\hyperlink{debug_8h_ab99ea81093661d24ffaaa4e85cb2387a}{DEBUG\_ALLOC}}\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00229}00229\ \ \ \ \ \textcolor{keywordflow}{for}\ (\ \textcolor{keywordtype}{int}\ i\ =\ 0;\ i\ <\ \mbox{\hyperlink{consspaceobject_8h_a214b772c864ac6458405e6a37fb9bf6e}{args\_in\_frame}};\ i++\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00230}00230\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{consspaceobject_8c_aecb4a52465163e0377356bcaa85539bf}{dec\_ref}}(\ frame-\/>\mbox{\hyperlink{consspaceobject_8h_ae7d2185c096473b2eabfd5a566d48090}{arg}}[i]\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00231}00231\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00232}00232\ \ \ \ \ \textcolor{keywordflow}{if}\ (\ !\mbox{\hyperlink{consspaceobject_8h_a758a42bfac22caaf66e29c666c91702d}{nilp}}(\ frame-\/>\mbox{\hyperlink{consspaceobject_8h_a09a69198d75c81fd53b5ee56d27234c7}{more}}\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00233}00233\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{consspaceobject_8c_aecb4a52465163e0377356bcaa85539bf}{dec\_ref}}(\ frame-\/>\mbox{\hyperlink{consspaceobject_8h_a09a69198d75c81fd53b5ee56d27234c7}{more}}\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00234}00234\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00235}00235\ \ \ \ \ \mbox{\hyperlink{debug_8c_ad55e4f61e076944d705d98b5314c5181}{debug\_print}}(\ L\textcolor{stringliteral}{"{}Leaving\ free\_stack\_frame\(\backslash\)n"{}},\ \mbox{\hyperlink{debug_8h_ab99ea81093661d24ffaaa4e85cb2387a}{DEBUG\_ALLOC}}\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00236}00236\ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00237}00237\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00238}00238\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00239}00239\ \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00240}00240\ \textcolor{comment}{\ *\ Dump\ a\ stackframe\ to\ this\ stream\ for\ debugging}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00241}00241\ \textcolor{comment}{\ *\ @param\ output\ the\ stream}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00242}00242\ \textcolor{comment}{\ *\ @param\ frame\_pointer\ the\ pointer\ to\ the\ frame}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00243}00243\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00244}\mbox{\hyperlink{stack_8c_ab70c7fa9a11ab6d15513b3513db2e6e3}{00244}}\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{stack_8c_ab70c7fa9a11ab6d15513b3513db2e6e3}{dump\_frame}}(\ \mbox{\hyperlink{fopen_8h_structfcurl__data}{URL\_FILE}}\ *output,\ \textcolor{keyword}{struct}\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ frame\_pointer\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00245}00245\ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structstack__frame}{stack\_frame}}\ *frame\ =\ \mbox{\hyperlink{stack_8c_a81653b4495f0fd4e7e49b9bd99e8e8db}{get\_stack\_frame}}(\ frame\_pointer\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00246}00246\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00247}00247\ \ \ \ \ \textcolor{keywordflow}{if}\ (\ frame\ !=\ NULL\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00248}00248\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{fopen_8h_ac88d8de2499a3cdc3a4c7c4f5a4424e8}{url\_fwprintf}}(\ output,\ L\textcolor{stringliteral}{"{}Stack\ frame\ with\ \%d\ arguments:\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00249}00249\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ frame-\/>\mbox{\hyperlink{consspaceobject_8h_a1bd7a8575ca2650132d636d65dcda2f6}{args}}\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00250}00250\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (\ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{consspaceobject_8h_ae7d2185c096473b2eabfd5a566d48090}{arg}}\ =\ 0;\ \mbox{\hyperlink{consspaceobject_8h_ae7d2185c096473b2eabfd5a566d48090}{arg}}\ <\ frame-\/>\mbox{\hyperlink{consspaceobject_8h_a1bd7a8575ca2650132d636d65dcda2f6}{args}};\ \mbox{\hyperlink{consspaceobject_8h_ae7d2185c096473b2eabfd5a566d48090}{arg}}++\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00251}00251\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__space__object}{cons\_space\_object}}\ cell\ =\ \mbox{\hyperlink{consspaceobject_8h_af31e1da9438d7ae4410864ecc901b131}{pointer2cell}}(\ frame-\/>\mbox{\hyperlink{consspaceobject_8h_ae7d2185c096473b2eabfd5a566d48090}{arg}}[arg]\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00252}00252\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00253}00253\ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{fopen_8h_ac88d8de2499a3cdc3a4c7c4f5a4424e8}{url\_fwprintf}}(\ output,\ L\textcolor{stringliteral}{"{}Arg\ \%d:\(\backslash\)t\%c\%c\%c\%c\(\backslash\)tcount:\ \%10u\(\backslash\)tvalue:\ "{}},}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00254}00254\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ arg,\ cell.\mbox{\hyperlink{consspaceobject_8h_a21cb645ce4ae20308447dcd59534bf38}{tag}}.bytes[0],\ cell.\mbox{\hyperlink{consspaceobject_8h_a21cb645ce4ae20308447dcd59534bf38}{tag}}.bytes[1],}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00255}00255\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ cell.\mbox{\hyperlink{consspaceobject_8h_a21cb645ce4ae20308447dcd59534bf38}{tag}}.bytes[2],\ cell.\mbox{\hyperlink{consspaceobject_8h_a21cb645ce4ae20308447dcd59534bf38}{tag}}.bytes[3],\ cell.\mbox{\hyperlink{consspaceobject_8h_a86988a65e0d3ece7990c032c159786d6}{count}}\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00256}00256\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00257}00257\ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{print_8c_ad0e1c7bb094ddb18a30d5141e836991b}{print}}(\ output,\ frame-\/>\mbox{\hyperlink{consspaceobject_8h_ae7d2185c096473b2eabfd5a566d48090}{arg}}[arg]\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00258}00258\ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{fopen_8h_a862d5262a566cd54dab0677ebf57371d}{url\_fputws}}(\ L\textcolor{stringliteral}{"{}\(\backslash\)n"{}},\ output\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00259}00259\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00260}00260\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (\ !\mbox{\hyperlink{consspaceobject_8h_a758a42bfac22caaf66e29c666c91702d}{nilp}}(\ frame-\/>\mbox{\hyperlink{consspaceobject_8h_a09a69198d75c81fd53b5ee56d27234c7}{more}}\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00261}00261\ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{fopen_8h_a862d5262a566cd54dab0677ebf57371d}{url\_fputws}}(\ L\textcolor{stringliteral}{"{}More:\ \(\backslash\)t"{}},\ output\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00262}00262\ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{print_8c_ad0e1c7bb094ddb18a30d5141e836991b}{print}}(\ output,\ frame-\/>\mbox{\hyperlink{consspaceobject_8h_a09a69198d75c81fd53b5ee56d27234c7}{more}}\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00263}00263\ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{fopen_8h_a862d5262a566cd54dab0677ebf57371d}{url\_fputws}}(\ L\textcolor{stringliteral}{"{}\(\backslash\)n"{}},\ output\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00264}00264\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00265}00265\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00266}00266\ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00267}00267\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00268}\mbox{\hyperlink{stack_8c_ac0d2b280590cff44f75908a88e24f8b4}{00268}}\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{stack_8c_ac0d2b280590cff44f75908a88e24f8b4}{dump\_stack\_trace}}(\ \mbox{\hyperlink{fopen_8h_structfcurl__data}{URL\_FILE}}\ *output,\ \textcolor{keyword}{struct}\ \mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ pointer\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00269}00269\ \ \ \ \ \textcolor{keywordflow}{if}\ (\ \mbox{\hyperlink{consspaceobject_8h_a08d81da027288f19974af4e6bbb1e99e}{exceptionp}}(\ pointer\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00270}00270\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{print_8c_ad0e1c7bb094ddb18a30d5141e836991b}{print}}(\ output,\ \mbox{\hyperlink{consspaceobject_8h_af31e1da9438d7ae4410864ecc901b131}{pointer2cell}}(\ pointer\ ).\mbox{\hyperlink{consspaceobject_8h_a259b3afe36776f8ba8498fdf95904f25}{payload}}.exception.payload\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00271}00271\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{fopen_8h_a862d5262a566cd54dab0677ebf57371d}{url\_fputws}}(\ L\textcolor{stringliteral}{"{}\(\backslash\)n"{}},\ output\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00272}00272\ \ \ \ \ \ \ \ \ \mbox{\hyperlink{stack_8c_ac0d2b280590cff44f75908a88e24f8b4}{dump\_stack\_trace}}(\ output,}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00273}00273\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{consspaceobject_8h_af31e1da9438d7ae4410864ecc901b131}{pointer2cell}}(\ pointer\ ).\mbox{\hyperlink{consspaceobject_8h_a259b3afe36776f8ba8498fdf95904f25}{payload}}.exception.frame\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00274}00274\ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00275}00275\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{while}\ (\ \mbox{\hyperlink{consspaceobject_8h_aea54db22dcf0db6b94cce75bbed0fc93}{vectorpointp}}(\ pointer\ )}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00276}00276\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \&\&\ \mbox{\hyperlink{stack_8h_a18f65e8c5f1e28111a9a7f2e8a6f6ad5}{stackframep}}(\ \mbox{\hyperlink{vectorspace_8h_a6961330e553c390cec21939135c8c124}{pointer\_to\_vso}}(\ pointer\ )\ )\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00277}00277\ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{stack_8c_ab70c7fa9a11ab6d15513b3513db2e6e3}{dump\_frame}}(\ output,\ pointer\ );}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00278}00278\ \ \ \ \ \ \ \ \ \ \ \ \ pointer\ =\ \mbox{\hyperlink{stack_8c_a81653b4495f0fd4e7e49b9bd99e8e8db}{get\_stack\_frame}}(\ pointer\ )-\/>\mbox{\hyperlink{consspaceobject_8h_a83b06591da1671fb9f6b1c6087b4718f}{previous}};}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00279}00279\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00280}00280\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00281}00281\ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00282}00282\ \textcolor{comment}{}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00283}00283\ \textcolor{comment}{/**}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00284}00284\ \textcolor{comment}{\ *\ Fetch\ a\ pointer\ to\ the\ value\ of\ the\ local\ variable\ at\ this\ index.}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00285}00285\ \textcolor{comment}{\ */}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00286}\mbox{\hyperlink{stack_8c_a6e989b705aea0873495c7259121e0e33}{00286}}\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ \mbox{\hyperlink{stack_8c_a6e989b705aea0873495c7259121e0e33}{fetch\_arg}}(\ struct\ \mbox{\hyperlink{consspaceobject_8h_structstack__frame}{stack\_frame}}\ *frame,\ \textcolor{keywordtype}{unsigned}\ \textcolor{keywordtype}{int}\ index\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00287}00287\ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ result\ =\ \mbox{\hyperlink{consspaceobject_8h_a263efce0e5cda1d387a1a43f94715445}{NIL}};}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00288}00288\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00289}00289\ \ \ \ \ \textcolor{keywordflow}{if}\ (\ index\ <\ \mbox{\hyperlink{consspaceobject_8h_a214b772c864ac6458405e6a37fb9bf6e}{args\_in\_frame}}\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00290}00290\ \ \ \ \ \ \ \ \ result\ =\ frame-\/>arg[index];}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00291}00291\ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00292}00292\ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{consspaceobject_8h_structcons__pointer}{cons\_pointer}}\ p\ =\ frame-\/>more;}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00293}00293\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00294}00294\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}\ (\ \textcolor{keywordtype}{int}\ i\ =\ \mbox{\hyperlink{consspaceobject_8h_a214b772c864ac6458405e6a37fb9bf6e}{args\_in\_frame}};\ i\ <\ index;\ i++\ )\ \{}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00295}00295\ \ \ \ \ \ \ \ \ \ \ \ \ p\ =\ \mbox{\hyperlink{consspaceobject_8h_af31e1da9438d7ae4410864ecc901b131}{pointer2cell}}(\ p\ ).payload.cons.cdr;}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00296}00296\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00297}00297\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00298}00298\ \ \ \ \ \ \ \ \ result\ =\ \mbox{\hyperlink{consspaceobject_8h_af31e1da9438d7ae4410864ecc901b131}{pointer2cell}}(\ p\ ).payload.cons.car;}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00299}00299\ \ \ \ \ \}}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00300}00300\ }
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00301}00301\ \ \ \ \ \textcolor{keywordflow}{return}\ result;}
\DoxyCodeLine{\Hypertarget{stack_8c_source_l00302}00302\ \}}

\end{DoxyCode}
