enhanced the compiler to handle cascaded messages.
implemented block-context local temporaries. changed primitive_block_context_value() to support block context reentrancy by activating a shallow-copied block context
This commit is contained in:
		@ -606,9 +606,8 @@ struct stix_context_t
 | 
			
		||||
	stix_oop_t         sender;   /* message sending context - active context before new context activation*/
 | 
			
		||||
	stix_oop_t         ip;       /* instruction pointer */
 | 
			
		||||
	stix_oop_t         sp;       /* stack pointer */
 | 
			
		||||
 | 
			
		||||
	stix_oop_method_t  method;   /* CompiledMethod */
 | 
			
		||||
	stix_oop_t         unused; 
 | 
			
		||||
	stix_oop_t         ntmprs;   /* SmallInteger. */
 | 
			
		||||
	stix_oop_method_t  method;   /* CompiledMethod */	
 | 
			
		||||
	stix_oop_t         receiver; /* receiver of the message. For a statement '#xxx do: #yyyy', #xxx is the receiver.*/
 | 
			
		||||
	stix_oop_t         home;     /* nil */
 | 
			
		||||
	stix_oop_context_t origin;   /* nil */
 | 
			
		||||
@ -627,9 +626,9 @@ struct stix_block_context_t
 | 
			
		||||
	stix_oop_t         caller;
 | 
			
		||||
	stix_oop_t         ip;           /* SmallInteger. instruction pointer */
 | 
			
		||||
	stix_oop_t         sp;           /* SmallInteger. stack pointer */
 | 
			
		||||
	stix_oop_t         nargs;        /* SmallInteger */
 | 
			
		||||
	stix_oop_t         ntmprs;       /* SmallInteger. total number of temporaries */
 | 
			
		||||
	stix_oop_t         iip;          /* SmallInteger. initial instruction pointer */
 | 
			
		||||
	stix_oop_t         nargs;        /* SmallInteger */
 | 
			
		||||
	stix_oop_t         unused/*iip*/;          /* SmallInteger. initial instruction pointer */
 | 
			
		||||
	stix_oop_t         home;         /* MethodContext or BlockContext */
 | 
			
		||||
	stix_oop_context_t origin;       /* MethodContext */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user