lightning
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Lightning] Porting GNU Smalltalk to lightning 2


From: Paulo César Pereira de Andrade
Subject: Re: [Lightning] Porting GNU Smalltalk to lightning 2
Date: Sun, 26 Oct 2014 10:46:32 -0200

2014-10-26 9:05 GMT-02:00 Holger Hans Peter Freyther <address@hidden>:
> On Sat, Oct 25, 2014 at 05:07:18PM -0200, Paulo César Pereira de Andrade 
> wrote:
>
>> and most important, update to latest scratch-lightning-branch
>> https://github.com/pcpa/smalltalk/commit/5e0e9f4aa148b03f619d8d8378fdcae0a658a250
>
> oh wow. In regard to the inline caches. Maybe you can think of a
> better way to invalidate them. You should invalidate your ICs from

  Actually, I enabled it back in
https://github.com/pcpa/smalltalk/commit/c1cac9ab3f6abde6bc53127d4ca07428c77d1b21
I had the jump test reversed... I reversed the logic at some point when
doing some trial&error :(

> _gst_reset_inline_caches as well. _gst_invalidate_method_cache will
> be called from Smalltalk code (e.g. when a new method is added to
> the method dictionary).

  I looks quite better now, after this commit
https://github.com/pcpa/smalltalk/commit/6864d42b53bc34ce307a3d953125a985ba13d3d1
that should be what you are talking about. In my first reading of
the code I thought something like in the above commit was not
required. I mean, why does it need to adjust jit translations to
no longer reference translations that are about to be deleted?
If it references them, they are reachable and should not be
deleted... (Maybe the code was rewritten and need a new
translation?)

  How do I enabled a build type that calls gc at every possibility?
Some kind of gc debug build? I suspect it is failing some tests in
make check due to the gc "resetting" references to code about to
be deleted. The few now failing tests are passing in the build with
the bundled lightning 1, but I believe it may be due gc called a lot
more frequently.
  GC should be being called a lot more frequently due to the way
lightning 2 does translations, where it mmap's a code buffer, so,
there are a lot of "r-x" 4K buffers around, where lightning 1x would
generate as small as 100 bytes buffers (appended to variably sized
method_entry structures).
  BTW, it generates so much buffers where the difference is only
one embedded constant, it should be somehow parameterized.

> holger

make check now looks like this:
---%<---
/bin/sh './testsuite'
## -------------------------------- ##
## GNU Smalltalk 3.2.91 test suite. ##
## -------------------------------- ##

Regression tests.

  1: arrays.st                                       ok
  2: classes.st                                      ok
  3: blocks.st                                       ok
  4: sets.st                                         ok
  5: processes.st                                    ok
  6: exceptions.st                                   ok
  7: intmath.st                                      ok
  8: floatmath.st                                    ok
  9: dates.st                                        ok
 10: objects.st                                      ok
 11: strings.st                                      ok
 12: chars.st                                        ok
 13: delays.st                                       ok
 14: geometry.st                                     ok
 15: cobjects.st                                     ok
 16: compiler.st                                     ok
 17: fileext.st                                      ok
 18: mutate.st                                       ok
 19: getopt.st                                       ok
 20: quit.st                                         ok
 21: pools.st                                        ok
 22: shape.st                                        ok
 23: streams.st                                      ok
 24: xlat.st                                         ok

Other simple tests.

 25: ackermann.st                                    ok
 26: ary3.st                                         ok
 27: except.st                                       ok
 28: fibo.st                                         ok
 29: hash.st                                         ok
 30: hash2.st                                        ok
 31: heapsort.st                                     ok
 32: lists.st                                        ok
 33: lists1.st                                       ok
 34: lists2.st                                       ok
 35: matrix.st                                       ok
 36: methcall.st                                     ok
 37: nestedloop.st                                   ok
 38: objinst.st                                      ok
 39: prodcons.st                                     ok
 40: random-bench.st                                 ok
 41: sieve.st                                        ok
 42: strcat.st                                       ok
 43: stcompiler.st                                   ok

Basic packages.

 44: SUnit                                           ok
 45: Parser                                          ok

ANSI compliancy tests.

 46: ArrayANSITest                                   FAILED (testsuite.at:82)
 47: ArrayFactoryANSITest                            ok
 48: BagANSITest                                     FAILED (testsuite.at:84)
 49: BagFactoryANSITest                              ok
 50: BooleanANSITest                                 ok
 51: ByteArrayANSITest                               FAILED (testsuite.at:87)
 52: ByteArrayFactoryANSITest                        ok
 53: CharacterANSITest                               ok
 54: CharacterFactoryANSITest                        ok
 55: DateAndTimeANSITest                             ok
 56: DateAndTimeFactoryANSITest                      ok
 57: DictionaryANSITest                              FAILED (testsuite.at:93)
 58: DictionaryFactoryANSITest                       ok
 59: DurationANSITest                                ok
 60: DurationFactoryANSITest                         ok
 61: DyadicValuableANSITest                          ok
 62: ErrorANSITest                                   ok
 63: ErrorClassANSITest                              ok
 64: ExceptionANSITest                               ok
 65: ExceptionClassANSITest                          ok
 66: ExceptionSetANSITest                            ok
 67: FailedMessageANSITest                           ok
 68: FileStreamFactoryANSITest                       ok
 69: FloatANSITest                                   FAILED (testsuite.at:105)
 70: FloatCharacterizationANSITest                   ok
 71: FractionANSITest                                ok
 72: FractionFactoryANSITest                         ok
 73: IdentityDictionaryANSITest                      ok
 74: IdentityDictionaryFactoryANSITest               ok
 75: IntegerANSITest                                 FAILED (testsuite.at:111)
 76: IntervalANSITest                                ok
 77: IntervalFactoryANSITest                         ok
 78: MessageNotUnderstoodANSITest                    ok
 79: MessageNotUnderstoodSelectorANSITest            ok
 80: MonadicBlockANSITest                            ok
 81: NilANSITest                                     ok
 82: NiladicBlockANSITest                            ok
 83: NotificationANSITest                            ok
 84: NotificationClassANSITest                       ok
 85: ObjectANSITest                                  ok
 86: ObjectClassANSITest                             ok
 87: OrderedCollectionANSITest                       FAILED (testsuite.at:123)
 88: OrderedCollectionFactoryANSITest                ok
 89: ReadFileStreamANSITest                          ok
 90: ReadStreamANSITest                              ok
 91: ReadStreamFactoryANSITest                       ok
 92: ReadWriteStreamANSITest                         ok
 93: ReadWriteStreamFactoryANSITest                  ok
 94: ScaledDecimalANSITest                           ok
 95: SelectorANSITest                                ok
 96: SetANSITest                                     ok
 97: SetFactoryANSITest                              ok
 98: SortedCollectionANSITest                        ok
 99: SortedCollectionFactoryANSITest                 ok
100: StringANSITest                                  ok
101: StringFactoryANSITest                           ok
102: SymbolANSITest                                  FAILED (testsuite.at:138)
103: TranscriptANSITest                              ok
104: WarningANSITest                                 ok
105: WarningClassANSITest                            ok
106: WriteFileStreamANSITest                         ok
107: WriteStreamANSITest                             ok
108: WriteStreamFactoryANSITest                      ok
109: ZeroDivideANSITest                              ok
110: ZeroDivideFactoryANSITest                       ok

Other packages.

111: Announcements                                   ok
112: Complex                                         ok
113: Continuations                                   ok
114: DBD-MySQL                                       skipped (testsuite.at:152)
115: DBD-PostgreSQL                                  skipped (testsuite.at:153)
116: DBD-SQLite                                      skipped (testsuite.at:154)
117: DebugTools
---%<---

It hangs in test 117. But it also hangs in the build using the bunlded
"lightning 1". So, it is something to be looked at next..

BTW, how do I start the same environment of a test under gdb?

Thanks,
Paulo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]