Tue, 18 Aug 2015 16:57:08 +0100 Added benchmarks for Johan's LRP Parser
Jan Vrany <jan.vrany@fit.cvut.cz> [Tue, 18 Aug 2015 16:57:08 +0100] rev 520
Added benchmarks for Johan's LRP Parser
Tue, 18 Aug 2015 13:09:42 +0100 Portability: fixed RBLiteralValueNode>>isLiteralNumber to work under both - Pharo and Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz> [Tue, 18 Aug 2015 13:09:42 +0100] rev 519
Portability: fixed RBLiteralValueNode>>isLiteralNumber to work under both - Pharo and Smalltalk/X
Mon, 17 Aug 2015 23:11:56 +0100 Portability fixes
Jan Vrany <jan.vrany@fit.cvut.cz> [Mon, 17 Aug 2015 23:11:56 +0100] rev 518
Portability fixes * do not use Object>>asString. Not all Smalltalks implement it. * do not use Object>>name. Not all Smalltalks implement it. * do not use Dictionary keysAndValuesRemove:. Not all Smalltalks implement it. * do not use Class>>methods The semantics is different among Smalltalks. Use `Class methodDictionary values` instead. * do not modify dictionary in #at:ifAbsentPut: block!
Mon, 17 Aug 2015 13:39:38 +0100 Portability: override #new for PPCScannerCodeGenerator.
Jan Vrany <jan.vrany@fit.cvut.cz> [Mon, 17 Aug 2015 13:39:38 +0100] rev 517
Portability: override #new for PPCScannerCodeGenerator. Not all smalltalks send #initialize by default.
Mon, 17 Aug 2015 12:56:02 +0100 Merge
Jan Vrany <jan.vrany@fit.cvut.cz> [Mon, 17 Aug 2015 12:56:02 +0100] rev 516
Merge
Mon, 17 Aug 2015 12:13:16 +0100 Updated to PetitCompiler-JanKurs.160, PetitCompiler-Tests-JanKurs.112, PetitCompiler-Extras-Tests-JanKurs.25, PetitCompiler-Benchmarks-JanKurs.17
Jan Vrany <jan.vrany@fit.cvut.cz> [Mon, 17 Aug 2015 12:13:16 +0100] rev 515
Updated to PetitCompiler-JanKurs.160, PetitCompiler-Tests-JanKurs.112, PetitCompiler-Extras-Tests-JanKurs.25, PetitCompiler-Benchmarks-JanKurs.17 Name: PetitCompiler-JanKurs.160 Author: JanKurs Time: 17-08-2015, 09:52:26.291 AM UUID: 3b4bfc98-8098-4951-af83-a59e2585b121 Name: PetitCompiler-Tests-JanKurs.112 Author: JanKurs Time: 16-08-2015, 05:00:32.936 PM UUID: 85613d47-08f3-406f-9823-9cdab451e805 Name: PetitCompiler-Extras-Tests-JanKurs.25 Author: JanKurs Time: 16-08-2015, 05:00:10.328 PM UUID: 09731810-51a1-4151-8d3a-56b636fbd1f7 Name: PetitCompiler-Benchmarks-JanKurs.17 Author: JanKurs Time: 05-08-2015, 05:29:32.407 PM UUID: e544b5f1-bcf8-470b-93a6-d2363e4dfc8a
Fri, 31 Jul 2015 14:07:31 +0100 Fixed PPCSetUpBefore...Resource to work on Pharo. Few othr minor Pharo fixes.
Jan Vrany <jan.vrany@fit.cvut.cz> [Fri, 31 Jul 2015 14:07:31 +0100] rev 514
Fixed PPCSetUpBefore...Resource to work on Pharo. Few othr minor Pharo fixes.
Fri, 31 Jul 2015 09:35:15 +0100 Portability fix: do not use "/ style comments in PetitParser code.
Jan Vrany <jan.vrany@fit.cvut.cz> [Fri, 31 Jul 2015 09:35:15 +0100] rev 513
Portability fix: do not use "/ style comments in PetitParser code.
Fri, 31 Jul 2015 07:57:23 +0100 Added smoke tests for LRPParser
Jan Vrany <jan.vrany@fit.cvut.cz> [Fri, 31 Jul 2015 07:57:23 +0100] rev 512
Added smoke tests for LRPParser
Thu, 30 Jul 2015 17:31:18 +0100 Added LRPParser from Live Robots Prograaming project
Jan Vrany <jan.vrany@fit.cvut.cz> [Thu, 30 Jul 2015 17:31:18 +0100] rev 511
Added LRPParser from Live Robots Prograaming project
Thu, 30 Jul 2015 08:37:37 +0100 Tests refactoring - use generated test cases to make sure all posibilities are tested.
Jan Vrany <jan.vrany@fit.cvut.cz> [Thu, 30 Jul 2015 08:37:37 +0100] rev 510
Tests refactoring - use generated test cases to make sure all posibilities are tested. Do not generate resource for all combinations, use PPCSetUpBeforeTearDownAfterResource instead that delegates parser compilation to the testcase itself (it calls it's #setUpBefore method).
Fri, 31 Jul 2015 08:22:18 +0100 Inline child of an action node only is its unnamed sequence node.
Jan Vrany <jan.vrany@fit.cvut.cz> [Fri, 31 Jul 2015 08:22:18 +0100] rev 509
Inline child of an action node only is its unnamed sequence node. Named nodes should not be inlined as they should make a method. There's little point in inlining non-sequence nodes, so don't enforce inlining on those. Some (JK :-) may prefer them non-inlined (for debugging purposes)
Fri, 31 Jul 2015 08:16:54 +0100 Temporarily disabled #acceptsEpsilon test in PPCTokenizingCodeGenerator>>visitChoiceNode:
Jan Vrany <jan.vrany@fit.cvut.cz> [Fri, 31 Jul 2015 08:16:54 +0100] rev 508
Temporarily disabled #acceptsEpsilon test in PPCTokenizingCodeGenerator>>visitChoiceNode: JK should have a look and come up with proper solution.
Tue, 28 Jul 2015 07:16:10 +0100 Workaround for stc bug.
Jan Vrany <jan.vrany@fit.cvut.cz> [Tue, 28 Jul 2015 07:16:10 +0100] rev 507
Workaround for stc bug.
Mon, 27 Jul 2015 16:28:48 +0100 Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz> [Mon, 27 Jul 2015 16:28:48 +0100] rev 506
Added static analysis of blocks when inlining. Allow inlining only when block is functional ...i.e., does not access any shared state (in instance or class variables). If the block does a self-send, the sent method has to be (transitively) functional too. To allow for self-sends in action blocks, copy (transitively) self-sent methods to target parser. This is safe as these self-sent methods are guarnateed to be functional.
Mon, 27 Jul 2015 10:21:41 +0100 Post-merge fixes. PPCCodeBlock refactoring.
Jan Vrany <jan.vrany@fit.cvut.cz> [Mon, 27 Jul 2015 10:21:41 +0100] rev 505
Post-merge fixes. PPCCodeBlock refactoring.
Fri, 24 Jul 2015 19:42:09 +0100 Portability fix: override #new for class that implements #initialize
Jan Vrany <jan.vrany@fit.cvut.cz> [Fri, 24 Jul 2015 19:42:09 +0100] rev 504
Portability fix: override #new for class that implements #initialize #initialize is not sent by default.
Fri, 24 Jul 2015 15:37:23 +0100 Merge
Jan Vrany <jan.vrany@fit.cvut.cz> [Fri, 24 Jul 2015 15:37:23 +0100] rev 503
Merge
Fri, 24 Jul 2015 15:06:54 +0100 Updated to PetitCompiler-JanVrany.135, PetitCompiler-Tests-JanKurs.93, PetitCompiler-Extras-Tests-JanVrany.16, PetitCompiler-Benchmarks-JanKurs.12
Jan Vrany <jan.vrany@fit.cvut.cz> [Fri, 24 Jul 2015 15:06:54 +0100] rev 502
Updated to PetitCompiler-JanVrany.135, PetitCompiler-Tests-JanKurs.93, PetitCompiler-Extras-Tests-JanVrany.16, PetitCompiler-Benchmarks-JanKurs.12 Name: PetitCompiler-JanVrany.135 Author: JanVrany Time: 22-07-2015, 06:53:29.127 PM UUID: 890178b5-275d-46af-a2ad-1738998f07cb Ancestors: PetitCompiler-JanVrany.134 Name: PetitCompiler-Tests-JanKurs.93 Author: JanKurs Time: 20-07-2015, 11:30:10.283 PM UUID: 6473e671-ad70-42ca-b6c3-654b78edc531 Ancestors: PetitCompiler-Tests-JanKurs.92 Name: PetitCompiler-Extras-Tests-JanVrany.16 Author: JanVrany Time: 22-07-2015, 05:18:22.387 PM UUID: 8f6f9129-dbba-49b1-9402-038470742f98 Ancestors: PetitCompiler-Extras-Tests-JanKurs.15 Name: PetitCompiler-Benchmarks-JanKurs.12 Author: JanKurs Time: 06-07-2015, 02:10:06.901 PM UUID: cb24f1ac-46a4-494d-9780-64576f0f0dba Ancestors: PetitCompiler-Benchmarks-JanKurs.11, PetitCompiler-Benchmarks-JanVrany.e29bd90f388e.20150619081300
Fri, 19 Jun 2015 08:13:39 +0100 Moved PPMappedActionParser>>asCompilerNode to protocol 'converting'
Jan Vrany <jan.vrany@fit.cvut.cz> [Fri, 19 Jun 2015 08:13:39 +0100] rev 501
Moved PPMappedActionParser>>asCompilerNode to protocol 'converting' If in '*petitparser' it makes some problems with Monticello.
Fri, 19 Jun 2015 07:14:07 +0100 Use RBVariableNode>>name: to change variable's name.
Jan Vrany <jan.vrany@fit.cvut.cz> [Fri, 19 Jun 2015 07:14:07 +0100] rev 500
Use RBVariableNode>>name: to change variable's name. The old way - `node token value:` is working in Pharo - there's no token in RBVariableNode. Sigh.
Fri, 19 Jun 2015 06:53:06 +0100 Portability fix: do not use #?
Jan Vrany <jan.vrany@fit.cvut.cz> [Fri, 19 Jun 2015 06:53:06 +0100] rev 499
Portability fix: do not use #? ...use `notNil ifTrue:[] ifFalse:[]` instead. #? is not supported in Squeak/Pharo
Thu, 18 Jun 2015 22:11:40 +0100 Moved PPCMappedActionNode to category PetitCompiler-Nodes
Jan Vrany <jan.vrany@fit.cvut.cz> [Thu, 18 Jun 2015 22:11:40 +0100] rev 498
Moved PPCMappedActionNode to category PetitCompiler-Nodes
Thu, 18 Jun 2015 22:05:13 +0100 Do not use RBProgramNode>>variableNodesDo: as this method is not present in Pharo.
Jan Vrany <jan.vrany@fit.cvut.cz> [Thu, 18 Jun 2015 22:05:13 +0100] rev 497
Do not use RBProgramNode>>variableNodesDo: as this method is not present in Pharo. Use local helper method instead.
Thu, 18 Jun 2015 21:20:15 +0100 Reverted fc3dbe5654c5: sending #copy should be OK (copy set's parent properly)
Jan Vrany <jan.vrany@fit.cvut.cz> [Thu, 18 Jun 2015 21:20:15 +0100] rev 496
Reverted fc3dbe5654c5: sending #copy should be OK (copy set's parent properly)
Thu, 18 Jun 2015 06:40:15 +0100 Send #sourceNode instead of #ast as there's no #ast in Pharo
Jan Vrany <jan.vrany@fit.cvut.cz> [Thu, 18 Jun 2015 06:40:15 +0100] rev 495
Send #sourceNode instead of #ast as there's no #ast in Pharo ...I was mistaken.
Thu, 18 Jun 2015 06:07:40 +0100 Oops, removed EOL comments as they;re not supported in Squeak / Pharo
Jan Vrany <jan.vrany@fit.cvut.cz> [Thu, 18 Jun 2015 06:07:40 +0100] rev 494
Oops, removed EOL comments as they;re not supported in Squeak / Pharo
Wed, 17 Jun 2015 17:10:54 +0100 Fixed target mcz - exit Smalltalk after all packages are exported.
Jan Vrany <jan.vrany@fit.cvut.cz> [Wed, 17 Jun 2015 17:10:54 +0100] rev 493
Fixed target mcz - exit Smalltalk after all packages are exported.
Wed, 17 Jun 2015 16:49:28 +0100 Use #deepCopy instead of #copy when copying RB parse tree
Jan Vrany <jan.vrany@fit.cvut.cz> [Wed, 17 Jun 2015 16:49:28 +0100] rev 492
Use #deepCopy instead of #copy when copying RB parse tree ...because #copy make a copy if child nodes but does not set their parents properly. Therefore node replacing does not work because it replaces it in wrong tree (original, not the copy).
Tue, 16 Jun 2015 07:49:21 +0100 Codegen: added support for smart action node compiling.
Jan Vrany <jan.vrany@fit.cvut.cz> [Tue, 16 Jun 2015 07:49:21 +0100] rev 491
Codegen: added support for smart action node compiling. Avoid creation of intermediate result collection for action nodes if all references to action block's argument (i.e., the nodes collection) is in form of: * <nodes> at: <numeric constant> * <nodes> first (second, third...
Tue, 16 Jun 2015 06:54:14 +0100 Oops, renamed testMappedNode3/4/5 to testActionNode3/4/5 which is the correct name!
Jan Vrany <jan.vrany@fit.cvut.cz> [Tue, 16 Jun 2015 06:54:14 +0100] rev 490
Oops, renamed testMappedNode3/4/5 to testActionNode3/4/5 which is the correct name!
Tue, 16 Jun 2015 06:45:26 +0100 Fix in codegen for inlined sequence nodes.
Jan Vrany <jan.vrany@fit.cvut.cz> [Tue, 16 Jun 2015 06:45:26 +0100] rev 489
Fix in codegen for inlined sequence nodes. For inlined sequence nodes, generate nested ifs rather than sequential code which does not work when inlined. The reason is that #codeReturn: in inline generates instvar assignment, not method return, so in sequential code the next child of a sequence will be probed even if previous failed. If that happends, the whole sequence fail and therefore we must generate nested ifs to correctly handle this w.r.t. inlining.
Mon, 15 Jun 2015 19:13:49 +0100 Avoid creation of intermediate collection for mapped action nodes.
Jan Vrany <jan.vrany@fit.cvut.cz> [Mon, 15 Jun 2015 19:13:49 +0100] rev 488
Avoid creation of intermediate collection for mapped action nodes.
Mon, 15 Jun 2015 18:00:44 +0100 Fix in codegen: fixed compilation of unknown node: do not hardcode return variable name
Jan Vrany <jan.vrany@fit.cvut.cz> [Mon, 15 Jun 2015 18:00:44 +0100] rev 487
Fix in codegen: fixed compilation of unknown node: do not hardcode return variable name ...use `self retvalVar` instead
Mon, 15 Jun 2015 17:47:38 +0100 Renamed #codeStoreValueOf:intoVariable: to #codeAssignParsedValueOf:to:
Jan Vrany <jan.vrany@fit.cvut.cz> [Mon, 15 Jun 2015 17:47:38 +0100] rev 486
Renamed #codeStoreValueOf:intoVariable: to #codeAssignParsedValueOf:to: to use same naming as #codeAssign:to:
Mon, 15 Jun 2015 17:12:54 +0100 Fixed codegen for empty (mapped) action block.
Jan Vrany <jan.vrany@fit.cvut.cz> [Mon, 15 Jun 2015 17:12:54 +0100] rev 485
Fixed codegen for empty (mapped) action block. Although empty blocks are useless in practice, they may occur (and do occur in tests)
Fri, 05 Jun 2015 00:05:08 +0100 Do not create intermediate collection when parsing sequence if not necesary.
Jan Vrany <jan.vrany@fit.cvut.cz> [Fri, 05 Jun 2015 00:05:08 +0100] rev 484
Do not create intermediate collection when parsing sequence if not necesary. The collection is not needed when the result of a choice is being used in mapped parser. In that case, store parsed objects in variables and inline action code to use these variables to access parsed objects.
Wed, 03 Jun 2015 09:06:49 +0100 Oops, fixed subproject definition (wrong package names)
Jan Vrany <jan.vrany@fit.cvut.cz> [Wed, 03 Jun 2015 09:06:49 +0100] rev 483
Oops, fixed subproject definition (wrong package names)
Wed, 03 Jun 2015 08:48:59 +0100 Updated .mcz exporting code to include a commit message digest
Jan Vrany <jan.vrany@fit.cvut.cz> [Wed, 03 Jun 2015 08:48:59 +0100] rev 482
Updated .mcz exporting code to include a commit message digest ...instead of just exported revision commit message.
Wed, 03 Jun 2015 06:23:49 +0100 Introduced PPCMappedActionNode for PPMappedActionParser.
Jan Vrany <jan.vrany@fit.cvut.cz> [Wed, 03 Jun 2015 06:23:49 +0100] rev 481
Introduced PPCMappedActionNode for PPMappedActionParser. It's compilation is not yet ideal, bot works for now.
Tue, 02 Jun 2015 17:25:57 +0100 Introduced PPMappedActionParser, a specialized parser for map:ped actions.
Jan Vrany <jan.vrany@fit.cvut.cz> [Tue, 02 Jun 2015 17:25:57 +0100] rev 480
Introduced PPMappedActionParser, a specialized parser for map:ped actions. In order to compile nicer code, compiler has to be able to tell between simple (==>) action parser and mapped (map:) action parser.
Tue, 02 Jun 2015 00:16:55 +0100 Action inlining [1/x]: Initial support for inlining actions parsers (i.e., ==>)
Jan Vrany <jan.vrany@fit.cvut.cz> [Tue, 02 Jun 2015 00:16:55 +0100] rev 479
Action inlining [1/x]: Initial support for inlining actions parsers (i.e., ==>) The code of the action is now inlined into parsing method rather then delegated to stored block. Mapping parser (i.e., map:[...]) are not supported and not detected, so using them cause crash. This will be fixed later.
Mon, 01 Jun 2015 23:15:52 +0100 Codegen refactoring [2/x]: Added PPCCompiler>>codeIf:then:else:
Jan Vrany <jan.vrany@fit.cvut.cz> [Mon, 01 Jun 2015 23:15:52 +0100] rev 478
Codegen refactoring [2/x]: Added PPCCompiler>>codeIf:then:else: this allows for more structured coding of conditionals. then/else code is evaluated inside new block so it may allocate its own temporaries.
Mon, 01 Jun 2015 22:02:17 +0100 Codegen refactoring [1/x]: Introduced a PPCCodeBlock
Jan Vrany <jan.vrany@fit.cvut.cz> [Mon, 01 Jun 2015 22:02:17 +0100] rev 477
Codegen refactoring [1/x]: Introduced a PPCCodeBlock A PPCCodeBlock is an abstraction of a block of statements with temporaries. This will allow for scoped temporary management in code generator - temporary variables could be allocated for block only. (i.e., make them block-temporaries)
Fri, 29 May 2015 07:25:31 +0100 Fixed choice inlining.
Jan Vrany <jan.vrany@fit.cvut.cz> [Fri, 29 May 2015 07:25:31 +0100] rev 476
Fixed choice inlining.
Wed, 27 May 2015 08:37:09 +0100 Add inspector tab to present parser tree.
Jan Vrany <jan.vrany@fit.cvut.cz> [Wed, 27 May 2015 08:37:09 +0100] rev 475
Add inspector tab to present parser tree.
Wed, 27 May 2015 03:30:35 +0100 More fixes for inlining of nodes
Jan Vrany <jan.vrany@fit.cvut.cz> [Wed, 27 May 2015 03:30:35 +0100] rev 474
More fixes for inlining of nodes
Tue, 26 May 2015 07:27:15 +0100 Oops, merged code which contained Pharoism's
Jan Vrany <jan.vrany@fit.cvut.cz> [Tue, 26 May 2015 07:27:15 +0100] rev 473
Oops, merged code which contained Pharoism's
Mon, 25 May 2015 02:49:22 +0100 Avoid using of a bridge parser for top-most composite parser
Jan Vrany <jan.vrany@fit.cvut.cz> [Mon, 25 May 2015 02:49:22 +0100] rev 472
Avoid using of a bridge parser for top-most composite parser ...by converting PPCompositeParser to PPCDelegatePrser.
Fri, 22 May 2015 18:08:30 +0100 Added two more tests for inlining
Jan Vrany <jan.vrany@fit.cvut.cz> [Fri, 22 May 2015 18:08:30 +0100] rev 471
Added two more tests for inlining
Fri, 22 May 2015 17:06:30 +0100 Added inspector representation to show PPC node tree.
Jan Vrany <jan.vrany@fit.cvut.cz> [Fri, 22 May 2015 17:06:30 +0100] rev 470
Added inspector representation to show PPC node tree.
Thu, 21 May 2015 17:19:17 +0100 Oops. re-added classes lost during merge...
Jan Vrany <jan.vrany@fit.cvut.cz> [Thu, 21 May 2015 17:19:17 +0100] rev 469
Oops. re-added classes lost during merge...
Thu, 21 May 2015 15:49:26 +0100 Indent by 4 spaces on Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz> [Thu, 21 May 2015 15:49:26 +0100] rev 468
Indent by 4 spaces on Smalltalk/X
Thu, 21 May 2015 15:35:26 +0100 Fixed code generation for deterministic choice w.r.t inlining
Jan Vrany <jan.vrany@fit.cvut.cz> [Thu, 21 May 2015 15:35:26 +0100] rev 467
Fixed code generation for deterministic choice w.r.t inlining For PPCDeterministicChoiceNode generate code in form if () else if () else if () else error instead of sequence of ifs. The former is safe w.r.t inlining.
Thu, 21 May 2015 14:43:38 +0100 Fixed MNU in PPCSpecializingVisitor>>visitTrimmingTokenNode: node
Jan Vrany <jan.vrany@fit.cvut.cz> [Thu, 21 May 2015 14:43:38 +0100] rev 466
Fixed MNU in PPCSpecializingVisitor>>visitTrimmingTokenNode: node Set child of PPCTrimmingCharacterTokenNode before setting name as child is used to compute meaningful name.
Thu, 21 May 2015 14:35:34 +0100 Merge
Jan Vrany <jan.vrany@fit.cvut.cz> [Thu, 21 May 2015 14:35:34 +0100] rev 465
Merge
Thu, 21 May 2015 14:12:22 +0100 Updated to PetitCompiler-JanKurs.118, PetitCompiler-Tests-JanKurs.46, PetitCompiler-Extras-Tests-JanKurs.11, and PetitCompiler-Benchmarks-JanKurs.11
Jan Vrany <jan.vrany@fit.cvut.cz> [Thu, 21 May 2015 14:12:22 +0100] rev 464
Updated to PetitCompiler-JanKurs.118, PetitCompiler-Tests-JanKurs.46, PetitCompiler-Extras-Tests-JanKurs.11, and PetitCompiler-Benchmarks-JanKurs.11 Name: PetitCompiler-JanKurs.118 Author: JanKurs Time: 13-05-2015, 03:59:01.292 PM UUID: 4a8ccd94-3131-4cc7-9098-528f8e5ea0b5 Name: PetitCompiler-Tests-JanKurs.46 Author: JanKurs Time: 04-05-2015, 04:25:06.162 PM UUID: 9f4cf8b7-876e-4a13-9579-b833f016db66 Name: PetitCompiler-Extras-Tests-JanKurs.11 Author: JanKurs Time: 13-05-2015, 04:27:27.940 PM UUID: e9f30c31-fbd0-4e96-ad2a-868f88d20ea8 Name: PetitCompiler-Benchmarks-JanKurs.11 Author: JanKurs Time: 13-05-2015, 02:21:49.932 PM UUID: 6a23fd1e-a86f-46db-8221-cc41b778d32c
Wed, 20 May 2015 16:47:52 +0100 Small improvement in inlining: inline child of an action node.
Jan Vrany <jan.vrany@fit.cvut.cz> [Wed, 20 May 2015 16:47:52 +0100] rev 463
Small improvement in inlining: inline child of an action node.
Sat, 16 May 2015 19:21:00 +0100 Added benchmark of a smalltalk parser with empty actions.
Jan Vrany <jan.vrany@fit.cvut.cz> [Sat, 16 May 2015 19:21:00 +0100] rev 462
Added benchmark of a smalltalk parser with empty actions. This is used to check the cost of compiled actions
Tue, 12 May 2015 01:57:37 +0100 Portability: fixes for Smalltalk/X
Jan Vrany <jan.vrany@fit.cvut.cz> [Tue, 12 May 2015 01:57:37 +0100] rev 461
Portability: fixes for Smalltalk/X * Do not use #crShow: - not present in Smalltalk/X * Do not use Array class>>with:withAll: * do not use detect:ifFound:ifAbsent:
(0) -300 -100 -60 +60 +100 tip