changeset 41597:b28d5d866500

Use AREF and ASIZE. (Ffetch_bytecode): Add the file name to the error message.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Mon, 26 Nov 2001 23:29:48 +0000
parents 3c035e37d086
children e8e16616217d
files src/eval.c
diffstat 1 files changed, 17 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/src/eval.c	Mon Nov 26 23:03:47 2001 +0000
+++ b/src/eval.c	Mon Nov 26 23:29:48 2001 +0000
@@ -1780,7 +1780,7 @@
      have an element whose index is COMPILED_INTERACTIVE, which is
      where the interactive spec is stored.  */
   else if (COMPILEDP (fun))
-    return ((XVECTOR (fun)->size & PSEUDOVECTOR_SIZE_MASK) > COMPILED_INTERACTIVE
+    return ((ASIZE (fun) & PSEUDOVECTOR_SIZE_MASK) > COMPILED_INTERACTIVE
 	    ? Qt : Qnil);
 
   /* Strings and vectors are keyboard macros.  */
@@ -2857,7 +2857,7 @@
 	return Fsignal (Qinvalid_function, Fcons (fun, Qnil));
     }
   else if (COMPILEDP (fun))
-    syms_left = XVECTOR (fun)->contents[COMPILED_ARGLIST];
+    syms_left = AREF (fun, COMPILED_ARGLIST);
   else
     abort ();
 
@@ -2900,11 +2900,11 @@
     {
       /* If we have not actually read the bytecode string
 	 and constants vector yet, fetch them from the file.  */
-      if (CONSP (XVECTOR (fun)->contents[COMPILED_BYTECODE]))
+      if (CONSP (AREF (fun, COMPILED_BYTECODE)))
 	Ffetch_bytecode (fun);
-      val = Fbyte_code (XVECTOR (fun)->contents[COMPILED_BYTECODE],
-			XVECTOR (fun)->contents[COMPILED_CONSTANTS],
-			XVECTOR (fun)->contents[COMPILED_STACK_DEPTH]);
+      val = Fbyte_code (AREF (fun, COMPILED_BYTECODE),
+			AREF (fun, COMPILED_CONSTANTS),
+			AREF (fun, COMPILED_STACK_DEPTH));
     }
   
   return unbind_to (count, val);
@@ -2918,14 +2918,19 @@
 {
   Lisp_Object tem;
 
-  if (COMPILEDP (object)
-      && CONSP (XVECTOR (object)->contents[COMPILED_BYTECODE]))
+  if (COMPILEDP (object) && CONSP (AREF (object, COMPILED_BYTECODE)))
     {
-      tem = read_doc_string (XVECTOR (object)->contents[COMPILED_BYTECODE]);
+      tem = read_doc_string (AREF (object, COMPILED_BYTECODE));
       if (!CONSP (tem))
-	error ("invalid byte code");
-      XVECTOR (object)->contents[COMPILED_BYTECODE] = XCAR (tem);
-      XVECTOR (object)->contents[COMPILED_CONSTANTS] = XCDR (tem);
+	{
+	  tem = AREF (object, COMPILED_BYTECODE);
+	  if (CONSP (tem) && STRINGP (XCAR (tem)))
+	    error ("Invalid byte code in %s", XSTRING (XCAR (tem))->data);
+	  else
+	    error ("Invalid byte code");
+	}
+      AREF (object, COMPILED_BYTECODE) = XCAR (tem);
+      AREF (object, COMPILED_CONSTANTS) = XCDR (tem);
     }
   return object;
 }