Change variable caches so assignments and references go through
authorGuillermo J. Rozas <edu/mit/csail/zurich/gjr>
Mon, 5 Oct 1987 18:37:10 +0000 (18:37 +0000)
committerGuillermo J. Rozas <edu/mit/csail/zurich/gjr>
Mon, 5 Oct 1987 18:37:10 +0000 (18:37 +0000)
different caches.  This allows uuo links to be turned on by default.

24 files changed:
v7/src/microcode/debug.c
v7/src/microcode/errors.h
v7/src/microcode/fhooks.c
v7/src/microcode/gccode.h
v7/src/microcode/gctype.c
v7/src/microcode/interp.c
v7/src/microcode/lookup.h
v7/src/microcode/object.h
v7/src/microcode/ppband.c
v7/src/microcode/returns.h
v7/src/microcode/sdata.h
v7/src/microcode/storage.c
v7/src/microcode/trap.h
v7/src/microcode/types.h
v7/src/microcode/version.h
v8/src/microcode/gctype.c
v8/src/microcode/interp.c
v8/src/microcode/lookup.h
v8/src/microcode/object.h
v8/src/microcode/ppband.c
v8/src/microcode/returns.h
v8/src/microcode/trap.h
v8/src/microcode/types.h
v8/src/microcode/version.h

index 27f455627e46c19c5134cb891a71261e7b6d7359..9618b3824deb73d5223a6cd942fc9fed3b262867 100644 (file)
@@ -30,7 +30,7 @@ Technology nor of any adaptation thereof in any advertising,
 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/debug.c,v 9.24 1987/04/16 02:20:42 jinx Rel $
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/debug.c,v 9.25 1987/10/05 18:31:47 jinx Rel $
  *
  * Utilities to help with debugging
  */
@@ -40,18 +40,23 @@ MIT in each case. */
 #include "trap.h"
 #include "lookup.h"
 \f
