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