<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta content="text/html;charset=UTF-8" http-equiv="Content-Type"></head><body ><div style='font-size:10pt;font-family:Verdana,Arial,Helvetica,sans-serif;'><br>The BlueBook page 582 shows the layout of a BlockContext. Note that the MethodContext has an area labeled 'other temporaries' and the BlockContext does not.<br><br>I have modified Eliot's "push n first' factorial copy example as such:<br><br><br><blockquote style="border: 1px solid rgb(204, 204, 204); padding: 7px; background-color: rgb(245, 245, 245);"><div>| factorial n |<br><br>thisContext inspect.<br>factorial := [:factorialArgument&nbsp; |<br>&nbsp;&nbsp;&nbsp; n := factorialArgument.<br>&nbsp;&nbsp;&nbsp; n = 1 <br>&nbsp;&nbsp;&nbsp; ifTrue:[<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; Transcript show: (n asString), '-&gt;',&nbsp; thisContext identityHash asString;cr.<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; thisContext inspect. <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 1] <br>&nbsp;&nbsp;&nbsp; ifFalse:[<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; Transcript show: (n asString), '-&gt;',&nbsp; thisContext identityHash asString;cr.&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; thisContext inspect.<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; n * (factorial copy value: n-1)]].<br><br>(3 to: 5) collect: factorial copy.<br></div></blockquote> <br><br>What I am trying to verify (and I think it is true, but I want to run it by you) is that in the BlockContext section of the CompiledMethod, there are several pushTemps.<br><br><blockquote style="border: 1px solid rgb(204, 204, 204); padding: 7px; background-color: rgb(245, 245, 245);"><div><br>70 &lt;C8&gt; send: blockCopy:<br>71 &lt;A4 36&gt; jumpTo: 127<br><b>73 &lt;6A&gt; popIntoTemp: 2<br>74 &lt;12&gt; pushTemp: 2<br>75 &lt;69&gt; popIntoTemp: 1<br>76 &lt;11&gt; pushTemp: 1</b><br>77 &lt;76&gt; pushConstant: 1<br>78 &lt;B6&gt; send: =<br>79 &lt;AC 14&gt; jumpFalse: 101<br>81 &lt;41&gt; pushLit: Transcript<br>82 &lt;88&gt; dup<br>83 &lt;11&gt; pushTemp: 1<br>84 &lt;D4&gt; send: asString<br>85 &lt;25&gt; pushConstant: '-&gt;'<br>86 &lt;E3&gt; send: ,<br>87 &lt;89&gt; pushThisContext: <br>88 &lt;D6&gt; send: identityHash<br>89 &lt;D4&gt; send: asString<br>90 &lt;E3&gt; send: ,<br>91 &lt;E2&gt; send: show:<br>92 &lt;87&gt; pop<br>93 &lt;D7&gt; send: cr<br>94 &lt;87&gt; pop<br>95 &lt;89&gt; pushThisContext: <br>96 &lt;D0&gt; send: inspect<br>97 &lt;87&gt; pop<br>98 &lt;76&gt; pushConstant: 1<br>99 &lt;A4 19&gt; jumpTo: 126<br>101 &lt;41&gt; pushLit: Transcript<br>102 &lt;88&gt; dup<br>103 &lt;11&gt; pushTemp: 1<br>104 &lt;D4&gt; send: asString<br>105 &lt;25&gt; pushConstant: '-&gt;'<br>106 &lt;E3&gt; send: ,<br>107 &lt;89&gt; pushThisContext: <br>108 &lt;D6&gt; send: identityHash<br>109 &lt;D4&gt; send: asString<br>110 &lt;E3&gt; send: ,<br>111 &lt;E2&gt; send: show:<br>112 &lt;87&gt; pop<br>113 &lt;D7&gt; send: cr<br>114 &lt;87&gt; pop<br>115 &lt;89&gt; pushThisContext: <br>116 &lt;D0&gt; send: inspect<br>117 &lt;87&gt; pop<br>118 &lt;11&gt; pushTemp: 1<br>119 &lt;10&gt; pushTemp: 0<br>120 &lt;D8&gt; send: copy<br>121 &lt;11&gt; pushTemp: 1<br>122 &lt;76&gt; pushConstant: 1<br>123 &lt;B1&gt; send: -<br>124 &lt;CA&gt; send: value:<br>125 &lt;B8&gt; send: *<br>126 &lt;7D&gt; blockReturn</div></blockquote> <br>My assumption is, that as the BlockContexts switch in and out, these pushTemps are referencing the 'other temporaries' on the MethodContext, even though we are operating within a BlockContext.<br><br>Yes or No appreciated.<br><br>thx for your time.<br><br>tty<br><br></div></body></html>