promotional, or sales literature without prior written consent from
MIT in each case. */
-/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/cmpint.c,v 1.12 1989/11/06 17:31:23 jinx Exp $
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/cmpint.c,v 1.13 1989/11/06 22:03:29 jinx Exp $
*
* This file corresponds to
* $COMPILER-Header: compiler.c,v 9.37 89/10/25 14:55:45 GMT jinx Exp $
gap_location = STACK_LOC (delta);
source_location = STACK_LOC (0);
Stack_Pointer = gap_location;
- nactuals -= 1;
while ((--nactuals) > 0)
{
STACK_LOCATIVE_POP (gap_location) = STACK_LOCATIVE_POP (source_location);
delta = (- delta);
while ((--delta) >= 0)
{
- STACK_LOCATIVE_POP (source_location) = UNASSIGNED_OBJECT;
+ STACK_LOCATIVE_POP (gap_location) = UNASSIGNED_OBJECT;
}
return (source_location);
}
STACK_PUSH (LONG_TO_UNSIGNED_FIXNUM (offset - 1));
STACK_PUSH (block);
STACK_PUSH (LONG_TO_UNSIGNED_FIXNUM (count + 1));
+ STACK_PUSH (LONG_TO_UNSIGNED_FIXNUM (total_count));
- Store_Expression (LONG_TO_UNSIGNED_FIXNUM (total_count));
+ Store_Expression (SHARP_F);
Store_Return (RC_COMP_LINK_CACHES_RESTART);
Save_Cont ();
C_TO_SCHEME long
comp_link_caches_restart ()
{
- SCHEME_OBJECT block;
+ SCHEME_OBJECT block, environment;
long original_count, offset, last_header_offset, sections, code;
instruction *ret_add;
- original_count = (OBJECT_DATUM (Fetch_Expression ()));
- STACK_POP (); /* Pop count, not needed */
+ original_count = (OBJECT_DATUM (STACK_POP()));
+ STACK_POP (); /* Loop count, for debugger */
block = (STACK_POP ());
+ environment = (compiled_block_environment (block));
+ Store_Env (environment);
offset = (OBJECT_DATUM (STACK_POP ()));
last_header_offset = (OBJECT_DATUM (STACK_POP ()));
sections = (OBJECT_DATUM (STACK_POP ()));
environment = (compiled_block_environment (tramp_data[1]));
name = (compiler_var_error ((tramp_data[0]), environment));
- STACK_PUSH(ENTRY_TO_OBJECT(trampoline));
- STACK_PUSH(LONG_TO_UNSIGNED_FIXNUM(nargs)); /* For debugger */
- STACK_PUSH(environment); /* For debugger */
- Store_Expression(name);
- Store_Return(RC_COMP_OP_REF_TRAP_RESTART);
- Save_Cont();
- RETURN_TO_C(code);
+ STACK_PUSH (ENTRY_TO_OBJECT(trampoline));
+ STACK_PUSH (LONG_TO_UNSIGNED_FIXNUM(nargs)); /* For debugger */
+ STACK_PUSH (environment); /* For debugger */
+ STACK_PUSH (name); /* For debugger */
+ Store_Expression (SHARP_F);
+ Store_Return (RC_COMP_OP_REF_TRAP_RESTART);
+ Save_Cont ();
+ RETURN_TO_C (code);
}
}
SCHEME_OBJECT *old_trampoline, code_block, new_procedure;
long offset;
- /* Discard env. and nargs */
+ /* Discard name, env. and nargs */
- Stack_Pointer = (Simulate_Popping (2));
+ Stack_Pointer = (Simulate_Popping (3));
old_trampoline = (OBJECT_ADDRESS (STACK_POP ()));
code_block = ((TRAMPOLINE_STORAGE (old_trampoline))[1]);
offset = (OBJECT_DATUM ((TRAMPOLINE_STORAGE (old_trampoline))[2]));
{
/* Return to interpreter to handle interrupt */
+ STACK_PUSH (SHARP_F);
Store_Expression (SHARP_F);
Store_Return (RC_COMP_INTERRUPT_RESTART);
Save_Cont ();
else
{
STACK_PUSH (ENTRY_TO_OBJECT (entry_point));
- Store_Expression (state);
+ STACK_PUSH (state);
+ Store_Expression (SHARP_F);
Store_Return (RC_COMP_INTERRUPT_RESTART);
Save_Cont ();
RETURN_TO_C (PRIM_INTERRUPT);
C_TO_SCHEME long
comp_interrupt_restart ()
{
- Store_Env (Fetch_Expression());
- Val = (Fetch_Expression ());
+ SCHEME_OBJECT state;
+
+ state = (STACK_POP ());
+ Store_Env (state);
+ Val = state;
return (C_to_interface ((instruction *) (OBJECT_ADDRESS (STACK_POP ()))));
}
\f
environment = (compiled_block_environment (block));
STACK_PUSH (environment);
name = (compiler_var_error (extension, environment));
- Store_Expression (name);
+ STACK_PUSH (name);
+ Store_Expression (SHARP_F);
Store_Return (RC_COMP_ASSIGNMENT_TRAP_RESTART);
Save_Cont ();
RETURN_TO_C (code);
SCHEME_OBJECT name, environment, value;
long code;
- name = (Fetch_Expression ());
+ name = (STACK_POP ());
environment = (STACK_POP ());
value = (STACK_POP ());
code = (Symbol_Lex_Set (environment, name, value));
{
STACK_PUSH (value);
STACK_PUSH (environment);
- Store_Expression (name);
+ STACK_PUSH (name);
+ Store_Expression (SHARP_F);
Store_Return (RC_COMP_ASSIGNMENT_TRAP_RESTART);
Save_Cont ();
return (code);
environment = (compiled_block_environment (block));
STACK_PUSH (environment);
name = (compiler_var_error (extension, environment));
- Store_Expression (name);
+ STACK_PUSH (name);
+ Store_Expression (SHARP_F);
Store_Return (RC_COMP_CACHE_REF_APPLY_RESTART);
Save_Cont ();
RETURN_TO_C (code);
SCHEME_OBJECT name, environment, block;
long code;
- name = (Fetch_Expression ());
+ name = (STACK_POP ());
environment = (STACK_POP ());
code = (Symbol_Lex_Ref (environment, name));
if (code == PRIM_DONE)
else
{
STACK_PUSH (environment);
- Store_Expression (name);
+ STACK_PUSH (name);
+ Store_Expression (SHARP_F);
Store_Return (RC_COMP_CACHE_REF_APPLY_RESTART);
Save_Cont ();
return (code);
environment = (compiled_block_environment (block)); \
STACK_PUSH (environment); \
name = (compiler_var_error (extension, environment)); \
- Store_Expression (name); \
+ STACK_PUSH (name); \
+ Store_Expression (SHARP_F); \
Store_Return (ret_code); \
Save_Cont (); \
RETURN_TO_C (code); \
else \
{ \
STACK_PUSH (environment); \
- Store_Expression (name); \
+ STACK_PUSH (name); \
+ Store_Expression (SHARP_F); \
Store_Return (ret_code); \
Save_Cont (); \
return (code); \
{ \
STACK_PUSH (ENTRY_TO_OBJECT (ret_add)); \
STACK_PUSH (variable); \
- Store_Expression (environment); \
+ STACK_PUSH (environment); \
+ Store_Expression (SHARP_F); \
Store_Return (ret_code); \
Save_Cont (); \
RETURN_TO_C (code); \
SCHEME_OBJECT environment, variable; \
long code; \
\
- environment = (Fetch_Expression ()); \
+ environment = (STACK_POP ()); \
variable = (STACK_POP ()); \
code = (c_proc (environment, variable)); \
if (code == PRIM_DONE) \
else \
{ \
STACK_PUSH (variable); \
- Store_Expression (environment); \
+ STACK_PUSH (environment); \
+ Store_Expression (SHARP_F); \
Store_Return (ret_code); \
Save_Cont (); \
return (code); \
STACK_PUSH (ENTRY_TO_OBJECT (ret_add)); \
STACK_PUSH (value); \
STACK_PUSH (variable); \
- Store_Expression (environment); \
+ STACK_PUSH (environment); \
+ Store_Expression (SHARP_F); \
Store_Return (ret_code); \
Save_Cont (); \
RETURN_TO_C (code); \
{ \
STACK_PUSH (value); \
STACK_PUSH (variable); \
- Store_Expression (environment); \
+ STACK_PUSH (environment); \
+ Store_Expression (SHARP_F); \
Store_Return (ret_code); \
Save_Cont (); \
return (code); \
{
STACK_PUSH (LONG_TO_UNSIGNED_FIXNUM (nactuals));
STACK_PUSH (variable);
- Store_Expression (environment);
+ STACK_PUSH (environment);
+ Store_Expression (SHARP_F);
Store_Return (RC_COMP_LOOKUP_APPLY_RESTART);
Save_Cont ();
RETURN_TO_C (code);
SCHEME_OBJECT environment, variable;
long code;
- environment = (Fetch_Expression ());
+ environment = (STACK_POP ());
variable = (STACK_POP ());
code = (Lex_Ref (environment, variable));
if (code == PRIM_DONE)
else
{
STACK_PUSH (variable);
- Store_Expression (environment);
+ STACK_PUSH (environment);
+ Store_Expression (SHARP_F);
Store_Return (RC_COMP_LOOKUP_APPLY_RESTART);
Save_Cont ();
return (code);
promotional, or sales literature without prior written consent from
MIT in each case. */
-/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/cmpint.c,v 1.12 1989/11/06 17:31:23 jinx Exp $
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/cmpint.c,v 1.13 1989/11/06 22:03:29 jinx Exp $
*
* This file corresponds to
* $COMPILER-Header: compiler.c,v 9.37 89/10/25 14:55:45 GMT jinx Exp $
gap_location = STACK_LOC (delta);
source_location = STACK_LOC (0);
Stack_Pointer = gap_location;
- nactuals -= 1;
while ((--nactuals) > 0)
{
STACK_LOCATIVE_POP (gap_location) = STACK_LOCATIVE_POP (source_location);
delta = (- delta);
while ((--delta) >= 0)
{
- STACK_LOCATIVE_POP (source_location) = UNASSIGNED_OBJECT;
+ STACK_LOCATIVE_POP (gap_location) = UNASSIGNED_OBJECT;
}
return (source_location);
}
STACK_PUSH (LONG_TO_UNSIGNED_FIXNUM (offset - 1));
STACK_PUSH (block);
STACK_PUSH (LONG_TO_UNSIGNED_FIXNUM (count + 1));
+ STACK_PUSH (LONG_TO_UNSIGNED_FIXNUM (total_count));
- Store_Expression (LONG_TO_UNSIGNED_FIXNUM (total_count));
+ Store_Expression (SHARP_F);
Store_Return (RC_COMP_LINK_CACHES_RESTART);
Save_Cont ();
C_TO_SCHEME long
comp_link_caches_restart ()
{
- SCHEME_OBJECT block;
+ SCHEME_OBJECT block, environment;
long original_count, offset, last_header_offset, sections, code;
instruction *ret_add;
- original_count = (OBJECT_DATUM (Fetch_Expression ()));
- STACK_POP (); /* Pop count, not needed */
+ original_count = (OBJECT_DATUM (STACK_POP()));
+ STACK_POP (); /* Loop count, for debugger */
block = (STACK_POP ());
+ environment = (compiled_block_environment (block));
+ Store_Env (environment);
offset = (OBJECT_DATUM (STACK_POP ()));
last_header_offset = (OBJECT_DATUM (STACK_POP ()));
sections = (OBJECT_DATUM (STACK_POP ()));
environment = (compiled_block_environment (tramp_data[1]));
name = (compiler_var_error ((tramp_data[0]), environment));
- STACK_PUSH(ENTRY_TO_OBJECT(trampoline));
- STACK_PUSH(LONG_TO_UNSIGNED_FIXNUM(nargs)); /* For debugger */
- STACK_PUSH(environment); /* For debugger */
- Store_Expression(name);
- Store_Return(RC_COMP_OP_REF_TRAP_RESTART);
- Save_Cont();
- RETURN_TO_C(code);
+ STACK_PUSH (ENTRY_TO_OBJECT(trampoline));
+ STACK_PUSH (LONG_TO_UNSIGNED_FIXNUM(nargs)); /* For debugger */
+ STACK_PUSH (environment); /* For debugger */
+ STACK_PUSH (name); /* For debugger */
+ Store_Expression (SHARP_F);
+ Store_Return (RC_COMP_OP_REF_TRAP_RESTART);
+ Save_Cont ();
+ RETURN_TO_C (code);
}
}
SCHEME_OBJECT *old_trampoline, code_block, new_procedure;
long offset;
- /* Discard env. and nargs */
+ /* Discard name, env. and nargs */
- Stack_Pointer = (Simulate_Popping (2));
+ Stack_Pointer = (Simulate_Popping (3));
old_trampoline = (OBJECT_ADDRESS (STACK_POP ()));
code_block = ((TRAMPOLINE_STORAGE (old_trampoline))[1]);
offset = (OBJECT_DATUM ((TRAMPOLINE_STORAGE (old_trampoline))[2]));
{
/* Return to interpreter to handle interrupt */
+ STACK_PUSH (SHARP_F);
Store_Expression (SHARP_F);
Store_Return (RC_COMP_INTERRUPT_RESTART);
Save_Cont ();
else
{
STACK_PUSH (ENTRY_TO_OBJECT (entry_point));
- Store_Expression (state);
+ STACK_PUSH (state);
+ Store_Expression (SHARP_F);
Store_Return (RC_COMP_INTERRUPT_RESTART);
Save_Cont ();
RETURN_TO_C (PRIM_INTERRUPT);
C_TO_SCHEME long
comp_interrupt_restart ()
{
- Store_Env (Fetch_Expression());
- Val = (Fetch_Expression ());
+ SCHEME_OBJECT state;
+
+ state = (STACK_POP ());
+ Store_Env (state);
+ Val = state;
return (C_to_interface ((instruction *) (OBJECT_ADDRESS (STACK_POP ()))));
}
\f
environment = (compiled_block_environment (block));
STACK_PUSH (environment);
name = (compiler_var_error (extension, environment));
- Store_Expression (name);
+ STACK_PUSH (name);
+ Store_Expression (SHARP_F);
Store_Return (RC_COMP_ASSIGNMENT_TRAP_RESTART);
Save_Cont ();
RETURN_TO_C (code);
SCHEME_OBJECT name, environment, value;
long code;
- name = (Fetch_Expression ());
+ name = (STACK_POP ());
environment = (STACK_POP ());
value = (STACK_POP ());
code = (Symbol_Lex_Set (environment, name, value));
{
STACK_PUSH (value);
STACK_PUSH (environment);
- Store_Expression (name);
+ STACK_PUSH (name);
+ Store_Expression (SHARP_F);
Store_Return (RC_COMP_ASSIGNMENT_TRAP_RESTART);
Save_Cont ();
return (code);
environment = (compiled_block_environment (block));
STACK_PUSH (environment);
name = (compiler_var_error (extension, environment));
- Store_Expression (name);
+ STACK_PUSH (name);
+ Store_Expression (SHARP_F);
Store_Return (RC_COMP_CACHE_REF_APPLY_RESTART);
Save_Cont ();
RETURN_TO_C (code);
SCHEME_OBJECT name, environment, block;
long code;
- name = (Fetch_Expression ());
+ name = (STACK_POP ());
environment = (STACK_POP ());
code = (Symbol_Lex_Ref (environment, name));
if (code == PRIM_DONE)
else
{
STACK_PUSH (environment);
- Store_Expression (name);
+ STACK_PUSH (name);
+ Store_Expression (SHARP_F);
Store_Return (RC_COMP_CACHE_REF_APPLY_RESTART);
Save_Cont ();
return (code);
environment = (compiled_block_environment (block)); \
STACK_PUSH (environment); \
name = (compiler_var_error (extension, environment)); \
- Store_Expression (name); \
+ STACK_PUSH (name); \
+ Store_Expression (SHARP_F); \
Store_Return (ret_code); \
Save_Cont (); \
RETURN_TO_C (code); \
else \
{ \
STACK_PUSH (environment); \
- Store_Expression (name); \
+ STACK_PUSH (name); \
+ Store_Expression (SHARP_F); \
Store_Return (ret_code); \
Save_Cont (); \
return (code); \
{ \
STACK_PUSH (ENTRY_TO_OBJECT (ret_add)); \
STACK_PUSH (variable); \
- Store_Expression (environment); \
+ STACK_PUSH (environment); \
+ Store_Expression (SHARP_F); \
Store_Return (ret_code); \
Save_Cont (); \
RETURN_TO_C (code); \
SCHEME_OBJECT environment, variable; \
long code; \
\
- environment = (Fetch_Expression ()); \
+ environment = (STACK_POP ()); \
variable = (STACK_POP ()); \
code = (c_proc (environment, variable)); \
if (code == PRIM_DONE) \
else \
{ \
STACK_PUSH (variable); \
- Store_Expression (environment); \
+ STACK_PUSH (environment); \
+ Store_Expression (SHARP_F); \
Store_Return (ret_code); \
Save_Cont (); \
return (code); \
STACK_PUSH (ENTRY_TO_OBJECT (ret_add)); \
STACK_PUSH (value); \
STACK_PUSH (variable); \
- Store_Expression (environment); \
+ STACK_PUSH (environment); \
+ Store_Expression (SHARP_F); \
Store_Return (ret_code); \
Save_Cont (); \
RETURN_TO_C (code); \
{ \
STACK_PUSH (value); \
STACK_PUSH (variable); \
- Store_Expression (environment); \
+ STACK_PUSH (environment); \
+ Store_Expression (SHARP_F); \
Store_Return (ret_code); \
Save_Cont (); \
return (code); \
{
STACK_PUSH (LONG_TO_UNSIGNED_FIXNUM (nactuals));
STACK_PUSH (variable);
- Store_Expression (environment);
+ STACK_PUSH (environment);
+ Store_Expression (SHARP_F);
Store_Return (RC_COMP_LOOKUP_APPLY_RESTART);
Save_Cont ();
RETURN_TO_C (code);
SCHEME_OBJECT environment, variable;
long code;
- environment = (Fetch_Expression ());
+ environment = (STACK_POP ());
variable = (STACK_POP ());
code = (Lex_Ref (environment, variable));
if (code == PRIM_DONE)
else
{
STACK_PUSH (variable);
- Store_Expression (environment);
+ STACK_PUSH (environment);
+ Store_Expression (SHARP_F);
Store_Return (RC_COMP_LOOKUP_APPLY_RESTART);
Save_Cont ();
return (code);