<!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 |<br> n := factorialArgument.<br> n = 1 <br> ifTrue:[<br> Transcript show: (n asString), '->', thisContext identityHash asString;cr.<br> thisContext inspect. <br> 1] <br> ifFalse:[<br> Transcript show: (n asString), '->', thisContext identityHash asString;cr. <br> thisContext inspect.<br> 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 <C8> send: blockCopy:<br>71 <A4 36> jumpTo: 127<br><b>73 <6A> popIntoTemp: 2<br>74 <12> pushTemp: 2<br>75 <69> popIntoTemp: 1<br>76 <11> pushTemp: 1</b><br>77 <76> pushConstant: 1<br>78 <B6> send: =<br>79 <AC 14> jumpFalse: 101<br>81 <41> pushLit: Transcript<br>82 <88> dup<br>83 <11> pushTemp: 1<br>84 <D4> send: asString<br>85 <25> pushConstant: '->'<br>86 <E3> send: ,<br>87 <89> pushThisContext: <br>88 <D6> send: identityHash<br>89 <D4> send: asString<br>90 <E3> send: ,<br>91 <E2> send: show:<br>92 <87> pop<br>93 <D7> send: cr<br>94 <87> pop<br>95 <89> pushThisContext: <br>96 <D0> send: inspect<br>97 <87> pop<br>98 <76> pushConstant: 1<br>99 <A4 19> jumpTo: 126<br>101 <41> pushLit: Transcript<br>102 <88> dup<br>103 <11> pushTemp: 1<br>104 <D4> send: asString<br>105 <25> pushConstant: '->'<br>106 <E3> send: ,<br>107 <89> pushThisContext: <br>108 <D6> send: identityHash<br>109 <D4> send: asString<br>110 <E3> send: ,<br>111 <E2> send: show:<br>112 <87> pop<br>113 <D7> send: cr<br>114 <87> pop<br>115 <89> pushThisContext: <br>116 <D0> send: inspect<br>117 <87> pop<br>118 <11> pushTemp: 1<br>119 <10> pushTemp: 0<br>120 <D8> send: copy<br>121 <11> pushTemp: 1<br>122 <76> pushConstant: 1<br>123 <B1> send: -<br>124 <CA> send: value:<br>125 <B8> send: *<br>126 <7D> 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>