Commit graph

122 commits

Author SHA1 Message Date
Wolfgang Lux
c4edd15418 Fix translation of cascades to avoid linear growth of the stack size 2025-04-18 17:20:04 +02:00
Wolfgang Lux
24f4aa5aab Add optimization to merge pop after store into a single bytecode 2025-04-18 16:05:28 +02:00
Wolfgang Lux
50bea91ee5 Add bytecode instructions for a more efficient translation of assignments 2025-04-18 11:42:41 +02:00
Wolfgang Lux
34bf3a32c1 Remove erroneous code that was increasing the required stack size 2025-04-18 11:36:41 +02:00
Wolfgang Lux
cfc2540b25 Allow for temporaries in blocks 2025-04-13 22:08:51 +02:00
Wolfgang Lux
81702d35bd Avoid shift/reduce conflicts for array parser 2025-04-13 21:43:02 +02:00
Wolfgang Lux
af7d12cdcf Update grammar file to support modern Bison 2025-04-13 21:21:17 +02:00
Wolfgang Lux
8d856d505e Fix bug where duplicate argument names were not detected 2025-04-13 17:13:32 +02:00
Wolfgang Lux
5b7d8c1cf1 Refactor to prepare for blocks with temporaries 2025-04-13 16:56:24 +02:00
Wolfgang Lux
9e2fca4a0d Factor out code for the compilation of blocks. 2025-04-13 15:54:07 +02:00
Wolfgang Lux
a8c10032c8 Remove redundant code to discard temporary variables 2025-04-13 15:40:49 +02:00
Wolfgang Lux
1682f849a4 Implement Smalltalk collection protocol methods for NSSet 2025-04-06 17:53:51 +02:00
Wolfgang Lux
232d35f218 Add keysDo: to the collection protocol methods for NSDictionary 2025-04-06 17:44:14 +02:00
Wolfgang Lux
c31a7dc5e9 Return nil from detect: if no match was found 2025-04-06 17:40:27 +02:00
Wolfgang Lux
ed62d8d758 Add methods whileTrue and whileFalse to STBlock 2025-04-06 17:29:45 +02:00
Wolfgang Lux
1a6660563e Prevent exception when sending a nil argument to a block 2025-04-06 17:24:06 +02:00
Wolfgang Lux
9a3eef25c5 Use numberWithBool: when pushing true and false values onto the stack. 2019-03-27 09:22:10 +01:00
Wolfgang Lux
09841d976e Report unimplemented script methods rather than returning nil 2019-03-25 10:54:17 +01:00
Wolfgang Lux
f3ce2b7f32 Implement Smalltalk collection protocol methods for NSDictionary 2019-02-22 11:24:15 +01:00
Graham Lee
705e29eb3c correct the spelling of deprecated throughout 2018-03-20 21:10:02 +00:00
Wolfgang Lux
fdce6b2210 Remove comma that unintentionally breaks an exception format string 2017-12-27 18:59:05 +01:00
Wolfgang Lux
37e2cfb6cc Fix wrong return type in method declaration 2017-12-27 17:43:44 +01:00
Wolfgang Lux
5e87e76a79 Fix bug where the cached context of a block could be reused prematurely.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@38146 72102866-910b-0410-8b05-ffd578937521
2014-11-01 18:26:39 +00:00
Wolfgang Lux
54ff99c389 Fix a whole bunch of space leaks in StepTalk.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@38145 72102866-910b-0410-8b05-ffd578937521
2014-11-01 17:47:23 +00:00
Wolfgang Lux
cf50d0e507 Remove unused interpreter attribute and corresponding argument from
STBlockContext and its initializer.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@38119 72102866-910b-0410-8b05-ffd578937521
2014-10-14 20:13:09 +00:00
Wolfgang Lux
e352e229d5 Remove unused environment argument from STMethodContext initializer.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@38118 72102866-910b-0410-8b05-ffd578937521
2014-10-14 20:03:39 +00:00
Wolfgang Lux
51b17b1ba5 Set the return value of the invocation also when the exit pseudo
method of a Smalltalk script object is called.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@38117 72102866-910b-0410-8b05-ffd578937521
2014-10-14 07:58:57 +00:00
Wolfgang Lux
8b6c53712c Add missing nil terminator to argument list of arrayWithObjects.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@38116 72102866-910b-0410-8b05-ffd578937521
2014-10-14 07:51:02 +00:00
Wolfgang Lux
a58da09aa0 Fix another mutable vs. non-mutable array mismatch detected by clang.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@38065 72102866-910b-0410-8b05-ffd578937521
2014-09-09 15:11:46 +00:00
Wolfgang Lux
27f1ac7524 Use non-mutable array to fix mutable vs. non-mutable array mismatch
detected by clang.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@38064 72102866-910b-0410-8b05-ffd578937521
2014-09-09 15:00:54 +00:00
Wolfgang Lux
779c0b47c4 Fix NSDebugLLog format issues detect by clang.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@38063 72102866-910b-0410-8b05-ffd578937521
2014-09-09 13:52:49 +00:00
Wolfgang Lux
66bd2c33fe Revert bogus change
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@37540 72102866-910b-0410-8b05-ffd578937521
2014-01-06 11:24:16 +00:00
Richard Frith-MacDonald
fad9c634f1 trivial optimisation
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@37485 72102866-910b-0410-8b05-ffd578937521
2013-12-20 14:42:10 +00:00
Wolfgang Lux
70936d6e15 Fix bug where the Smalltalk source reader was loosing the last character
of a symbol token that appears immediately before the end of input.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@36777 72102866-910b-0410-8b05-ffd578937521
2013-06-30 17:44:50 +00:00
Wolfgang Lux
254398ccdf Fix bug where the Smalltalk source reader was loosing the last character
of a symbol token that appears immediately before the end of input.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@36776 72102866-910b-0410-8b05-ffd578937521
2013-06-30 17:42:15 +00:00
Wolfgang Lux
0e94ff5bac Fix bug where the Smalltalk source reader was setting a wrong token
range for character literals.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@36775 72102866-910b-0410-8b05-ffd578937521
2013-06-30 17:30:52 +00:00
Wolfgang Lux
bfed68b1c3 Fix bug where the Smalltalk source reader would accept an incomplete
exponent in a real number, e.g., '1e'.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@36774 72102866-910b-0410-8b05-ffd578937521
2013-06-30 17:24:51 +00:00
Wolfgang Lux
4298e255e7 Prevent out of range accesses for the input string in the Smalltalk
source reader.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@36773 72102866-910b-0410-8b05-ffd578937521
2013-06-30 17:13:05 +00:00
Wolfgang Lux
c046955909 Tidy Smalltalk source reader.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@36772 72102866-910b-0410-8b05-ffd578937521
2013-06-30 16:54:32 +00:00
Wolfgang Lux
f1d9694b1c Change Smalltalk grammar to allow empty list of temporaries.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@36662 72102866-910b-0410-8b05-ffd578937521
2013-05-26 16:14:13 +00:00
Wolfgang Lux
3f8eeb9ff0 StepTalk Smalltalk compiler: int->NSInteger transition
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@36658 72102866-910b-0410-8b05-ffd578937521
2013-05-26 15:51:26 +00:00
Wolfgang Lux
ba12bd3874 Fix bug in Smalltalk reader where the last character of an identifier
was dropped when the assignment operator ':=' follows it immediately.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@36480 72102866-910b-0410-8b05-ffd578937521
2013-04-06 12:22:28 +00:00
Wolfgang Lux
9feb26b63c Fix -collect: method to properly handle nil results from block.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@36456 72102866-910b-0410-8b05-ffd578937521
2013-04-03 07:46:24 +00:00
Wolfgang Lux
5cfb99c758 Fix Smalltalk reader to always return correct line numbers.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@36455 72102866-910b-0410-8b05-ffd578937521
2013-04-03 07:42:02 +00:00
Wolfgang Lux
ac8fc9cbb6 Fix bug where the STInterpreterReturnException was not handled when a
block returns nil.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@36426 72102866-910b-0410-8b05-ffd578937521
2013-03-25 11:32:20 +00:00
Wolfgang Lux
b7a0150e02 Fix stack underflow exception when computing the value of an empty
block.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@36422 72102866-910b-0410-8b05-ffd578937521
2013-03-24 17:29:43 +00:00
Wolfgang Lux
1fc2e5fb63 Follow Smalltalk convention to return the receiver from a method
without an explicit return statement.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@36421 72102866-910b-0410-8b05-ffd578937521
2013-03-24 17:24:11 +00:00
Wolfgang Lux
fd46046983 Fix to allow using Smalltalk blocks even after the method containing
their definition has returned.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@36420 72102866-910b-0410-8b05-ffd578937521
2013-03-24 17:19:55 +00:00
Wolfgang Lux
b5aeea6a29 Implement correct semantics for return statements inside a Smalltalk
block, which is to return from the method containing the block's
definition.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@36419 72102866-910b-0410-8b05-ffd578937521
2013-03-24 17:02:20 +00:00
Wolfgang Lux
9b35f05577 Fix Smalltalk compiler bug: The value of a statement sequence is the
value of its last statement.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@36410 72102866-910b-0410-8b05-ffd578937521
2013-03-23 20:02:23 +00:00