-void Show_Pure()
-{ Pointer *Obj_Address;
+void
+Show_Pure()
+{
+  Pointer *Obj_Address;
   long Pure_Size, Total_Size;
 
   Obj_Address = Constant_Space;
   while (true)
-  { if (Obj_Address > Free_Constant)
-    { printf("Past end of area.\n");
+  {
+    if (Obj_Address > Free_Constant)
+    {
+      printf("Past end of area.\n");
       return;
     }
     if (Obj_Address == Free_Constant)
-    { printf("Done.\n");
+    {
+      printf("Done.\n");
       return;
     }
     Pure_Size = Get_Integer(*Obj_Address);
@@ -59,39 +64,52 @@ void Show_Pure()
     printf("0x%x: pure=0x%x, total=0x%x\n",
            Obj_Address, Pure_Size, Total_Size);
     if (Type_Code(*Obj_Address) != TC_MANIFEST_SPECIAL_NM_VECTOR)
-    { printf("Missing initial SNMV.\n");
+    {
+      printf("Missing initial SNMV.\n");
       return;
     }
     if (Type_Code(Obj_Address[1]) != PURE_PART)
+    {
       printf("Missing subsequent pure header.\n");
+    }
     if (Type_Code(Obj_Address[Pure_Size-1]) !=
         TC_MANIFEST_SPECIAL_NM_VECTOR)
-    { printf("Missing internal SNMV.\n");
+    {
+      printf("Missing internal SNMV.\n");
       return;
     }
     if (Type_Code(Obj_Address[Pure_Size]) != CONSTANT_PART)
-    { printf("Missing constant header.\n");
+    {
+      printf("Missing constant header.\n");
       return;
     }
     if (Get_Integer(Obj_Address[Pure_Size]) != Pure_Size)
+    {
       printf("Pure size mismatch 0x%x.\n",
             Get_Integer(Obj_Address[Pure_Size]));
+    }
     if (Type_Code(Obj_Address[Total_Size-1]) != 
         TC_MANIFEST_SPECIAL_NM_VECTOR)
-    { printf("Missing ending SNMV.\n");
+    {
+      printf("Missing ending SNMV.\n");
       return;
     }
     if (Type_Code(Obj_Address[Total_Size]) != END_OF_BLOCK)
-    { printf("Missing ending header.\n");
+    {
+      printf("Missing ending header.\n");
       return;
     }
     if (Get_Integer(Obj_Address[Total_Size]) != Total_Size)
+    {
       printf("Total size mismatch 0x%x.\n",
              Get_Integer(Obj_Address[Total_Size]));
+    }
     Obj_Address += Total_Size+1;
 #ifdef FLOATING_ALIGNMENT
     while (*Obj_Address == Make_Non_Pointer(TC_MANIFEST_NM_VECTOR, 0))
+    {
       Obj_Address += 1;
+    }
 #endif
   }
 }
@@ -376,16 +394,19 @@ SPrint:
 /* Do_Printing, continued */
 
     case TC_FUTURE: printf("[FUTURE"); break;
-    case TC_HUNK3: printf("[TRIPLE"); break;
+    case TC_HUNK3_A: printf("[TRIPLE_A"); break;
+    case TC_HUNK3_B: printf("[TRIPLE_B"); break;
     case TC_IN_PACKAGE: printf("[IN_PACKAGE"); break;
+
     case TC_LAMBDA:
-      if (Detailed) printf("[LAMBDA (");
-      Do_Printing(
-        Vector_Ref(
-          Vector_Ref(Expr, LAMBDA_FORMALS),
-         1), false);
-      if (Detailed) printf(") 0x%x]", Temp_Address);
+      if (Detailed)
+       printf("[LAMBDA (");
+      Do_Printing(Vector_Ref(Vector_Ref(Expr, LAMBDA_FORMALS), 1),
+                 false);
+      if (Detailed)
+       printf(") 0x%x]", Temp_Address);
       return;
+
     case TC_LEXPR: printf("[LEXPR"); break;
     case TC_MANIFEST_NM_VECTOR: printf("[MANIFEST_NM_VECTOR"); break;
     case TC_MANIFEST_SPECIAL_NM_VECTOR:
index 611b7bacdad4cc5e9c34bfe0b5f7756773b5dd6e..dcc5ca52f180f767f844eea3444f19180addd552 100644 (file)
@@ -30,7 +30,7 @@ Technology nor of any adaptation thereof in any advertising,
 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/errors.h,v 9.24 1987/04/03 00:11:24 jinx Rel $
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/errors.h,v 9.25 1987/10/05 18:32:03 jinx Rel $
  *
  * Error and termination code declarations.  This must correspond
  * to UTABMD.SCM
@@ -98,8 +98,10 @@ MIT in each case. */
 #define ERR_COMPILED_CODE_ERROR                        0x31
 #define ERR_FLOATING_OVERFLOW                  0x32
 #define ERR_UNIMPLEMENTED_PRIMITIVE            0x33
+#define ERR_ILLEGAL_REFERENCE_TRAP             0x34
+#define ERR_BROKEN_VARIABLE_CACHE              0x35
 
-#define MAX_ERROR                              0x33
+#define MAX_ERROR                              0x35
 \f
 /* Termination codes: the interpreter halts on these */
 
index 7ed859f97ff6f999061f28771833c25e4b19bf93..09a6a540b282219e0f7b09e88c0d79eaff1313d8 100644 (file)
@@ -30,7 +30,7 @@ Technology nor of any adaptation thereof in any advertising,
 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/Attic/fhooks.c,v 9.24 1987/06/18 21:15:25 jinx Rel $
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/Attic/fhooks.c,v 9.25 1987/10/05 18:32:13 jinx Rel $
  *
  * This file contains hooks and handles for the new fluid bindings
  * scheme for multiprocessors.
@@ -126,11 +126,8 @@ Pointer
     case TRAP_UNASSIGNED:
       return cell;
 
-    case TRAP_NOP:
-      Primitive_Error(ERR_BAD_FRAME);
-
     default:
-      Primitive_Error(ERR_BROKEN_COMPILED_VARIABLE);
+      Primitive_Error(ERR_ILLEGAL_REFERENCE_TRAP);
   }
 }
 \f
@@ -158,7 +155,6 @@ new_fluid_binding_restart:
     get_trap_kind(trap_kind, trap);
     switch(trap_kind)
     {
-      case TRAP_NOP:
       case TRAP_DANGEROUS:
         Vector_Set(trap,
                   TRAP_TAG,
@@ -188,11 +184,12 @@ new_fluid_binding_restart:
       case TRAP_COMPILER_CACHED_DANGEROUS:
        cell = Nth_Vector_Loc(Fast_Vector_Ref(*cell, TRAP_EXTRA),
                              TRAP_EXTENSION_CELL);
+       update_lock(set_serializer, cell);
        goto new_fluid_binding_restart;
 
       default:
        remove_lock(set_serializer);
-       Primitive_Error(ERR_BROKEN_COMPILED_VARIABLE);
+       Primitive_Error(ERR_ILLEGAL_REFERENCE_TRAP);
     }
   }
 
index 00db3b4b6f09f6ae000b5e6e435ab4d7f5ad8119..d95a29a85ead23b99e78270c27183064f8c129c7 100644 (file)
@@ -30,7 +30,7 @@ Technology nor of any adaptation thereof in any advertising,
 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/gccode.h,v 9.28 1987/09/21 21:56:03 jinx Exp $
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/gccode.h,v 9.29 1987/10/05 18:32:24 jinx Exp $
  *
  * This file contains the macros for use in code which does GC-like
  * loops over memory.  It is only included in a few files, unlike
@@ -115,7 +115,8 @@ MIT in each case. */
 #define case_Triple                                    \
  case TC_COMBINATION_2:                                        \
  case TC_EXTENDED_LAMBDA:                              \
- case TC_HUNK3:                                                \
+ case TC_HUNK3_A:                                      \
+ case TC_HUNK3_B:                                      \
  case TC_CONDITIONAL:                                  \
  case TC_SEQUENCE_3:                                   \
  case TC_PCOMB2
index 9b0e9bbfd9aebeebfc0b70c7f31e0ab98cf0be91..fc73eeb9dd4629b725a78e380d9c02c314225301 100644 (file)
@@ -30,7 +30,7 @@ Technology nor of any adaptation thereof in any advertising,
 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/Attic/gctype.c,v 9.23 1987/06/05 20:56:37 cph Rel $
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/Attic/gctype.c,v 9.24 1987/10/05 18:32:37 jinx Exp $
  *
  * This file contains the table which maps between Types and
  * GC Types.
@@ -74,11 +74,11 @@ int GC_Type_Map[MAX_SAFE_TYPE + 1] = {
     GC_Pair,                   /* TC_INTERNED_SYMBOL */
     GC_Vector,                 /* TC_CHARACTER_STRING,TC_VECTOR_8B */
     GC_Pair,                   /* TC_ACCESS */
-    GC_Undefined,              /* 0x20 */
+    GC_Triple,                 /* TC_HUNK3_A */
     GC_Pair,                   /* TC_DEFINITION */
     GC_Special,                        /* TC_BROKEN_HEART */
     GC_Pair,                   /* TC_ASSIGNMENT */
-    GC_Triple,                 /* TC_HUNK3 */
+    GC_Triple,                 /* TC_HUNK3_B */
     GC_Pair,                   /* TC_IN_PACKAGE */
 
 /* GC_Type_Map continues on next page */
index 7b5747ac5a0d6a330f7968a40b551339076408ae..b936b18802b355b5f69af10670c8b96abc6effa6 100644 (file)
@@ -30,7 +30,7 @@ Technology nor of any adaptation thereof in any advertising,
 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/interp.c,v 9.31 1987/07/15 22:08:05 cph Rel $
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/interp.c,v 9.32 1987/10/05 18:32:48 jinx Exp $
  *
  * This file contains the heart of the Scheme Scode
  * interpreter
@@ -411,7 +411,8 @@ Do_Expression:
 Eval_Non_Trapping:
   Eval_Ucode_Hook();
   switch (Type_Code(Fetch_Expression()))
-  { case TC_BIG_FIXNUM:         /* The self evaluating items */
+  {
+    case TC_BIG_FIXNUM:         /* The self evaluating items */
     case TC_BIG_FLONUM:
     case TC_CHARACTER_STRING:
     case TC_CHARACTER:
@@ -422,7 +423,8 @@ Eval_Non_Trapping:
     case TC_ENVIRONMENT:
     case TC_EXTENDED_PROCEDURE:
     case TC_FIXNUM:
-    case TC_HUNK3:
+    case TC_HUNK3_A:
+    case TC_HUNK3_B:
     case TC_INTERNED_SYMBOL:
     case TC_LIST:
     case TC_NON_MARKED_VECTOR:
@@ -700,11 +702,6 @@ lookup_end_restart:
 \f
 /* Interpret(), continued */
 
-       case TRAP_NOP:
-         Val = Vector_Ref(Val, TRAP_EXTRA);
-         Set_Time_Zone(Zone_Working);
-         goto Pop_Return;
-
        case TRAP_UNBOUND:
          temp = ERR_UNBOUND_VARIABLE;
          break;
@@ -714,7 +711,7 @@ lookup_end_restart:
          break;
 
        default:
-         temp = ERR_BROKEN_COMPILED_VARIABLE;
+         temp = ERR_ILLEGAL_REFERENCE_TRAP;
          break;
       }
 
@@ -871,20 +868,23 @@ Pop_Return:
       define_compiler_restart (RC_COMP_SAFE_REFERENCE_RESTART,
                               comp_safe_reference_restart)
 
-      define_compiler_restart (RC_COMP_CACHE_VARIABLE_RESTART,
-                              comp_cache_variable_restart)
+      define_compiler_restart (RC_COMP_CACHE_LOOKUP_RESTART,
+                              comp_cache_lookup_restart)
 
-      define_compiler_restart (RC_COMP_REFERENCE_TRAP_RESTART,
-                              comp_reference_trap_restart)
+      define_compiler_restart (RC_COMP_LOOKUP_TRAP_RESTART,
+                              comp_lookup_trap_restart)
+
+      define_compiler_restart (RC_COMP_CACHE_ASSIGNMENT_RESTART,
+                              comp_cache_assignment_restart)
 
       define_compiler_restart (RC_COMP_ASSIGNMENT_TRAP_RESTART,
                               comp_assignment_trap_restart)
 
-      define_compiler_restart (RC_COMP_UUO_LINK_RESTART,
-                              comp_uuo_link_restart)
+      define_compiler_restart (RC_COMP_CACHE_OPERATOR_RESTART,
+                              comp_cache_operator_restart)
 
-      define_compiler_restart (RC_COMP_UUO_LINK_TRAP_RESTART,
-                              comp_uuo_link_trap_restart)
+      define_compiler_restart (RC_COMP_OP_REF_TRAP_RESTART,
+                              comp_op_ref_trap_restart)
 
       define_compiler_restart (RC_COMP_CACHE_REF_APPLY_RESTART,
                               comp_cache_ref_apply_restart)
@@ -1029,12 +1029,18 @@ external_assignment_return:
 
        case TRAP_COMPILER_CACHED:
        {
-         Pointer extension;
+         Pointer extension, references;
 
          extension = Fast_Vector_Ref(Val, TRAP_EXTRA);
-         if (Fast_Vector_Ref(extension, TRAP_EXTENSION_UUO_LIST) != NIL)
+         references = Fast_Vector_Ref(extension, TRAP_EXTENSION_REFERENCES);
+
+         if (Fast_Vector_Ref(references, TRAP_REFERENCES_OPERATOR) != NIL)
          {
-           /* No need to recompile, pass the fake variable. */
+
+           /* There are uuo links.
+              wimp out and let deep_assignment_end handle it.
+            */
+
            remove_lock(set_serializer);
            temp = deep_assignment_end(cell,
                                       fake_variable_object,
@@ -1043,6 +1049,7 @@ external_assignment_return:
            goto external_assignment_return;
          }
          cell = Nth_Vector_Loc(extension, TRAP_EXTENSION_CELL);
+         update_lock(set_serializer, cell);
          goto assignment_end_after_lock;
        }         
 
@@ -1064,14 +1071,9 @@ external_assignment_return:
          Val = bogus_unassigned;
          goto normal_assignment_done;
 
-       case TRAP_NOP:
-         remove_lock(set_serializer);
-         temp = ERR_BAD_FRAME;
-         break;
-
        default:
          remove_lock(set_serializer);
-         temp = ERR_BROKEN_COMPILED_VARIABLE;
+         temp = ERR_ILLEGAL_REFERENCE_TRAP;
          break;
       }
 
index caa3071f3c1831afa9307f5f96e11ade91a1bdbd..788cdcba5162f705872707e1f7b792207387b366 100644 (file)
@@ -30,7 +30,7 @@ Technology nor of any adaptation thereof in any advertising,
 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/lookup.h,v 9.38 1987/07/07 02:40:24 jinx Rel $ */
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/lookup.h,v 9.39 1987/10/05 18:35:30 jinx Rel $ */
 
 /* Macros and declarations for the variable lookup code. */
 
@@ -130,6 +130,16 @@ extern Pointer
 
 #endif
 
+/* This is provided as a separate macro so that it can be made
+   atomic if necessary.
+ */
+
+#define update_lock(handle, cell)                                      \
+{                                                                      \
+  remove_lock(handle);                                                 \
+  setup_lock(handle, cell);                                            \
+}
+
 #ifndef Future_Variable_Splice
 #define Future_Variable_Splice(Vbl, Ofs, Val)
 #endif
index c91b5e18431f4824b44342b8aff25490ea1fe193..451f89d7f061b40faecc01a95b136217c6caabf0 100644 (file)
@@ -30,7 +30,7 @@ Technology nor of any adaptation thereof in any advertising,
 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/object.h,v 9.24 1987/07/23 21:49:17 cph Exp $ */
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/object.h,v 9.25 1987/10/05 18:35:46 jinx Exp $ */
 
 /* This file contains definitions pertaining to the C view of 
    Scheme pointers: widths of fields, extraction macros, pre-computed
@@ -185,6 +185,7 @@ typedef long relocation_type;       /* Used to relocate pointers on fasload */
 #define PAIR_P(object) ((OBJECT_TYPE (object)) == TC_LIST)
 #define WEAK_PAIR_P(object) ((OBJECT_TYPE (object)) == TC_WEAK_CONS)
 #define VECTOR_P(object) ((OBJECT_TYPE (object)) == TC_VECTOR)
+#define REFERENCE_TRAP_P(object) ((OBJECT_TYPE (object)) == TC_REFERENCE_TRAP)
 
 #define NON_MARKED_VECTOR_P(object)                                    \
   ((OBJECT_TYPE (object)) == TC_NON_MARKED_VECTOR)
index 6950a9aa6aa54ed175bfe6ef2547d8eb8c24d71c..ada657611706d9c825a10219f5df14038e8cc34a 100644 (file)
@@ -30,7 +30,7 @@ Technology nor of any adaptation thereof in any advertising,
 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/Attic/ppband.c,v 9.26 1987/07/01 17:55:37 jinx Rel $
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/Attic/ppband.c,v 9.27 1987/10/05 18:30:44 jinx Exp $
  *
  * Dumps Scheme FASL in user-readable form .
  */
@@ -221,7 +221,8 @@ Display(Location, Type, The_Datum)
     case TC_ACCESS: printf("[ACCESS "); break;
     case TC_DEFINITION: printf("[DEFINITION "); break;
     case TC_ASSIGNMENT: printf("[ASSIGNMENT "); break;
-    case TC_HUNK3: printf("[HUNK3 "); break;
+    case TC_HUNK3_A: printf("[HUNK3_A "); break;
+    case TC_HUNK3_B: printf("[HUNK3_B "); break;
     case TC_IN_PACKAGE: printf("[IN-PACKAGE "); break;
     case TC_COMBINATION: printf("[COMBINATION "); break;
     case TC_COMPILED_EXPRESSION: printf("[COMPILED-EXPRESSION "); break;
index f4a23d2e37f313e0e6b9ce015098cfecb650f223..cc0356d53b5ae605bdce4986a009c6d9b5f03503 100644 (file)
@@ -30,7 +30,7 @@ Technology nor of any adaptation thereof in any advertising,
 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/returns.h,v 9.26 1987/06/19 15:54:29 jinx Rel $
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/returns.h,v 9.27 1987/10/05 18:36:01 jinx Exp $
  *
  * Return codes.  These are placed in Return when an
  * interpreter operation needs to operate in several
@@ -42,86 +42,87 @@ MIT in each case. */
  * Please maintain consistency. 
  */
 
-#define RC_END_OF_COMPUTATION          0x00
-/* formerly RC_RESTORE_CONTROL_POINT   0x01 */
-#define RC_JOIN_STACKLETS              0x01
-#define RC_RESTORE_CONTINUATION                0x02 /* Used for 68000 */
-#define RC_INTERNAL_APPLY              0x03
-#define RC_BAD_INTERRUPT_CONTINUE      0x04 /* Used for 68000 */
-#define RC_RESTORE_HISTORY             0x05
-#define RC_INVOKE_STACK_THREAD                 0x06
-#define RC_RESTART_EXECUTION           0x07 /* Used for 68000 */
-#define RC_EXECUTE_ASSIGNMENT_FINISH   0x08
-#define RC_EXECUTE_DEFINITION_FINISH   0x09
-#define RC_EXECUTE_ACCESS_FINISH       0x0A
-#define RC_EXECUTE_IN_PACKAGE_CONTINUE  0x0B
-#define RC_SEQ_2_DO_2                  0x0C
-#define RC_SEQ_3_DO_2                  0x0D
-#define RC_SEQ_3_DO_3                  0x0E
-#define RC_CONDITIONAL_DECIDE          0x0F
-#define RC_DISJUNCTION_DECIDE          0x10
-#define RC_COMB_1_PROCEDURE            0x11
-#define RC_COMB_APPLY_FUNCTION         0x12
-#define RC_COMB_2_FIRST_OPERAND                0x13
-#define RC_COMB_2_PROCEDURE            0x14
-#define RC_COMB_SAVE_VALUE             0x15
-#define RC_PCOMB1_APPLY                        0x16
-#define RC_PCOMB2_DO_1                 0x17
-#define RC_PCOMB2_APPLY                        0x18
-#define RC_PCOMB3_DO_2                 0x19
-#define RC_PCOMB3_DO_1                 0x1A
-#define RC_PCOMB3_APPLY                        0x1B
+#define RC_END_OF_COMPUTATION                  0x00
+/* formerly RC_RESTORE_CONTROL_POINT           0x01 */
+#define RC_JOIN_STACKLETS                      0x01
+#define RC_RESTORE_CONTINUATION                        0x02 /* Used for 68000 */
+#define RC_INTERNAL_APPLY                      0x03
+#define RC_BAD_INTERRUPT_CONTINUE              0x04 /* Used for 68000 */
+#define RC_RESTORE_HISTORY                     0x05
+#define RC_INVOKE_STACK_THREAD                         0x06
+#define RC_RESTART_EXECUTION                   0x07 /* Used for 68000 */
+#define RC_EXECUTE_ASSIGNMENT_FINISH           0x08
+#define RC_EXECUTE_DEFINITION_FINISH           0x09
+#define RC_EXECUTE_ACCESS_FINISH               0x0A
+#define RC_EXECUTE_IN_PACKAGE_CONTINUE         0x0B
+#define RC_SEQ_2_DO_2                          0x0C
+#define RC_SEQ_3_DO_2                          0x0D
+#define RC_SEQ_3_DO_3                          0x0E
+#define RC_CONDITIONAL_DECIDE                  0x0F
+#define RC_DISJUNCTION_DECIDE                  0x10
+#define RC_COMB_1_PROCEDURE                    0x11
+#define RC_COMB_APPLY_FUNCTION                 0x12
+#define RC_COMB_2_FIRST_OPERAND                        0x13
+#define RC_COMB_2_PROCEDURE                    0x14
+#define RC_COMB_SAVE_VALUE                     0x15
+#define RC_PCOMB1_APPLY                                0x16
+#define RC_PCOMB2_DO_1                         0x17
+#define RC_PCOMB2_APPLY                                0x18
+#define RC_PCOMB3_DO_2                         0x19
+#define RC_PCOMB3_DO_1                         0x1A
+#define RC_PCOMB3_APPLY                                0x1B
 \f
-#define RC_SNAP_NEED_THUNK             0x1C
-#define RC_REENTER_COMPILED_CODE       0x1D
-/* formerly RC_GET_CHAR_REPEAT         0x1E */
-#define RC_COMP_REFERENCE_RESTART      0x1F
-#define RC_NORMAL_GC_DONE              0x20
-#define RC_COMPLETE_GC_DONE            0x21 /* Used for 68000 */
-#define RC_PURIFY_GC_1                 0x22
-#define RC_PURIFY_GC_2                 0x23
-#define RC_AFTER_MEMORY_UPDATE                 0x24 /* Used for 68000 */
-#define RC_RESTARTABLE_EXIT            0x25 /* Used for 68000 */
-/* formerly RC_GET_CHAR                0x26 */
-/* formerly RC_GET_CHAR_IMMEDIATE      0x27 */
-#define RC_COMP_ASSIGNMENT_RESTART     0x28
-#define RC_POP_FROM_COMPILED_CODE      0x29
-#define RC_RETURN_TRAP_POINT           0x2A
-#define RC_RESTORE_STEPPER             0x2B /* Used for 68000 */
-#define RC_RESTORE_TO_STATE_POINT      0x2C
-#define RC_MOVE_TO_ADJACENT_POINT      0x2D
-#define RC_RESTORE_VALUE               0x2E
-#define RC_RESTORE_DONT_COPY_HISTORY    0x2F
+#define RC_SNAP_NEED_THUNK                     0x1C
+#define RC_REENTER_COMPILED_CODE               0x1D
+/* formerly RC_GET_CHAR_REPEAT                 0x1E */
+#define RC_COMP_REFERENCE_RESTART              0x1F
+#define RC_NORMAL_GC_DONE                      0x20
+#define RC_COMPLETE_GC_DONE                    0x21 /* Used for 68000 */
+#define RC_PURIFY_GC_1                         0x22
+#define RC_PURIFY_GC_2                         0x23
+#define RC_AFTER_MEMORY_UPDATE                         0x24 /* Used for 68000 */
+#define RC_RESTARTABLE_EXIT                    0x25 /* Used for 68000 */
+/* formerly RC_GET_CHAR                        0x26 */
+/* formerly RC_GET_CHAR_IMMEDIATE              0x27 */
+#define RC_COMP_ASSIGNMENT_RESTART             0x28
+#define RC_POP_FROM_COMPILED_CODE              0x29
+#define RC_RETURN_TRAP_POINT                   0x2A
+#define RC_RESTORE_STEPPER                     0x2B /* Used for 68000 */
+#define RC_RESTORE_TO_STATE_POINT              0x2C
+#define RC_MOVE_TO_ADJACENT_POINT              0x2D
+#define RC_RESTORE_VALUE                       0x2E
+#define RC_RESTORE_DONT_COPY_HISTORY           0x2F
 
 /* The following are not used in the 68000 implementation */
 
-#define RC_POP_RETURN_ERROR            0x40
-#define RC_EVAL_ERROR                  0x41
-#define RC_REPEAT_PRIMITIVE            0x42
-#define RC_COMP_INTERRUPT_RESTART      0x43 
-/* formerly RC_COMP_RECURSION_GC       0x44 */
-#define RC_RESTORE_INT_MASK            0x45
-#define RC_HALT                                0x46
-#define RC_FINISH_GLOBAL_INT           0x47    /* Multiprocessor */
-#define RC_REPEAT_DISPATCH             0x48
-#define RC_GC_CHECK                    0x49
-#define RC_RESTORE_FLUIDS              0x4A
-#define RC_COMP_LOOKUP_APPLY_RESTART   0x4B
-#define RC_COMP_ACCESS_RESTART         0x4C
-#define RC_COMP_UNASSIGNED_P_RESTART   0x4D
-#define RC_COMP_UNBOUND_P_RESTART      0x4E
-#define RC_COMP_DEFINITION_RESTART     0x4F
-#define RC_COMP_LEXPR_INTERRUPT_RESTART 0x50
-#define RC_COMP_SAFE_REFERENCE_RESTART  0x51
-#define RC_COMP_CACHE_VARIABLE_RESTART  0x52
-#define RC_COMP_REFERENCE_TRAP_RESTART  0x53
-#define RC_COMP_ASSIGNMENT_TRAP_RESTART 0x54
-#define RC_COMP_UUO_LINK_RESTART        0x55
-#define RC_COMP_UUO_LINK_TRAP_RESTART   0x56
-#define RC_COMP_CACHE_REF_APPLY_RESTART 0x57
-#define RC_COMP_SAFE_REF_TRAP_RESTART   0x58
-#define RC_COMP_UNASSIGNED_TRAP_RESTART 0x59
+#define RC_POP_RETURN_ERROR                    0x40
+#define RC_EVAL_ERROR                          0x41
+#define RC_REPEAT_PRIMITIVE                    0x42
+#define RC_COMP_INTERRUPT_RESTART              0x43 
+/* formerly RC_COMP_RECURSION_GC               0x44 */
+#define RC_RESTORE_INT_MASK                    0x45
+#define RC_HALT                                        0x46
+#define RC_FINISH_GLOBAL_INT                   0x47    /* Multiprocessor */
+#define RC_REPEAT_DISPATCH                     0x48
+#define RC_GC_CHECK                            0x49
+#define RC_RESTORE_FLUIDS                      0x4A
+#define RC_COMP_LOOKUP_APPLY_RESTART           0x4B
+#define RC_COMP_ACCESS_RESTART                 0x4C
+#define RC_COMP_UNASSIGNED_P_RESTART           0x4D
+#define RC_COMP_UNBOUND_P_RESTART              0x4E
+#define RC_COMP_DEFINITION_RESTART             0x4F
+#define RC_COMP_LEXPR_INTERRUPT_RESTART        0x50
+#define RC_COMP_SAFE_REFERENCE_RESTART         0x51
+#define RC_COMP_CACHE_LOOKUP_RESTART           0x52
+#define RC_COMP_LOOKUP_TRAP_RESTART            0x53
+#define RC_COMP_ASSIGNMENT_TRAP_RESTART        0x54
+#define RC_COMP_CACHE_OPERATOR_RESTART         0x55
+#define RC_COMP_OP_REF_TRAP_RESTART            0x56
+#define RC_COMP_CACHE_REF_APPLY_RESTART        0x57
+#define RC_COMP_SAFE_REF_TRAP_RESTART          0x58
+#define RC_COMP_UNASSIGNED_TRAP_RESTART        0x59
+#define RC_COMP_CACHE_ASSIGNMENT_RESTART       0x60
 
-#define MAX_RETURN_CODE                        0x59
+#define MAX_RETURN_CODE                                0x60
 
 /* When adding return codes, don't forget to update storage.c too. */
index bc44964e12065bce9c49a6bef10873c4fabb9e76..fb026091c5cec4ed8e29cc7ed84738a796f4de36 100644 (file)
@@ -30,7 +30,7 @@ Technology nor of any adaptation thereof in any advertising,
 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/sdata.h,v 9.24 1987/05/29 02:24:18 jinx Rel $
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/sdata.h,v 9.25 1987/10/05 18:36:16 jinx Exp $
  *
  * Description of the user data objects.  This should parallel the
  * file SDATA.SCM in the runtime system.
@@ -245,9 +245,15 @@ MIT in each case. */
 /* HUNK3
  * User object like a CONS, but with 3 slots rather than 2.
  */
-#define HUNK_CXR0              0
-#define HUNK_CXR1              1
-#define HUNK_CXR2              2
+#define HUNK3_CXR0             0
+#define HUNK3_CXR1             1
+#define HUNK3_CXR2             2
+
+/* Old code uses these */
+
+#define HUNK_CXR0              HUNK3_CXR0
+#define HUNK_CXR1              HUNK3_CXR1
+#define HUNK_CXR2              HUNK3_CXR2
 
 /* INTERNED_SYMBOL
  * A symbol, such as the result of evaluating (QUOTE A).  Some
@@ -347,13 +353,18 @@ MIT in each case. */
  */
 
 #define TRAP_EXTENSION_CELL                    HUNK4_CXR0
-#define TRAP_EXTENSION_CACHE_LIST              HUNK4_CXR1
-#define TRAP_EXTENSION_UUO_LIST                        HUNK4_CXR2
-#define TRAP_EXTENSION_NAME                    HUNK4_CXR3
+#define TRAP_EXTENSION_NAME                    HUNK4_CXR1
+#define TRAP_EXTENSION_CLONE                   HUNK4_CXR2
+#define TRAP_EXTENSION_REFERENCES              HUNK4_CXR3
 
 /* Aliases */
-#define TRAP_EXTENSION_BLOCK                   TRAP_EXTENSION_CACHE_LIST
-#define TRAP_EXTENSION_OFFSET                  TRAP_EXTENSION_UUO_LIST
+
+#define TRAP_EXTENSION_BLOCK                   TRAP_EXTENSION_CLONE
+#define TRAP_EXTENSION_OFFSET                  TRAP_EXTENSION_REFERENCES
+
+#define TRAP_REFERENCES_LOOKUP                 HUNK3_CXR0
+#define TRAP_REFERENCES_ASSIGNMENT             HUNK3_CXR1
+#define TRAP_REFERENCES_OPERATOR               HUNK3_CXR2
 \f
 /* RETURN_CODE
  * Represents an address where computation is to continue.  These can be
index 55fa1d1fd580f5c9d6105e6ea6b3738ad8a0775e..168cf618a31c7c54bddbad4a433bb65d9309adb2 100644 (file)
@@ -30,7 +30,7 @@ Technology nor of any adaptation thereof in any advertising,
 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/storage.c,v 9.35 1987/06/23 22:01:53 cph Rel $
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/storage.c,v 9.36 1987/10/05 18:36:30 jinx Exp $
 
 This file defines the storage for global variables for
 the Scheme Interpreter. */
@@ -65,8 +65,6 @@ Pointer
                           This is only meaningful while in compiled code.
                           *** This must be changed when stacklets are used. ***
                         */
-  compiler_utilities,  /* Utility block in constant space needed by the compiled
-                          code interface. */
  Swap_Temp;            /* Used by Swap_Pointers in default.h */
 \f
 long IntCode,          /* Interrupts requesting */
@@ -233,17 +231,18 @@ char *Return_Names[] = {
 /* 0x4F */             "COMPILER_DEFINITION_RESTART",
 /* 0x50 */             "COMPILER_LEXPR_GC_RESTART",
 /* 0x51 */             "COMPILER_SAFE_REFERENCE_RESTART",
-/* 0x52 */             "COMPILER_CACHE_VARIABLE_RESTART",
-/* 0x53 */             "COMPILER_REFERENCE_TRAP_RESTART",
+/* 0x52 */             "COMPILER_CACHE_LOOKUP_RESTART",
+/* 0x53 */             "COMPILER_LOOKUP_TRAP_RESTART",
 /* 0x54 */             "COMPILER_ASSIGNMENT_TRAP_RESTART",
-/* 0x55 */             "COMPILER_UUO_LINK_RESTART",
-/* 0x56 */             "COMPILER_UUO_LINK_TRAP_RESTART",
+/* 0x55 */             "COMPILER_CACHE_OPERATOR_RESTART",
+/* 0x56 */             "COMPILER_OPERATOR_REFERENCE_TRAP_RESTART",
 /* 0x57 */             "COMPILER_CACHE_REFERENCE_APPLY_RESTART",
 /* 0x58 */             "COMPILER_SAFE_REFERENCE_TRAP_RESTART",
-/* 0x59 */             "COMPILER_UNASSIGNED_P_TRAP_RESTART"
+/* 0x59 */             "COMPILER_UNASSIGNED_P_TRAP_RESTART",
+/* 0x60 */             "COMPILER_CACHE_ASSIGNMENT_RESTART"
 };
 
-#if (MAX_RETURN_CODE != 0x59)
+#if (MAX_RETURN_CODE != 0x60)
 /* Cause an error */
 #include "Returns.h and storage.c are inconsistent -- Names Table"
 #endif
index e8fcdb33b5c6f208c7342a3a7cb4fc7b01d08fa0..60751bf8ec15b2a6a78d30218bc64f127776407b 100644 (file)
@@ -30,7 +30,7 @@ Technology nor of any adaptation thereof in any advertising,
 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/trap.h,v 9.38 1987/05/29 02:24:53 jinx Rel $ */
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/trap.h,v 9.39 1987/10/05 18:36:52 jinx Rel $ */
 \f
 /* Kinds of traps:
 
@@ -51,6 +51,8 @@ MIT in each case. */
 #define TRAP_UNBOUND_DANGEROUS                 3
 #define TRAP_ILLEGAL                           4
 #define TRAP_ILLEGAL_DANGEROUS                 5
+#define TRAP_EXPENSIVE                         6
+#define TRAP_EXPENSIVE_DANGEROUS               7
 
 /* TRAP_MAX_IMMEDIATE is defined in const.h */
 
@@ -63,15 +65,18 @@ MIT in each case. */
 #define TRAP_COMPILER_CACHED                   14
 #define TRAP_COMPILER_CACHED_DANGEROUS         15
 
+/* These MUST be distinct */
+
 #define TRAP_EXTENSION_TYPE                    TC_QUAD
+#define TRAP_REFERENCES_TYPE                   TC_HUNK3
 
 /* Trap utilities */
 
 #define get_trap_kind(variable, what)                                  \
 {                                                                      \
-  variable = Datum(what);                                              \
+  variable = OBJECT_DATUM(what);                                       \
   if (variable > TRAP_MAX_IMMEDIATE)                                   \
-    variable = Datum(Vector_Ref(what, TRAP_TAG));                      \
+    variable = OBJECT_DATUM(Vector_Ref(what, TRAP_TAG));               \
 }
 \f
 /* Common constants */
@@ -83,6 +88,8 @@ MIT in each case. */
 #define DANGEROUS_UNBOUND_OBJECT       Make_Non_Pointer(TC_REFERENCE_TRAP, TRAP_UNBOUND_DANGEROUS)
 #define ILLEGAL_OBJECT                 Make_Non_Pointer(TC_REFERENCE_TRAP, TRAP_ILLEGAL)
 #define DANGEROUS_ILLEGAL_OBJECT       Make_Non_Pointer(TC_REFERENCE_TRAP, TRAP_ILLEGAL_DANGEROUS)
+#define EXPENSIVE_OBJECT               Make_Non_Pointer(TC_REFERENCE_TRAP, TRAP_EXPENSIVE)
+#define DANGEROUS_EXPENSIVE_OBJECT     Make_Non_Pointer(TC_REFERENCE_TRAP, TRAP_EXPENSIVE_DANGEROUS)
 #else
 #define UNASSIGNED_OBJECT              0x32000000
 #define DANGEROUS_UNASSIGNED_OBJECT    0x32000001
@@ -90,11 +97,14 @@ MIT in each case. */
 #define DANGEROUS_UNBOUND_OBJECT       0x32000003
 #define ILLEGAL_OBJECT                 0x32000004
 #define DANGEROUS_ILLEGAL_OBJECT       0x32000005
+#define EXPENSIVE_OBJECT               0x32000006
+#define DANGEROUS_EXPENSIVE_OBJECT     0x32000007
 #endif
 
 #define NOP_OBJECT                     Make_Unsigned_Fixnum(TRAP_NOP)
 #define DANGEROUS_OBJECT               Make_Unsigned_Fixnum(TRAP_DANGEROUS)
 #define REQUEST_RECACHE_OBJECT         DANGEROUS_ILLEGAL_OBJECT
+#define EXPENSIVE_ASSIGNMENT_OBJECT    EXPENSIVE_OBJECT
 
 #if (TC_REFERENCE_TRAP != 0x32)
 #include "error: trap.h and types.h are inconsistent"
index 8c12828ee2e1327bfa5056678f21934927cf4a71..2889655cbd981b38aecff6880ffe0c68e907dee4 100644 (file)
@@ -30,7 +30,7 @@ Technology nor of any adaptation thereof in any advertising,
 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/types.h,v 9.23 1987/06/05 17:23:11 cph Rel $
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/types.h,v 9.24 1987/10/05 18:37:00 jinx Exp $
  *
  * Type code definitions, numerical order
  *
@@ -69,11 +69,11 @@ MIT in each case. */
 #define TC_INTERNED_SYMBOL             0x1D
 #define TC_CHARACTER_STRING            0x1E
 #define TC_ACCESS                      0x1F
-/* UNUSED                              0x20 */ /* Used to be EXTENDED_FIXNUM. */
+#define TC_HUNK3_A                     0x20 /* Used to be EXTENDED_FIXNUM. */
 #define TC_DEFINITION                  0x21
 #define TC_BROKEN_HEART                        0x22
 #define TC_ASSIGNMENT                  0x23
-#define TC_HUNK3                       0x24
+#define TC_HUNK3_B                     0x24
 #define TC_IN_PACKAGE                  0x25
 #define TC_COMBINATION                 0x26
 #define TC_MANIFEST_NM_VECTOR          0x27
@@ -110,3 +110,4 @@ MIT in each case. */
 #define TC_BIT_STRING                  TC_VECTOR_1B
 #define TC_VECTOR_8B                   TC_CHARACTER_STRING
 #define TC_ADDRESS                     TC_FIXNUM
+#define TC_HUNK3                       TC_HUNK3_B
index 2ba45acd00e01ca9d66c3a8c715f86fc56a2a053..7c32a2b1a7d698a3e9ae4dee4b53b68342d208a2 100644 (file)
@@ -30,7 +30,7 @@ Technology nor of any adaptation thereof in any advertising,
 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/Attic/version.h,v 9.101 1987/09/21 21:56:14 jinx Exp $
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/Attic/version.h,v 9.102 1987/10/05 18:37:10 jinx Exp $
 
 This file contains version information for the microcode. */
 \f
@@ -46,7 +46,7 @@ This file contains version information for the microcode. */
 #define VERSION                9
 #endif
 #ifndef SUBVERSION
-#define SUBVERSION     101
+#define SUBVERSION     102
 #endif
 
 #ifndef UCODE_TABLES_FILENAME
index 2758e8f17a5f2955fcf7a39e5d91cf9d7d7aeef9..907a05069467709327631f3c03e69ae063f2cf2c 100644 (file)
@@ -30,7 +30,7 @@ Technology nor of any adaptation thereof in any advertising,
 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/gctype.c,v 9.23 1987/06/05 20:56:37 cph Rel $
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/gctype.c,v 9.24 1987/10/05 18:32:37 jinx Exp $
  *
  * This file contains the table which maps between Types and
  * GC Types.
@@ -74,11 +74,11 @@ int GC_Type_Map[MAX_SAFE_TYPE + 1] = {
     GC_Pair,                   /* TC_INTERNED_SYMBOL */
     GC_Vector,                 /* TC_CHARACTER_STRING,TC_VECTOR_8B */
     GC_Pair,                   /* TC_ACCESS */
-    GC_Undefined,              /* 0x20 */
+    GC_Triple,                 /* TC_HUNK3_A */
     GC_Pair,                   /* TC_DEFINITION */
     GC_Special,                        /* TC_BROKEN_HEART */
     GC_Pair,                   /* TC_ASSIGNMENT */
-    GC_Triple,                 /* TC_HUNK3 */
+    GC_Triple,                 /* TC_HUNK3_B */
     GC_Pair,                   /* TC_IN_PACKAGE */
 
 /* GC_Type_Map continues on next page */
index fa3d86edafa263541fea905ccc62901f7e851acd..845434930796ac5cc85c2820bb58bd2318b7c2ac 100644 (file)
@@ -30,7 +30,7 @@ Technology nor of any adaptation thereof in any advertising,
 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/interp.c,v 9.31 1987/07/15 22:08:05 cph Rel $
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/interp.c,v 9.32 1987/10/05 18:32:48 jinx Exp $
  *
  * This file contains the heart of the Scheme Scode
  * interpreter
@@ -411,7 +411,8 @@ Do_Expression:
 Eval_Non_Trapping:
   Eval_Ucode_Hook();
   switch (Type_Code(Fetch_Expression()))
-  { case TC_BIG_FIXNUM:         /* The self evaluating items */
+  {
+    case TC_BIG_FIXNUM:         /* The self evaluating items */
     case TC_BIG_FLONUM:
     case TC_CHARACTER_STRING:
     case TC_CHARACTER:
@@ -422,7 +423,8 @@ Eval_Non_Trapping:
     case TC_ENVIRONMENT:
     case TC_EXTENDED_PROCEDURE:
     case TC_FIXNUM:
-    case TC_HUNK3:
+    case TC_HUNK3_A:
+    case TC_HUNK3_B:
     case TC_INTERNED_SYMBOL:
     case TC_LIST:
     case TC_NON_MARKED_VECTOR:
@@ -700,11 +702,6 @@ lookup_end_restart:
 \f
 /* Interpret(), continued */
 
-       case TRAP_NOP:
-         Val = Vector_Ref(Val, TRAP_EXTRA);
-         Set_Time_Zone(Zone_Working);
-         goto Pop_Return;
-
        case TRAP_UNBOUND:
          temp = ERR_UNBOUND_VARIABLE;
          break;
@@ -714,7 +711,7 @@ lookup_end_restart:
          break;
 
        default:
-         temp = ERR_BROKEN_COMPILED_VARIABLE;
+         temp = ERR_ILLEGAL_REFERENCE_TRAP;
          break;
       }
 
@@ -871,20 +868,23 @@ Pop_Return:
       define_compiler_restart (RC_COMP_SAFE_REFERENCE_RESTART,
                               comp_safe_reference_restart)
 
-      define_compiler_restart (RC_COMP_CACHE_VARIABLE_RESTART,
-                              comp_cache_variable_restart)
+      define_compiler_restart (RC_COMP_CACHE_LOOKUP_RESTART,
+                              comp_cache_lookup_restart)
 
-      define_compiler_restart (RC_COMP_REFERENCE_TRAP_RESTART,
-                              comp_reference_trap_restart)
+      define_compiler_restart (RC_COMP_LOOKUP_TRAP_RESTART,
+                              comp_lookup_trap_restart)
+
+      define_compiler_restart (RC_COMP_CACHE_ASSIGNMENT_RESTART,
+                              comp_cache_assignment_restart)
 
       define_compiler_restart (RC_COMP_ASSIGNMENT_TRAP_RESTART,
                               comp_assignment_trap_restart)
 
-      define_compiler_restart (RC_COMP_UUO_LINK_RESTART,
-                              comp_uuo_link_restart)
+      define_compiler_restart (RC_COMP_CACHE_OPERATOR_RESTART,
+                              comp_cache_operator_restart)
 
-      define_compiler_restart (RC_COMP_UUO_LINK_TRAP_RESTART,
-                              comp_uuo_link_trap_restart)
+      define_compiler_restart (RC_COMP_OP_REF_TRAP_RESTART,
+                              comp_op_ref_trap_restart)
 
       define_compiler_restart (RC_COMP_CACHE_REF_APPLY_RESTART,
                               comp_cache_ref_apply_restart)
@@ -1029,12 +1029,18 @@ external_assignment_return:
 
        case TRAP_COMPILER_CACHED:
        {
-         Pointer extension;
+         Pointer extension, references;
 
          extension = Fast_Vector_Ref(Val, TRAP_EXTRA);
-         if (Fast_Vector_Ref(extension, TRAP_EXTENSION_UUO_LIST) != NIL)
+         references = Fast_Vector_Ref(extension, TRAP_EXTENSION_REFERENCES);
+
+         if (Fast_Vector_Ref(references, TRAP_REFERENCES_OPERATOR) != NIL)
          {
-           /* No need to recompile, pass the fake variable. */
+
+           /* There are uuo links.
+              wimp out and let deep_assignment_end handle it.
+            */
+
            remove_lock(set_serializer);
            temp = deep_assignment_end(cell,
                                       fake_variable_object,
@@ -1043,6 +1049,7 @@ external_assignment_return:
            goto external_assignment_return;
          }
          cell = Nth_Vector_Loc(extension, TRAP_EXTENSION_CELL);
+         update_lock(set_serializer, cell);
          goto assignment_end_after_lock;
        }         
 
@@ -1064,14 +1071,9 @@ external_assignment_return:
          Val = bogus_unassigned;
          goto normal_assignment_done;
 
-       case TRAP_NOP:
-         remove_lock(set_serializer);
-         temp = ERR_BAD_FRAME;
-         break;
-
        default:
          remove_lock(set_serializer);
-         temp = ERR_BROKEN_COMPILED_VARIABLE;
+         temp = ERR_ILLEGAL_REFERENCE_TRAP;
          break;
       }
 
index a5db3fad3256803005aca2b5e7912cdc4a385a58..41f02ce38df52acb56a2338fb0e78383b7d46771 100644 (file)
@@ -30,7 +30,7 @@ Technology nor of any adaptation thereof in any advertising,
 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/lookup.h,v 9.38 1987/07/07 02:40:24 jinx Rel $ */
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/lookup.h,v 9.39 1987/10/05 18:35:30 jinx Rel $ */
 
 /* Macros and declarations for the variable lookup code. */
 
@@ -130,6 +130,16 @@ extern Pointer
 
 #endif
 
+/* This is provided as a separate macro so that it can be made
+   atomic if necessary.
+ */
+
+#define update_lock(handle, cell)                                      \
+{                                                                      \
+  remove_lock(handle);                                                 \
+  setup_lock(handle, cell);                                            \
+}
+
 #ifndef Future_Variable_Splice
 #define Future_Variable_Splice(Vbl, Ofs, Val)
 #endif
index 3006677a5667592603854ce37362dd79c69f9539..cdd213dd775cbe6970f1706f67e4ce7870923ba8 100644 (file)
@@ -30,7 +30,7 @@ Technology nor of any adaptation thereof in any advertising,
 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/object.h,v 9.24 1987/07/23 21:49:17 cph Exp $ */
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/object.h,v 9.25 1987/10/05 18:35:46 jinx Exp $ */
 
 /* This file contains definitions pertaining to the C view of 
    Scheme pointers: widths of fields, extraction macros, pre-computed
@@ -185,6 +185,7 @@ typedef long relocation_type;       /* Used to relocate pointers on fasload */
 #define PAIR_P(object) ((OBJECT_TYPE (object)) == TC_LIST)
 #define WEAK_PAIR_P(object) ((OBJECT_TYPE (object)) == TC_WEAK_CONS)
 #define VECTOR_P(object) ((OBJECT_TYPE (object)) == TC_VECTOR)
+#define REFERENCE_TRAP_P(object) ((OBJECT_TYPE (object)) == TC_REFERENCE_TRAP)
 
 #define NON_MARKED_VECTOR_P(object)                                    \
   ((OBJECT_TYPE (object)) == TC_NON_MARKED_VECTOR)
index 7e2255d537258335bfff410be96dba5005b5ed00..3763a4aa6d8fa4e6b544dc28b10a2998f158cd59 100644 (file)
@@ -30,7 +30,7 @@ Technology nor of any adaptation thereof in any advertising,
 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/ppband.c,v 9.26 1987/07/01 17:55:37 jinx Rel $
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/ppband.c,v 9.27 1987/10/05 18:30:44 jinx Exp $
  *
  * Dumps Scheme FASL in user-readable form .
  */
@@ -221,7 +221,8 @@ Display(Location, Type, The_Datum)
     case TC_ACCESS: printf("[ACCESS "); break;
     case TC_DEFINITION: printf("[DEFINITION "); break;
     case TC_ASSIGNMENT: printf("[ASSIGNMENT "); break;
-    case TC_HUNK3: printf("[HUNK3 "); break;
+    case TC_HUNK3_A: printf("[HUNK3_A "); break;
+    case TC_HUNK3_B: printf("[HUNK3_B "); break;
     case TC_IN_PACKAGE: printf("[IN-PACKAGE "); break;
     case TC_COMBINATION: printf("[COMBINATION "); break;
     case TC_COMPILED_EXPRESSION: printf("[COMPILED-EXPRESSION "); break;
index e7b07ffed38e3ed130ec38ece7fcb4ba0de5fb72..2d522215a77809880d436be095df68af653d949b 100644 (file)
@@ -30,7 +30,7 @@ Technology nor of any adaptation thereof in any advertising,
 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/returns.h,v 9.26 1987/06/19 15:54:29 jinx Rel $
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/returns.h,v 9.27 1987/10/05 18:36:01 jinx Exp $
  *
  * Return codes.  These are placed in Return when an
  * interpreter operation needs to operate in several
@@ -42,86 +42,87 @@ MIT in each case. */
  * Please maintain consistency. 
  */
 
-#define RC_END_OF_COMPUTATION          0x00
-/* formerly RC_RESTORE_CONTROL_POINT   0x01 */
-#define RC_JOIN_STACKLETS              0x01
-#define RC_RESTORE_CONTINUATION                0x02 /* Used for 68000 */
-#define RC_INTERNAL_APPLY              0x03
-#define RC_BAD_INTERRUPT_CONTINUE      0x04 /* Used for 68000 */
-#define RC_RESTORE_HISTORY             0x05
-#define RC_INVOKE_STACK_THREAD                 0x06
-#define RC_RESTART_EXECUTION           0x07 /* Used for 68000 */
-#define RC_EXECUTE_ASSIGNMENT_FINISH   0x08
-#define RC_EXECUTE_DEFINITION_FINISH   0x09
-#define RC_EXECUTE_ACCESS_FINISH       0x0A
-#define RC_EXECUTE_IN_PACKAGE_CONTINUE  0x0B
-#define RC_SEQ_2_DO_2                  0x0C
-#define RC_SEQ_3_DO_2                  0x0D
-#define RC_SEQ_3_DO_3                  0x0E
-#define RC_CONDITIONAL_DECIDE          0x0F
-#define RC_DISJUNCTION_DECIDE          0x10
-#define RC_COMB_1_PROCEDURE            0x11
-#define RC_COMB_APPLY_FUNCTION         0x12
-#define RC_COMB_2_FIRST_OPERAND                0x13
-#define RC_COMB_2_PROCEDURE            0x14
-#define RC_COMB_SAVE_VALUE             0x15
-#define RC_PCOMB1_APPLY                        0x16
-#define RC_PCOMB2_DO_1                 0x17
-#define RC_PCOMB2_APPLY                        0x18
-#define RC_PCOMB3_DO_2                 0x19
-#define RC_PCOMB3_DO_1                 0x1A
-#define RC_PCOMB3_APPLY                        0x1B
+#define RC_END_OF_COMPUTATION                  0x00
+/* formerly RC_RESTORE_CONTROL_POINT           0x01 */
+#define RC_JOIN_STACKLETS                      0x01
+#define RC_RESTORE_CONTINUATION                        0x02 /* Used for 68000 */
+#define RC_INTERNAL_APPLY                      0x03
+#define RC_BAD_INTERRUPT_CONTINUE              0x04 /* Used for 68000 */
+#define RC_RESTORE_HISTORY                     0x05
+#define RC_INVOKE_STACK_THREAD                         0x06
+#define RC_RESTART_EXECUTION                   0x07 /* Used for 68000 */
+#define RC_EXECUTE_ASSIGNMENT_FINISH           0x08
+#define RC_EXECUTE_DEFINITION_FINISH           0x09
+#define RC_EXECUTE_ACCESS_FINISH               0x0A
+#define RC_EXECUTE_IN_PACKAGE_CONTINUE         0x0B
+#define RC_SEQ_2_DO_2                          0x0C
+#define RC_SEQ_3_DO_2                          0x0D
+#define RC_SEQ_3_DO_3                          0x0E
+#define RC_CONDITIONAL_DECIDE                  0x0F
+#define RC_DISJUNCTION_DECIDE                  0x10
+#define RC_COMB_1_PROCEDURE                    0x11
+#define RC_COMB_APPLY_FUNCTION                 0x12
+#define RC_COMB_2_FIRST_OPERAND                        0x13
+#define RC_COMB_2_PROCEDURE                    0x14
+#define RC_COMB_SAVE_VALUE                     0x15
+#define RC_PCOMB1_APPLY                                0x16
+#define RC_PCOMB2_DO_1                         0x17
+#define RC_PCOMB2_APPLY                                0x18
+#define RC_PCOMB3_DO_2                         0x19
+#define RC_PCOMB3_DO_1                         0x1A
+#define RC_PCOMB3_APPLY                                0x1B
 \f
-#define RC_SNAP_NEED_THUNK             0x1C
-#define RC_REENTER_COMPILED_CODE       0x1D
-/* formerly RC_GET_CHAR_REPEAT         0x1E */
-#define RC_COMP_REFERENCE_RESTART      0x1F
-#define RC_NORMAL_GC_DONE              0x20
-#define RC_COMPLETE_GC_DONE            0x21 /* Used for 68000 */
-#define RC_PURIFY_GC_1                 0x22
-#define RC_PURIFY_GC_2                 0x23
-#define RC_AFTER_MEMORY_UPDATE                 0x24 /* Used for 68000 */
-#define RC_RESTARTABLE_EXIT            0x25 /* Used for 68000 */
-/* formerly RC_GET_CHAR                0x26 */
-/* formerly RC_GET_CHAR_IMMEDIATE      0x27 */
-#define RC_COMP_ASSIGNMENT_RESTART     0x28
-#define RC_POP_FROM_COMPILED_CODE      0x29
-#define RC_RETURN_TRAP_POINT           0x2A
-#define RC_RESTORE_STEPPER             0x2B /* Used for 68000 */
-#define RC_RESTORE_TO_STATE_POINT      0x2C
-#define RC_MOVE_TO_ADJACENT_POINT      0x2D
-#define RC_RESTORE_VALUE               0x2E
-#define RC_RESTORE_DONT_COPY_HISTORY    0x2F
+#define RC_SNAP_NEED_THUNK                     0x1C
+#define RC_REENTER_COMPILED_CODE               0x1D
+/* formerly RC_GET_CHAR_REPEAT                 0x1E */
+#define RC_COMP_REFERENCE_RESTART              0x1F
+#define RC_NORMAL_GC_DONE                      0x20
+#define RC_COMPLETE_GC_DONE                    0x21 /* Used for 68000 */
+#define RC_PURIFY_GC_1                         0x22
+#define RC_PURIFY_GC_2                         0x23
+#define RC_AFTER_MEMORY_UPDATE                         0x24 /* Used for 68000 */
+#define RC_RESTARTABLE_EXIT                    0x25 /* Used for 68000 */
+/* formerly RC_GET_CHAR                        0x26 */
+/* formerly RC_GET_CHAR_IMMEDIATE              0x27 */
+#define RC_COMP_ASSIGNMENT_RESTART             0x28
+#define RC_POP_FROM_COMPILED_CODE              0x29
+#define RC_RETURN_TRAP_POINT                   0x2A
+#define RC_RESTORE_STEPPER                     0x2B /* Used for 68000 */
+#define RC_RESTORE_TO_STATE_POINT              0x2C
+#define RC_MOVE_TO_ADJACENT_POINT              0x2D
+#define RC_RESTORE_VALUE                       0x2E
+#define RC_RESTORE_DONT_COPY_HISTORY           0x2F
 
 /* The following are not used in the 68000 implementation */
 
-#define RC_POP_RETURN_ERROR            0x40
-#define RC_EVAL_ERROR                  0x41
-#define RC_REPEAT_PRIMITIVE            0x42
-#define RC_COMP_INTERRUPT_RESTART      0x43 
-/* formerly RC_COMP_RECURSION_GC       0x44 */
-#define RC_RESTORE_INT_MASK            0x45
-#define RC_HALT                                0x46
-#define RC_FINISH_GLOBAL_INT           0x47    /* Multiprocessor */
-#define RC_REPEAT_DISPATCH             0x48
-#define RC_GC_CHECK                    0x49
-#define RC_RESTORE_FLUIDS              0x4A
-#define RC_COMP_LOOKUP_APPLY_RESTART   0x4B
-#define RC_COMP_ACCESS_RESTART         0x4C
-#define RC_COMP_UNASSIGNED_P_RESTART   0x4D
-#define RC_COMP_UNBOUND_P_RESTART      0x4E
-#define RC_COMP_DEFINITION_RESTART     0x4F
-#define RC_COMP_LEXPR_INTERRUPT_RESTART 0x50
-#define RC_COMP_SAFE_REFERENCE_RESTART  0x51
-#define RC_COMP_CACHE_VARIABLE_RESTART  0x52
-#define RC_COMP_REFERENCE_TRAP_RESTART  0x53
-#define RC_COMP_ASSIGNMENT_TRAP_RESTART 0x54
-#define RC_COMP_UUO_LINK_RESTART        0x55
-#define RC_COMP_UUO_LINK_TRAP_RESTART   0x56
-#define RC_COMP_CACHE_REF_APPLY_RESTART 0x57
-#define RC_COMP_SAFE_REF_TRAP_RESTART   0x58
-#define RC_COMP_UNASSIGNED_TRAP_RESTART 0x59
+#define RC_POP_RETURN_ERROR                    0x40
+#define RC_EVAL_ERROR                          0x41
+#define RC_REPEAT_PRIMITIVE                    0x42
+#define RC_COMP_INTERRUPT_RESTART              0x43 
+/* formerly RC_COMP_RECURSION_GC               0x44 */
+#define RC_RESTORE_INT_MASK                    0x45
+#define RC_HALT                                        0x46
+#define RC_FINISH_GLOBAL_INT                   0x47    /* Multiprocessor */
+#define RC_REPEAT_DISPATCH                     0x48
+#define RC_GC_CHECK                            0x49
+#define RC_RESTORE_FLUIDS                      0x4A
+#define RC_COMP_LOOKUP_APPLY_RESTART           0x4B
+#define RC_COMP_ACCESS_RESTART                 0x4C
+#define RC_COMP_UNASSIGNED_P_RESTART           0x4D
+#define RC_COMP_UNBOUND_P_RESTART              0x4E
+#define RC_COMP_DEFINITION_RESTART             0x4F
+#define RC_COMP_LEXPR_INTERRUPT_RESTART        0x50
+#define RC_COMP_SAFE_REFERENCE_RESTART         0x51
+#define RC_COMP_CACHE_LOOKUP_RESTART           0x52
+#define RC_COMP_LOOKUP_TRAP_RESTART            0x53
+#define RC_COMP_ASSIGNMENT_TRAP_RESTART        0x54
+#define RC_COMP_CACHE_OPERATOR_RESTART         0x55
+#define RC_COMP_OP_REF_TRAP_RESTART            0x56
+#define RC_COMP_CACHE_REF_APPLY_RESTART        0x57
+#define RC_COMP_SAFE_REF_TRAP_RESTART          0x58
+#define RC_COMP_UNASSIGNED_TRAP_RESTART        0x59
+#define RC_COMP_CACHE_ASSIGNMENT_RESTART       0x60
 
-#define MAX_RETURN_CODE                        0x59
+#define MAX_RETURN_CODE                                0x60
 
 /* When adding return codes, don't forget to update storage.c too. */
index 61e9ff221f436439a6875a9043fb28fb6c4f461e..93a796cb2597a40f04e65911301c0c6864ffffbd 100644 (file)
@@ -30,7 +30,7 @@ Technology nor of any adaptation thereof in any advertising,
 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/trap.h,v 9.38 1987/05/29 02:24:53 jinx Rel $ */
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/trap.h,v 9.39 1987/10/05 18:36:52 jinx Rel $ */
 \f
 /* Kinds of traps:
 
@@ -51,6 +51,8 @@ MIT in each case. */
 #define TRAP_UNBOUND_DANGEROUS                 3
 #define TRAP_ILLEGAL                           4
 #define TRAP_ILLEGAL_DANGEROUS                 5
+#define TRAP_EXPENSIVE                         6
+#define TRAP_EXPENSIVE_DANGEROUS               7
 
 /* TRAP_MAX_IMMEDIATE is defined in const.h */
 
@@ -63,15 +65,18 @@ MIT in each case. */
 #define TRAP_COMPILER_CACHED                   14
 #define TRAP_COMPILER_CACHED_DANGEROUS         15
 
+/* These MUST be distinct */
+
 #define TRAP_EXTENSION_TYPE                    TC_QUAD
+#define TRAP_REFERENCES_TYPE                   TC_HUNK3
 
 /* Trap utilities */
 
 #define get_trap_kind(variable, what)                                  \
 {                                                                      \
-  variable = Datum(what);                                              \
+  variable = OBJECT_DATUM(what);                                       \
   if (variable > TRAP_MAX_IMMEDIATE)                                   \
-    variable = Datum(Vector_Ref(what, TRAP_TAG));                      \
+    variable = OBJECT_DATUM(Vector_Ref(what, TRAP_TAG));               \
 }
 \f
 /* Common constants */
@@ -83,6 +88,8 @@ MIT in each case. */
 #define DANGEROUS_UNBOUND_OBJECT       Make_Non_Pointer(TC_REFERENCE_TRAP, TRAP_UNBOUND_DANGEROUS)
 #define ILLEGAL_OBJECT                 Make_Non_Pointer(TC_REFERENCE_TRAP, TRAP_ILLEGAL)
 #define DANGEROUS_ILLEGAL_OBJECT       Make_Non_Pointer(TC_REFERENCE_TRAP, TRAP_ILLEGAL_DANGEROUS)
+#define EXPENSIVE_OBJECT               Make_Non_Pointer(TC_REFERENCE_TRAP, TRAP_EXPENSIVE)
+#define DANGEROUS_EXPENSIVE_OBJECT     Make_Non_Pointer(TC_REFERENCE_TRAP, TRAP_EXPENSIVE_DANGEROUS)
 #else
 #define UNASSIGNED_OBJECT              0x32000000
 #define DANGEROUS_UNASSIGNED_OBJECT    0x32000001
@@ -90,11 +97,14 @@ MIT in each case. */
 #define DANGEROUS_UNBOUND_OBJECT       0x32000003
 #define ILLEGAL_OBJECT                 0x32000004
 #define DANGEROUS_ILLEGAL_OBJECT       0x32000005
+#define EXPENSIVE_OBJECT               0x32000006
+#define DANGEROUS_EXPENSIVE_OBJECT     0x32000007
 #endif
 
 #define NOP_OBJECT                     Make_Unsigned_Fixnum(TRAP_NOP)
 #define DANGEROUS_OBJECT               Make_Unsigned_Fixnum(TRAP_DANGEROUS)
 #define REQUEST_RECACHE_OBJECT         DANGEROUS_ILLEGAL_OBJECT
+#define EXPENSIVE_ASSIGNMENT_OBJECT    EXPENSIVE_OBJECT
 
 #if (TC_REFERENCE_TRAP != 0x32)
 #include "error: trap.h and types.h are inconsistent"
index 9ffb12636397390b65e11e2ccd51166b71624175..52aa4207b18a85843a5f4dc35ee0101f35f9459a 100644 (file)
@@ -30,7 +30,7 @@ Technology nor of any adaptation thereof in any advertising,
 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/types.h,v 9.23 1987/06/05 17:23:11 cph Rel $
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/types.h,v 9.24 1987/10/05 18:37:00 jinx Exp $
  *
  * Type code definitions, numerical order
  *
@@ -69,11 +69,11 @@ MIT in each case. */
 #define TC_INTERNED_SYMBOL             0x1D
 #define TC_CHARACTER_STRING            0x1E
 #define TC_ACCESS                      0x1F
-/* UNUSED                              0x20 */ /* Used to be EXTENDED_FIXNUM. */
+#define TC_HUNK3_A                     0x20 /* Used to be EXTENDED_FIXNUM. */
 #define TC_DEFINITION                  0x21
 #define TC_BROKEN_HEART                        0x22
 #define TC_ASSIGNMENT                  0x23
-#define TC_HUNK3                       0x24
+#define TC_HUNK3_B                     0x24
 #define TC_IN_PACKAGE                  0x25
 #define TC_COMBINATION                 0x26
 #define TC_MANIFEST_NM_VECTOR          0x27
@@ -110,3 +110,4 @@ MIT in each case. */
 #define TC_BIT_STRING                  TC_VECTOR_1B
 #define TC_VECTOR_8B                   TC_CHARACTER_STRING
 #define TC_ADDRESS                     TC_FIXNUM
+#define TC_HUNK3                       TC_HUNK3_B
index 89fbd100e493f46a280f395d0a0b3c6a5dd4880a..e708145b2b0adae31e81436dbf073262032db472 100644 (file)
@@ -30,7 +30,7 @@ Technology nor of any adaptation thereof in any advertising,
 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/version.h,v 9.101 1987/09/21 21:56:14 jinx Exp $
+/* $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v8/src/microcode/version.h,v 9.102 1987/10/05 18:37:10 jinx Exp $
 
 This file contains version information for the microcode. */
 \f
@@ -46,7 +46,7 @@ This file contains version information for the microcode. */
 #define VERSION                9
 #endif
 #ifndef SUBVERSION
-#define SUBVERSION     101
+#define SUBVERSION     102
 #endif
 
 #ifndef UCODE_TABLES_FILENAME