rpms/gnu-smalltalk/devel gnu-smalltalk.spec, 1.30, 1.31 gst-3.0-tst117.patch, 1.1, 1.2 sources, 1.8, 1.9

Jochen Schmitt (s4504kr) fedora-extras-commits at redhat.com
Mon Jan 21 16:25:48 UTC 2008


Author: s4504kr

Update of /cvs/extras/rpms/gnu-smalltalk/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv30043

Modified Files:
	gnu-smalltalk.spec gst-3.0-tst117.patch sources 
Log Message:
New upstream release


Index: gnu-smalltalk.spec
===================================================================
RCS file: /cvs/extras/rpms/gnu-smalltalk/devel/gnu-smalltalk.spec,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- gnu-smalltalk.spec	15 Jan 2008 18:00:19 -0000	1.30
+++ gnu-smalltalk.spec	21 Jan 2008 16:25:08 -0000	1.31
@@ -25,6 +25,8 @@
 BuildRequires: texinfo
 BuildRequires: zlib-devel
 BuildRequires: libsigsegv-devel
+BuildRequires: mysql-devel
+BuildRequires: sqlite-devel
 
 %description
 GNU Smalltalk is an implementation that closely follows the
@@ -166,7 +168,7 @@
 %{_datadir}/emacs/site-lisp/*
 
 %changelog
-* Tue Jan 15 2008 Jochen Schmitt <Jochen herr-schmitt de> 3.0-1
+* Mon Jan 21 2008 Jochen Schmitt <Jochen herr-schmitt de> 3.0-1
 - New upstream release
 
 * Thu Jan 03 2008 Alex Lancaster <alexlan fedoraproject.org> 2.3.6-8

gst-3.0-tst117.patch:

Index: gst-3.0-tst117.patch
===================================================================
RCS file: /cvs/extras/rpms/gnu-smalltalk/devel/gst-3.0-tst117.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- gst-3.0-tst117.patch	15 Jan 2008 18:00:19 -0000	1.1
+++ gst-3.0-tst117.patch	21 Jan 2008 16:25:08 -0000	1.2
@@ -1,533 +1,543 @@
-diff --git a/libgst/prims.def b/libgst/prims.def
-index a243af4..7d92e3d 100644
---- a/libgst/prims.def
-+++ b/libgst/prims.def
-@@ -2204,16 +2204,17 @@ primitive VMpr_CompiledCode_verificationResult [succeed]
- /* CompiledBlock numArgs:numTemps:bytecodes:depth:literals: */
- primitive VMpr_CompiledBlock_create [succeed]
- {
--  OOP *_gst_literals = OOP_TO_OBJ (POP_OOP ())->data;
--  int depth = TO_INT (POP_OOP ());
--  OOP bytecodesOOP = POP_OOP ();
--  int blockTemps = TO_INT (POP_OOP ());
--  int blockArgs = TO_INT (POP_OOP ());
-+  OOP *_gst_literals = OOP_TO_OBJ (STACK_AT (0))->data;
-+  int depth = TO_INT (STACK_AT (1));
-+  OOP bytecodesOOP = STACK_AT (2);
-+  int blockTemps = TO_INT (STACK_AT (3));
-+  int blockArgs = TO_INT (STACK_AT (4));
-   bc_vector bytecodes = _gst_extract_bytecodes (bytecodesOOP);
- 
-   OOP block =
-     _gst_block_new (blockArgs, blockTemps, bytecodes, depth, _gst_literals);
- 
-+  POP_N_OOPS (5);
-   OOP_CLASS(block) = STACKTOP ();
- 
-   _gst_primitives_executed++;
-@@ -2236,12 +2237,11 @@ primitive VMpr_CompiledMethod_create [succeed,fail]
-   if (primitive == -1)
-     PRIM_FAILED;
- 
--  POP_N_OOPS(6);
--
-   method = _gst_make_new_method (primitive, methodArgs, methodTemps, depth,
- 			         literals, bytecodes, _gst_nil_oop,
- 				 _gst_nil_oop, _gst_nil_oop, -1, -1);
- 
-+  POP_N_OOPS(6);
-   OOP_CLASS(method) = STACKTOP ();
- 
-   _gst_primitives_executed++;
-@@ -3914,22 +3914,21 @@ primitive VMpr_CObject_allocType [succeed,fail]
-   OOP oop3;
-   _gst_primitives_executed++;
- 
--  oop1 = POP_OOP ();
--  oop2 = POP_OOP ();
--  oop3 = STACKTOP ();
-+  oop1 = STACK_AT (0);
-+  oop2 = STACK_AT (1);
-+  oop3 = STACK_AT (2);
-   if (IS_INT (oop2)
-       && (IS_NIL (oop1) || is_a_kind_of (OOP_CLASS (oop1), _gst_c_type_class))
-       && COMMON (RECEIVER_IS_A_KIND_OF (oop3, _gst_c_object_class)))
-     {
--      intptr_t arg2;
--      PTR ptr;
--      arg2 = TO_INT (oop2);
--      ptr = xmalloc (arg2);
-+      intptr_t arg2 = TO_INT (oop2);
-+      PTR ptr = xmalloc (arg2);
-+      OOP cObjectOOP = _gst_c_object_new (ptr, oop1, oop3);
- 
--      SET_STACKTOP (_gst_c_object_new (ptr, oop1, oop3));
-+      POP_N_OOPS (2);
-+      SET_STACKTOP (cObjectOOP);
-       PRIM_SUCCEEDED;
-     }
--  UNPOP (2);
-   PRIM_FAILED;
- }
- 
-@@ -4814,36 +4813,25 @@ primitive VMpr_String_ByteArray_asCData :
-      prim_id VMpr_String_asCData [checks_receiver],
-      prim_id VMpr_ByteArray_asCData [checks_receiver]
- {
--  PTR data;
--  int size;
-   OOP oop1;
-   OOP oop2;
-   _gst_primitives_executed++;
- 
--  oop2 = POP_OOP ();
--  oop1 = STACKTOP ();
--#ifndef OPTIMIZE
--  if ((IS_CLASS (oop1, _gst_string_class)
--       && id == prim_id (VMpr_String_asCData))
--      || (IS_CLASS (oop1, _gst_byte_array_class)
--	  && id == prim_id (VMpr_ByteArray_asCData)))
-+  oop2 = STACK_AT (0);
-+  oop1 = STACK_AT (1);
-+  if (is_a_kind_of (OOP_CLASS (oop2), _gst_c_type_class))
-     {
--#endif
--      if (is_a_kind_of (OOP_CLASS (oop2), _gst_c_type_class))
-+      int size = NUM_INDEXABLE_FIELDS (oop1);
-+      PTR data = xmalloc (size);
-+      if (data)
- 	{
--	  size = NUM_INDEXABLE_FIELDS (oop1);
--	  data = xmalloc (size);
--	  if (data)
--	    {
--	      memcpy (data, OOP_TO_OBJ (oop1)->data, size);
--	      SET_STACKTOP (_gst_c_object_new (data, oop2, _gst_c_object_class));
--	      PRIM_SUCCEEDED;
--	    }
-+	  OOP cObjectOOP = _gst_c_object_new (data, oop2, _gst_c_object_class);
-+	  memcpy (data, OOP_TO_OBJ (oop1)->data, size);
-+	  POP_OOP ();
-+	  SET_STACKTOP (cObjectOOP);
-+	  PRIM_SUCCEEDED;
- 	}
--#ifndef OPTIMIZE
-     }
--#endif
--  UNPOP (1);
-   PRIM_FAILED;
- }
- 
-@@ -5036,10 +5024,9 @@ primitive VMpr_CFuncDescriptor_create [succeed,fail]
-   OOP oop4;
-   _gst_primitives_executed++;
- 
--  oop4 = POP_OOP ();
--  oop3 = POP_OOP ();
--  oop2 = POP_OOP ();
--  oop1 = POP_OOP ();
-+  oop4 = STACK_AT (0);
-+  oop3 = STACK_AT (1);
-+  oop2 = STACK_AT (2);
- 
-   if (IS_CLASS (oop2, _gst_string_class)
-       && (IS_CLASS (oop3, _gst_symbol_class)
-@@ -5047,11 +5034,13 @@ primitive VMpr_CFuncDescriptor_create [succeed,fail]
-       && (IS_CLASS (oop4, _gst_array_class)
- 	  || IS_CLASS (oop4, _gst_undefined_object_class)))
-     {
--      PUSH_OOP (_gst_make_descriptor (oop2, oop3, oop4));
-+      OOP cFuncDescrOOP = _gst_make_descriptor (oop2, oop3, oop4);
-+      POP_N_OOPS (3);
-+      SET_STACKTOP (cFuncDescrOOP);
-       PRIM_SUCCEEDED;
-     }
--  UNPOP (4);
--  PRIM_FAILED;
-+  else
-+    PRIM_FAILED;
- }
- 
- /* Object snapshot: aString */
-@@ -5150,18 +5139,18 @@ primitive VMpr_FileDescriptor_fileOp [succeed,fail]
-   OOP *oopVec = alloca (numArgs * sizeof (OOP));
-   int i;
-   intptr_t arg1;
-+  OOP resultOOP;
- 
-   _gst_primitives_executed++;
- 
-   for (i = numArgs; --i >= 0;)
-     oopVec[i] = POP_OOP ();
- 
--  oop1 = STACKTOP ();
-+  resultOOP = oop1 = STACKTOP ();
-+  UNPOP (numArgs);
-+
-   if (!IS_INT (oopVec[0]))
--    {
--      UNPOP (numArgs);
--      PRIM_FAILED;
--    }
-+    goto fail;
- 
-   arg1 = TO_INT (oopVec[0]);
-   switch (arg1) {
-@@ -5213,16 +5202,13 @@ primitive VMpr_FileDescriptor_fileOp [succeed,fail]
- 
-       xfree (fileName);
-       if (fd < 0)
--        {
--	  UNPOP (numArgs);
--	  PRIM_FAILED;
--        }
-+	goto fail;
- 
-       _gst_set_file_stream_file (oop1, fd, oopVec[1],
- 			         is_pipe, access, false);
--    }
- 
--    PRIM_SUCCEEDED;
-+      goto succeed;
-+    }
- 
-   case PRIM_MK_TEMP:
-     fileName = _gst_to_cstring (oopVec[1]);
-@@ -5233,31 +5219,27 @@ primitive VMpr_FileDescriptor_fileOp [succeed,fail]
-     if (fd < 0)
-       {
-         xfree (fileName2);
--	UNPOP (numArgs);
--	PRIM_FAILED;
-+	goto fail;
-       }
-     
-     _gst_set_file_stream_file (oop1, fd, _gst_string_new (fileName2),
- 			       false, O_RDWR, false);
- 
-     xfree (fileName2);
--    PRIM_SUCCEEDED;
-+    goto succeed;
-   }
- 
-   fileStream = (gst_file_stream) OOP_TO_OBJ (oop1);
-   if (!IS_INT (fileStream->file))
--    {
--      UNPOP (numArgs);
--      PRIM_FAILED;
--    }
-+    goto fail;
- 
-   fd = TO_INT (fileStream->file);
-   switch (arg1)
-     {
- 
-     case PRIM_CLOSE_FILE:	/* FileDescriptor close */
--      SET_STACKTOP_INT (close (fd));
--      PRIM_SUCCEEDED;
-+      resultOOP = FROM_INT (close (fd));
-+      goto succeed;
- 
-     case PRIM_FSEEK_SET:		/* FileDescriptor position: position */
-       if (IS_OFF_T (oopVec[1]) &&
-@@ -5267,7 +5249,7 @@ primitive VMpr_FileDescriptor_fileOp [succeed,fail]
- 	  break;
- 	}
-       else
--	PRIM_SUCCEEDED;
-+        goto succeed;
- 
-     case PRIM_FTELL:		/* FileDescriptor position */
-       {
-@@ -5278,19 +5260,24 @@ primitive VMpr_FileDescriptor_fileOp [succeed,fail]
- 	    break;
- 	  }
- 
--	SET_STACKTOP (FROM_OFF_T (off));
--	PRIM_SUCCEEDED;
-+	resultOOP = FROM_OFF_T (off);
-+	goto succeed;
-       }
- 
-     case PRIM_FEOF:
-       {				/* FileDescriptor atEnd */
- 	off_t oldPos;
- 	oldPos = lseek (fd, 0, SEEK_CUR);
--	SET_STACKTOP_BOOLEAN (oldPos >= 0
--			      && lseek (fd, 0, SEEK_END) == oldPos);
--	lseek (fd, oldPos, SEEK_SET);
-+	if (oldPos >= 0 && lseek (fd, 0, SEEK_END) == oldPos)
-+	  resultOOP = _gst_true_oop;
-+	else
-+	  {
-+	    resultOOP = _gst_false_oop;
-+	    if (oldPos >= 0)
-+	      lseek (fd, oldPos, SEEK_SET);
-+	  }
- 	errno = 0;
--	PRIM_SUCCEEDED;
-+	goto succeed;
-       }
- 
-     case PRIM_FSIZE:
-@@ -5301,8 +5288,8 @@ primitive VMpr_FileDescriptor_fileOp [succeed,fail]
- 	    errno = 0;
- 	    break;
- 	  }
--	SET_STACKTOP_INT (statBuf.st_size);
--	PRIM_SUCCEEDED;
-+	resultOOP = FROM_INT (statBuf.st_size);
-+	goto succeed;
-       }
- 
-     case PRIM_PUT_CHARS:
-@@ -5319,8 +5306,8 @@ primitive VMpr_FileDescriptor_fileOp [succeed,fail]
- 	      result = _gst_write (fd, data + from - 1, to - from + 1);
- 	      if (result >= 0)
- 		{
--		  SET_STACKTOP_INT (result);
--		  PRIM_SUCCEEDED;
-+		  resultOOP = FROM_INT (result);
-+		  goto succeed;
- 		}
- 	    }
- 	}
-@@ -5345,8 +5332,8 @@ primitive VMpr_FileDescriptor_fileOp [succeed,fail]
- 
- 	      if (result >= 0)
- 		{
--		  SET_STACKTOP_INT (result);
--		  PRIM_SUCCEEDED;
-+		  resultOOP = FROM_INT (result);
-+		  goto succeed;
- 		}
- 	    }
- 	}
-@@ -5385,8 +5372,8 @@ primitive VMpr_FileDescriptor_fileOp [succeed,fail]
- 
- 	      if (result >= 0)
- 		{
--		  SET_STACKTOP_INT (result);
--		  PRIM_SUCCEEDED;
-+		  resultOOP = FROM_INT (result);
-+		  goto succeed;
- 		}
- 	    }
- 	}
-@@ -5425,8 +5412,8 @@ primitive VMpr_FileDescriptor_fileOp [succeed,fail]
- 
- 	      if (result >= 0)
- 		{
--		  SET_STACKTOP_INT (result);
--		  PRIM_SUCCEEDED;
-+		  resultOOP = FROM_INT (result);
-+		  goto succeed;
- 		}
- 	    }
- 	}
-@@ -5440,7 +5427,7 @@ primitive VMpr_FileDescriptor_fileOp [succeed,fail]
- 	  break;
- 
- 	ftruncate (fd, pos);
--	PRIM_SUCCEEDED;
-+	goto succeed;
-       }
- 
-     case PRIM_FSEEK_CUR:		/* FileDescriptor skip: */
-@@ -5448,7 +5435,7 @@ primitive VMpr_FileDescriptor_fileOp [succeed,fail]
- 	  lseek (fd, TO_OFF_T (oopVec[1]), SEEK_CUR) < 0)
- 	break;
-       else
--	PRIM_SUCCEEDED;
-+	goto succeed;
- 
-     case PRIM_SYNC_POLL:
-       {
-@@ -5457,8 +5444,8 @@ primitive VMpr_FileDescriptor_fileOp [succeed,fail]
- 	result = _gst_sync_file_polling (fd, TO_INT (oopVec[1]));
- 	if (result >= 0)
- 	  {
--	    SET_STACKTOP_INT (result);
--	    PRIM_SUCCEEDED;
-+	    resultOOP = FROM_INT (result);
-+	    goto succeed;
- 	  }
-       }
-       break;
-@@ -5470,7 +5457,7 @@ primitive VMpr_FileDescriptor_fileOp [succeed,fail]
- 	result =
- 	  _gst_async_file_polling (fd, TO_INT (oopVec[1]), oopVec[2]);
- 	if (result >= 0)
--	  PRIM_SUCCEEDED;
-+	  goto succeed;
-       }
-       break;
- 
-@@ -5479,25 +5466,21 @@ primitive VMpr_FileDescriptor_fileOp [succeed,fail]
- 	off_t result;
- 
- 	result = lseek (fd, 0, SEEK_END);
--	if (result == -1)
-+	if (result != -1)
- 	  {
--	    if (errno == ESPIPE || errno == EINVAL)
--	      {
--		SET_STACKTOP (_gst_true_oop);
--		errno = 0;
--	      }
--	    else
--	      PRIM_FAILED;
-+	    lseek (fd, result, SEEK_SET);
-+	    resultOOP = _gst_false_oop;
-+	    goto succeed;
- 	  }
--	else
-+	else if (errno == ESPIPE || errno == EINVAL)
- 	  {
--	    lseek (fd, result, SEEK_SET);
--	    SET_STACKTOP (_gst_false_oop);
-+	    resultOOP = _gst_true_oop;
-+	    errno = 0;
-+	    goto succeed;
- 	  }
- 
--	PRIM_SUCCEEDED;
-+	goto fail;
-       }
--      break;
- 
-     case PRIM_SHUTDOWN_WRITE:
-       shutdown (fd, 1);
-@@ -5509,14 +5492,19 @@ primitive VMpr_FileDescriptor_fileOp [succeed,fail]
- 	  errno = 0;
- 	}
- #endif
--      break;
-+      goto succeed;
-     }
- 
-+ fail:
-   if (errno)
-     _gst_set_errno (errno);
- 
--  UNPOP (numArgs);
-   PRIM_FAILED;
-+
-+ succeed:
-+  POP_N_OOPS (numArgs);
-+  SET_STACKTOP (resultOOP);
-+  PRIM_SUCCEEDED;
- }
- 
- /* FileDescriptor>>#socketOp..., socket version, variadic */
-@@ -5525,7 +5513,7 @@ primitive VMpr_FileDescriptor_socketOp [succeed,fail]
- {
-   gst_file_stream fileStream;
-   int fd;
--  OOP oop1;
-+  OOP oop1, resultOOP;
-   OOP *oopVec = alloca (numArgs * sizeof (OOP));
-   int i;
-   intptr_t arg1;
-@@ -5536,20 +5524,16 @@ primitive VMpr_FileDescriptor_socketOp [succeed,fail]
-   for (i = numArgs; --i >= 0;)
-     oopVec[i] = POP_OOP ();
- 
--  oop1 = STACKTOP ();
-+  resultOOP = oop1 = STACKTOP ();
-+  UNPOP (numArgs);
-   if (!IS_INT (oopVec[0]))
--    {
--      UNPOP (numArgs);
--      PRIM_FAILED;
--    }
-+    goto fail;
- 
-   arg1 = TO_INT (oopVec[0]);
-   fileStream = (gst_file_stream) OOP_TO_OBJ (oop1);
-   if (IS_NIL (fileStream->file))
--    {
--      UNPOP (numArgs);
--      PRIM_FAILED;
--    }
-+    goto fail;
-+
-   fd = TO_INT (fileStream->file);
-   switch (arg1)
-     {
-@@ -5557,8 +5541,8 @@ primitive VMpr_FileDescriptor_socketOp [succeed,fail]
-     case PRIM_CLOSE_FILE:	/* FileDescriptor close */
-       {
-         int result = closesocket (fd);
--        SET_STACKTOP_INT (result);
--        PRIM_SUCCEEDED;
-+        resultOOP = FROM_INT (result);
-+        goto succeed;
-       }
- 
-     case PRIM_PUT_CHARS:
-@@ -5578,8 +5562,8 @@ primitive VMpr_FileDescriptor_socketOp [succeed,fail]
- 		abort ();
- 	      if (result >= 0)
- 		{
--		  SET_STACKTOP_INT (result);
--		  PRIM_SUCCEEDED;
-+		  resultOOP = FROM_INT (result);
-+		  goto succeed;
- 		}
- 	    }
- 	}
-@@ -5612,8 +5596,8 @@ primitive VMpr_FileDescriptor_socketOp [succeed,fail]
- 
- 	      if (result >= 0)
- 		{
--		  SET_STACKTOP_INT (result);
--		  PRIM_SUCCEEDED;
-+		  resultOOP = FROM_INT (result);
-+		  goto succeed;
- 		}
- 	    }
- 	}
-@@ -5626,8 +5610,8 @@ primitive VMpr_FileDescriptor_socketOp [succeed,fail]
- 	result = _gst_sync_file_polling (fd, TO_INT (oopVec[1]));
- 	if (result >= 0)
- 	  {
--	    SET_STACKTOP_INT (result);
--	    PRIM_SUCCEEDED;
-+	    resultOOP = FROM_INT (result);
-+	    goto succeed;
- 	  }
-       }
-       break;
-@@ -5639,22 +5623,25 @@ primitive VMpr_FileDescriptor_socketOp [succeed,fail]
- 	result =
- 	  _gst_async_file_polling (fd, TO_INT (oopVec[1]), oopVec[2]);
- 	if (result >= 0)
--	  PRIM_SUCCEEDED;
-+	  goto succeed;
-       }
-       break;
- 
-     case PRIM_IS_PIPE:
--      {
--	SET_STACKTOP (_gst_true_oop);
--	PRIM_SUCCEEDED;
--      }
-+      resultOOP =_gst_true_oop;
-+      goto succeed;
-       break;
-     }
- 
--  UNPOP (numArgs);
- #endif
- 
-+ fail:
-   PRIM_FAILED;
-+
-+ succeed:
-+  POP_N_OOPS (numArgs);
-+  SET_STACKTOP (resultOOP);
-+  PRIM_SUCCEEDED;
- }
- 
- /* C callout primitives.  */
\ No newline at end of file
+diff -up smalltalk-3.0/tests/testsuite.at.tst117 smalltalk-3.0/tests/testsuite.at
+--- smalltalk-3.0/tests/testsuite.at.tst117	2008-01-20 21:31:53.000000000 +0100
++++ smalltalk-3.0/tests/testsuite.at	2008-01-20 21:32:12.000000000 +0100
+@@ -148,5 +148,4 @@ AT_PACKAGE_TEST([DhbNumericalMethods])
+ AT_PACKAGE_TEST([Digest])
+ AT_OPTIONAL_PACKAGE_TEST([GDBM])
+ AT_OPTIONAL_PACKAGE_TEST([Iconv])
+-AT_PACKAGE_TEST([Sport])
+ AT_OPTIONAL_PACKAGE_TEST([ZLib])
+diff -up smalltalk-3.0/libgst/prims.def.tst117 smalltalk-3.0/libgst/prims.def
+--- smalltalk-3.0/libgst/prims.def.tst117	2008-01-06 17:36:03.000000000 +0100
++++ smalltalk-3.0/libgst/prims.def	2008-01-20 21:31:33.000000000 +0100
+@@ -2204,16 +2204,17 @@ primitive VMpr_CompiledCode_verification
+ /* CompiledBlock numArgs:numTemps:bytecodes:depth:literals: */
+ primitive VMpr_CompiledBlock_create [succeed]
+ {
+-  OOP *_gst_literals = OOP_TO_OBJ (POP_OOP ())->data;
+-  int depth = TO_INT (POP_OOP ());
+-  OOP bytecodesOOP = POP_OOP ();
+-  int blockTemps = TO_INT (POP_OOP ());
+-  int blockArgs = TO_INT (POP_OOP ());
++  OOP *_gst_literals = OOP_TO_OBJ (STACK_AT (0))->data;
++  int depth = TO_INT (STACK_AT (1));
++  OOP bytecodesOOP = STACK_AT (2);
++  int blockTemps = TO_INT (STACK_AT (3));
++  int blockArgs = TO_INT (STACK_AT (4));
+   bc_vector bytecodes = _gst_extract_bytecodes (bytecodesOOP);
+ 
+   OOP block =
+     _gst_block_new (blockArgs, blockTemps, bytecodes, depth, _gst_literals);
+ 
++  POP_N_OOPS (5);
+   OOP_CLASS(block) = STACKTOP ();
+ 
+   _gst_primitives_executed++;
+@@ -2236,12 +2237,11 @@ primitive VMpr_CompiledMethod_create [su
+   if (primitive == -1)
+     PRIM_FAILED;
+ 
+-  POP_N_OOPS(6);
+-
+   method = _gst_make_new_method (primitive, methodArgs, methodTemps, depth,
+ 			         literals, bytecodes, _gst_nil_oop,
+ 				 _gst_nil_oop, _gst_nil_oop, -1, -1);
+ 
++  POP_N_OOPS(6);
+   OOP_CLASS(method) = STACKTOP ();
+ 
+   _gst_primitives_executed++;
+@@ -3916,22 +3916,21 @@ primitive VMpr_CObject_allocType [succee
+   OOP oop3;
+   _gst_primitives_executed++;
+ 
+-  oop1 = POP_OOP ();
+-  oop2 = POP_OOP ();
+-  oop3 = STACKTOP ();
++  oop1 = STACK_AT (0);
++  oop2 = STACK_AT (1);
++  oop3 = STACK_AT (2);
+   if (IS_INT (oop2)
+       && (IS_NIL (oop1) || is_a_kind_of (OOP_CLASS (oop1), _gst_c_type_class))
+       && COMMON (RECEIVER_IS_A_KIND_OF (oop3, _gst_c_object_class)))
+     {
+-      intptr_t arg2;
+-      PTR ptr;
+-      arg2 = TO_INT (oop2);
+-      ptr = xmalloc (arg2);
++      intptr_t arg2 = TO_INT (oop2);
++      PTR ptr = xmalloc (arg2);
++      OOP cObjectOOP = _gst_c_object_new (ptr, oop1, oop3);
+ 
+-      SET_STACKTOP (_gst_c_object_new (ptr, oop1, oop3));
++      POP_N_OOPS (2);
++      SET_STACKTOP (cObjectOOP);
+       PRIM_SUCCEEDED;
+     }
+-  UNPOP (2);
+   PRIM_FAILED;
+ }
+ 
+@@ -4816,36 +4815,25 @@ primitive VMpr_String_ByteArray_asCData 
+      prim_id VMpr_String_asCData [checks_receiver],
+      prim_id VMpr_ByteArray_asCData [checks_receiver]
+ {
+-  PTR data;
+-  int size;
+   OOP oop1;
+   OOP oop2;
+   _gst_primitives_executed++;
+ 
+-  oop2 = POP_OOP ();
+-  oop1 = STACKTOP ();
+-#ifndef OPTIMIZE
+-  if ((IS_CLASS (oop1, _gst_string_class)
+-       && id == prim_id (VMpr_String_asCData))
+-      || (IS_CLASS (oop1, _gst_byte_array_class)
+-	  && id == prim_id (VMpr_ByteArray_asCData)))
+-    {
+-#endif
+-      if (is_a_kind_of (OOP_CLASS (oop2), _gst_c_type_class))
+-	{
+-	  size = NUM_INDEXABLE_FIELDS (oop1);
+-	  data = xmalloc (size);
+-	  if (data)
+-	    {
+-	      memcpy (data, OOP_TO_OBJ (oop1)->data, size);
+-	      SET_STACKTOP (_gst_c_object_new (data, oop2, _gst_c_object_class));
+-	      PRIM_SUCCEEDED;
+-	    }
++  oop2 = STACK_AT (0);
++  oop1 = STACK_AT (1);
++  if (is_a_kind_of (OOP_CLASS (oop2), _gst_c_type_class))
++    {
++      int size = NUM_INDEXABLE_FIELDS (oop1);
++      PTR data = xmalloc (size);
++      if (data)
++	{
++	  OOP cObjectOOP = _gst_c_object_new (data, oop2, _gst_c_object_class);
++	  memcpy (data, OOP_TO_OBJ (oop1)->data, size);
++	  POP_OOP ();
++	  SET_STACKTOP (cObjectOOP);
++	  PRIM_SUCCEEDED;
+ 	}
+-#ifndef OPTIMIZE
+     }
+-#endif
+-  UNPOP (1);
+   PRIM_FAILED;
+ }
+ 
+@@ -5038,10 +5026,9 @@ primitive VMpr_CFuncDescriptor_create [s
+   OOP oop4;
+   _gst_primitives_executed++;
+ 
+-  oop4 = POP_OOP ();
+-  oop3 = POP_OOP ();
+-  oop2 = POP_OOP ();
+-  oop1 = POP_OOP ();
++  oop4 = STACK_AT (0);
++  oop3 = STACK_AT (1);
++  oop2 = STACK_AT (2);
+ 
+   if (IS_CLASS (oop2, _gst_string_class)
+       && (IS_CLASS (oop3, _gst_symbol_class)
+@@ -5049,11 +5036,13 @@ primitive VMpr_CFuncDescriptor_create [s
+       && (IS_CLASS (oop4, _gst_array_class)
+ 	  || IS_CLASS (oop4, _gst_undefined_object_class)))
+     {
+-      PUSH_OOP (_gst_make_descriptor (oop2, oop3, oop4));
++      OOP cFuncDescrOOP = _gst_make_descriptor (oop2, oop3, oop4);
++      POP_N_OOPS (3);
++      SET_STACKTOP (cFuncDescrOOP);
+       PRIM_SUCCEEDED;
+     }
+-  UNPOP (4);
+-  PRIM_FAILED;
++  else
++    PRIM_FAILED;
+ }
+ 
+ /* Object snapshot: aString */
+@@ -5152,18 +5141,18 @@ primitive VMpr_FileDescriptor_fileOp [su
+   OOP *oopVec = alloca (numArgs * sizeof (OOP));
+   int i;
+   intptr_t arg1;
++  OOP resultOOP;
+ 
+   _gst_primitives_executed++;
+ 
+   for (i = numArgs; --i >= 0;)
+     oopVec[i] = POP_OOP ();
+ 
+-  oop1 = STACKTOP ();
++  resultOOP = oop1 = STACKTOP ();
++  UNPOP (numArgs);
++
+   if (!IS_INT (oopVec[0]))
+-    {
+-      UNPOP (numArgs);
+-      PRIM_FAILED;
+-    }
++    goto fail;
+ 
+   arg1 = TO_INT (oopVec[0]);
+   switch (arg1) {
+@@ -5215,16 +5204,13 @@ primitive VMpr_FileDescriptor_fileOp [su
+ 
+       xfree (fileName);
+       if (fd < 0)
+-        {
+-	  UNPOP (numArgs);
+-	  PRIM_FAILED;
+-        }
++	goto fail;
+ 
+       _gst_set_file_stream_file (oop1, fd, oopVec[1],
+ 			         is_pipe, access, false);
+-    }
+ 
+-    PRIM_SUCCEEDED;
++      goto succeed;
++    }
+ 
+   case PRIM_MK_TEMP:
+     fileName = _gst_to_cstring (oopVec[1]);
+@@ -5235,31 +5221,27 @@ primitive VMpr_FileDescriptor_fileOp [su
+     if (fd < 0)
+       {
+         xfree (fileName2);
+-	UNPOP (numArgs);
+-	PRIM_FAILED;
++	goto fail;
+       }
+     
+     _gst_set_file_stream_file (oop1, fd, _gst_string_new (fileName2),
+ 			       false, O_RDWR, false);
+ 
+     xfree (fileName2);
+-    PRIM_SUCCEEDED;
++    goto succeed;
+   }
+ 
+   fileStream = (gst_file_stream) OOP_TO_OBJ (oop1);
+   if (!IS_INT (fileStream->file))
+-    {
+-      UNPOP (numArgs);
+-      PRIM_FAILED;
+-    }
++    goto fail;
+ 
+   fd = TO_INT (fileStream->file);
+   switch (arg1)
+     {
+ 
+     case PRIM_CLOSE_FILE:	/* FileDescriptor close */
+-      SET_STACKTOP_INT (close (fd));
+-      PRIM_SUCCEEDED;
++      resultOOP = FROM_INT (close (fd));
++      goto succeed;
+ 
+     case PRIM_FSEEK_SET:		/* FileDescriptor position: position */
+       if (IS_OFF_T (oopVec[1]) &&
+@@ -5269,7 +5251,7 @@ primitive VMpr_FileDescriptor_fileOp [su
+ 	  break;
+ 	}
+       else
+-	PRIM_SUCCEEDED;
++        goto succeed;
+ 
+     case PRIM_FTELL:		/* FileDescriptor position */
+       {
+@@ -5280,19 +5262,24 @@ primitive VMpr_FileDescriptor_fileOp [su
+ 	    break;
+ 	  }
+ 
+-	SET_STACKTOP (FROM_OFF_T (off));
+-	PRIM_SUCCEEDED;
++	resultOOP = FROM_OFF_T (off);
++	goto succeed;
+       }
+ 
+     case PRIM_FEOF:
+       {				/* FileDescriptor atEnd */
+ 	off_t oldPos;
+ 	oldPos = lseek (fd, 0, SEEK_CUR);
+-	SET_STACKTOP_BOOLEAN (oldPos >= 0
+-			      && lseek (fd, 0, SEEK_END) == oldPos);
+-	lseek (fd, oldPos, SEEK_SET);
++	if (oldPos >= 0 && lseek (fd, 0, SEEK_END) == oldPos)
++	  resultOOP = _gst_true_oop;
++	else
++	  {
++	    resultOOP = _gst_false_oop;
++	    if (oldPos >= 0)
++	      lseek (fd, oldPos, SEEK_SET);
++	  }
+ 	errno = 0;
+-	PRIM_SUCCEEDED;
++	goto succeed;
+       }
+ 
+     case PRIM_FSIZE:
+@@ -5303,8 +5290,8 @@ primitive VMpr_FileDescriptor_fileOp [su
+ 	    errno = 0;
+ 	    break;
+ 	  }
+-	SET_STACKTOP_INT (statBuf.st_size);
+-	PRIM_SUCCEEDED;
++	resultOOP = FROM_INT (statBuf.st_size);
++	goto succeed;
+       }
+ 
+     case PRIM_PUT_CHARS:
+@@ -5321,8 +5308,8 @@ primitive VMpr_FileDescriptor_fileOp [su
+ 	      result = _gst_write (fd, data + from - 1, to - from + 1);
+ 	      if (result >= 0)
+ 		{
+-		  SET_STACKTOP_INT (result);
+-		  PRIM_SUCCEEDED;
++		  resultOOP = FROM_INT (result);
++		  goto succeed;
+ 		}
+ 	    }
+ 	}
+@@ -5347,8 +5334,8 @@ primitive VMpr_FileDescriptor_fileOp [su
+ 
+ 	      if (result >= 0)
+ 		{
+-		  SET_STACKTOP_INT (result);
+-		  PRIM_SUCCEEDED;
++		  resultOOP = FROM_INT (result);
++		  goto succeed;
+ 		}
+ 	    }
+ 	}
+@@ -5387,8 +5374,8 @@ primitive VMpr_FileDescriptor_fileOp [su
+ 
+ 	      if (result >= 0)
+ 		{
+-		  SET_STACKTOP_INT (result);
+-		  PRIM_SUCCEEDED;
++		  resultOOP = FROM_INT (result);
++		  goto succeed;
+ 		}
+ 	    }
+ 	}
+@@ -5427,8 +5414,8 @@ primitive VMpr_FileDescriptor_fileOp [su
+ 
+ 	      if (result >= 0)
+ 		{
+-		  SET_STACKTOP_INT (result);
+-		  PRIM_SUCCEEDED;
++		  resultOOP = FROM_INT (result);
++		  goto succeed;
+ 		}
+ 	    }
+ 	}
+@@ -5442,7 +5429,7 @@ primitive VMpr_FileDescriptor_fileOp [su
+ 	  break;
+ 
+ 	ftruncate (fd, pos);
+-	PRIM_SUCCEEDED;
++	goto succeed;
+       }
+ 
+     case PRIM_FSEEK_CUR:		/* FileDescriptor skip: */
+@@ -5450,7 +5437,7 @@ primitive VMpr_FileDescriptor_fileOp [su
+ 	  lseek (fd, TO_OFF_T (oopVec[1]), SEEK_CUR) < 0)
+ 	break;
+       else
+-	PRIM_SUCCEEDED;
++	goto succeed;
+ 
+     case PRIM_SYNC_POLL:
+       {
+@@ -5459,8 +5446,8 @@ primitive VMpr_FileDescriptor_fileOp [su
+ 	result = _gst_sync_file_polling (fd, TO_INT (oopVec[1]));
+ 	if (result >= 0)
+ 	  {
+-	    SET_STACKTOP_INT (result);
+-	    PRIM_SUCCEEDED;
++	    resultOOP = FROM_INT (result);
++	    goto succeed;
+ 	  }
+       }
+       break;
+@@ -5472,7 +5459,7 @@ primitive VMpr_FileDescriptor_fileOp [su
+ 	result =
+ 	  _gst_async_file_polling (fd, TO_INT (oopVec[1]), oopVec[2]);
+ 	if (result >= 0)
+-	  PRIM_SUCCEEDED;
++	  goto succeed;
+       }
+       break;
+ 
+@@ -5481,25 +5468,21 @@ primitive VMpr_FileDescriptor_fileOp [su
+ 	off_t result;
+ 
+ 	result = lseek (fd, 0, SEEK_END);
+-	if (result == -1)
++	if (result != -1)
+ 	  {
+-	    if (errno == ESPIPE || errno == EINVAL)
+-	      {
+-		SET_STACKTOP (_gst_true_oop);
+-		errno = 0;
+-	      }
+-	    else
+-	      PRIM_FAILED;
++	    lseek (fd, result, SEEK_SET);
++	    resultOOP = _gst_false_oop;
++	    goto succeed;
+ 	  }
+-	else
++	else if (errno == ESPIPE || errno == EINVAL)
+ 	  {
+-	    lseek (fd, result, SEEK_SET);
+-	    SET_STACKTOP (_gst_false_oop);
++	    resultOOP = _gst_true_oop;
++	    errno = 0;
++	    goto succeed;
+ 	  }
+ 
+-	PRIM_SUCCEEDED;
++	goto fail;
+       }
+-      break;
+ 
+     case PRIM_SHUTDOWN_WRITE:
+       shutdown (fd, 1);
+@@ -5511,14 +5494,19 @@ primitive VMpr_FileDescriptor_fileOp [su
+ 	  errno = 0;
+ 	}
+ #endif
+-      break;
++      goto succeed;
+     }
+ 
++ fail:
+   if (errno)
+     _gst_set_errno (errno);
+ 
+-  UNPOP (numArgs);
+   PRIM_FAILED;
++
++ succeed:
++  POP_N_OOPS (numArgs);
++  SET_STACKTOP (resultOOP);
++  PRIM_SUCCEEDED;
+ }
+ 
+ /* FileDescriptor>>#socketOp..., socket version, variadic */
+@@ -5527,7 +5515,7 @@ primitive VMpr_FileDescriptor_socketOp [
+ {
+   gst_file_stream fileStream;
+   int fd;
+-  OOP oop1;
++  OOP oop1, resultOOP;
+   OOP *oopVec = alloca (numArgs * sizeof (OOP));
+   int i;
+   intptr_t arg1;
+@@ -5538,20 +5526,16 @@ primitive VMpr_FileDescriptor_socketOp [
+   for (i = numArgs; --i >= 0;)
+     oopVec[i] = POP_OOP ();
+ 
+-  oop1 = STACKTOP ();
++  resultOOP = oop1 = STACKTOP ();
++  UNPOP (numArgs);
+   if (!IS_INT (oopVec[0]))
+-    {
+-      UNPOP (numArgs);
+-      PRIM_FAILED;
+-    }
++    goto fail;
+ 
+   arg1 = TO_INT (oopVec[0]);
+   fileStream = (gst_file_stream) OOP_TO_OBJ (oop1);
+   if (IS_NIL (fileStream->file))
+-    {
+-      UNPOP (numArgs);
+-      PRIM_FAILED;
+-    }
++    goto fail;
++
+   fd = TO_INT (fileStream->file);
+   switch (arg1)
+     {
+@@ -5559,8 +5543,8 @@ primitive VMpr_FileDescriptor_socketOp [
+     case PRIM_CLOSE_FILE:	/* FileDescriptor close */
+       {
+         int result = closesocket (fd);
+-        SET_STACKTOP_INT (result);
+-        PRIM_SUCCEEDED;
++        resultOOP = FROM_INT (result);
++        goto succeed;
+       }
+ 
+     case PRIM_PUT_CHARS:
+@@ -5580,8 +5564,8 @@ primitive VMpr_FileDescriptor_socketOp [
+ 		abort ();
+ 	      if (result >= 0)
+ 		{
+-		  SET_STACKTOP_INT (result);
+-		  PRIM_SUCCEEDED;
++		  resultOOP = FROM_INT (result);
++		  goto succeed;
+ 		}
+ 	    }
+ 	}
+@@ -5614,8 +5598,8 @@ primitive VMpr_FileDescriptor_socketOp [
+ 
+ 	      if (result >= 0)
+ 		{
+-		  SET_STACKTOP_INT (result);
+-		  PRIM_SUCCEEDED;
++		  resultOOP = FROM_INT (result);
++		  goto succeed;
+ 		}
+ 	    }
+ 	}
+@@ -5628,8 +5612,8 @@ primitive VMpr_FileDescriptor_socketOp [
+ 	result = _gst_sync_file_polling (fd, TO_INT (oopVec[1]));
+ 	if (result >= 0)
+ 	  {
+-	    SET_STACKTOP_INT (result);
+-	    PRIM_SUCCEEDED;
++	    resultOOP = FROM_INT (result);
++	    goto succeed;
+ 	  }
+       }
+       break;
+@@ -5641,22 +5625,25 @@ primitive VMpr_FileDescriptor_socketOp [
+ 	result =
+ 	  _gst_async_file_polling (fd, TO_INT (oopVec[1]), oopVec[2]);
+ 	if (result >= 0)
+-	  PRIM_SUCCEEDED;
++	  goto succeed;
+       }
+       break;
+ 
+     case PRIM_IS_PIPE:
+-      {
+-	SET_STACKTOP (_gst_true_oop);
+-	PRIM_SUCCEEDED;
+-      }
++      resultOOP =_gst_true_oop;
++      goto succeed;
+       break;
+     }
+ 
+-  UNPOP (numArgs);
+ #endif
+ 
++ fail:
+   PRIM_FAILED;
++
++ succeed:
++  POP_N_OOPS (numArgs);
++  SET_STACKTOP (resultOOP);
++  PRIM_SUCCEEDED;
+ }
+ 
+ /* C callout primitives.  */


Index: sources
===================================================================
RCS file: /cvs/extras/rpms/gnu-smalltalk/devel/sources,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- sources	6 Sep 2007 19:36:36 -0000	1.8
+++ sources	21 Jan 2008 16:25:08 -0000	1.9
@@ -1 +1 @@
-c2fd207d55a873531ad89750f7f6478e  smalltalk-2.3.6.tar.gz
+8dd423609673edfa62694142db773a56  smalltalk-3.0.tar.gz




More information about the fedora-extras-commits mailing list