==== Channel ##pypy: 05/09/05 ====

[00:27] pedronis (~Samuele_P@c-3a8b70d5.022-54-67626719.cust.bredbandsbolaget.se) joined #pypy.

[00:41] stakkars_ (fibbxb@dsl-62-220-10-27.berlikomm.net) joined #pypy.

[00:41] stakkars (epsvpe@dsl-62-220-10-27.berlikomm.net) left irc: Connection reset by peer

[00:44] Nick change: stakkars_ -> stakkars

[00:44] stakkars (fibbxb@dsl-62-220-10-27.berlikomm.net) left irc: Client Quit

[00:45] stakkars (harhmjr@dsl-62-220-10-27.berlikomm.net) joined #pypy.

[00:46] <stakkars> pedronis: hehe, it seems to be armin's code,not mine :-))

[00:46] <pedronis> the problem?

[00:46] <stakkars> yes

[00:46] <pedronis> you mean some other simplification

[00:47] <pedronis> or check_graph itself

[00:47] <stakkars> my flowing workscompletely through, passes the checks. Then genc is activated and gives the crash

[00:47] <stakkars> no simplification that I did, I think.

[00:47] <pedronis> you mean the check_graph assertion or something else?

[00:47] <stakkars> if checkgraph is normative and a graph is valid ifff checkgraph works, then I'm fine.

[00:48] <stakkars> the assertion happens in a context where my simplifications are done and already checked.

[00:48] <pedronis> the one about last_exc

[00:48] <stakkars> I will look into it, anyway

[00:48] <stakkars> yehes

[00:48] <pedronis> the annotator

[00:48] <pedronis> ?

[00:48] <pedronis> it has assertions about that

[00:49] <stakkars> it happens when armin inserts a conv_to_obj

[00:49] <pedronis> what assertion do you exactly get and from which line?

[00:50] <stakkars> the assertion is from line 365 (# of days per year that's why I remembered after my system crash)

[00:51] <stakkars> last_exc_value

[00:51] <stakkars> the function is Executioncontext.call_tracing

[00:51] <stakkars> I'm trying to reproduce that, but I need to figure out what initial state I must provide, to cause the specialization.

[00:52] <pedronis> I see, it some change to the flowgraph taht happen later

[00:52] <stakkars> I'm indirectly the cause of this since I produce such tight graphs, now

[00:52] <pedronis> something is propagating the constants

[00:53] <stakkars> but this is an advantage

[00:53] <stakkars> since we find out this way.

[00:53] <pedronis> but as we discussed that should be really changed

[00:54] <stakkars> yes. I'm just happy that not I broke the axioms but their inventors ;-)

----- silence for 1 hr and 57 minutes -----

[02:51] <pedronis> stakkars: test_geninterp is completely failing right now!

[02:53] <stakkars> nanu, I thought it ran through test_all. But you are right!

[02:54] yuuh (xqacjlpv@dsl-62-220-10-27.berlikomm.net) left irc: "utz utz utz"

----- silence for 29 minutes -----

[03:23] pedronis (~Samuele_P@c-3a8b70d5.022-54-67626719.cust.bredbandsbolaget.se) left irc: "Chatzilla 0.9.68a [Firefox 1.0.2/20050317]"

[03:37] fredrik (fredrik@c83-248-135-181.bredband.comhem.se) left irc: "http://fredrikj.net";

----- silence for 2 hr and 31 minutes -----

[06:08] tea (~tea@cap010-137.kcn.ne.jp) joined #pypy.

[06:13] tea (~tea@cap010-137.kcn.ne.jp) left irc: Remote closed the connection

[06:27] stakkars (harhmjr@dsl-62-220-10-27.berlikomm.net) left irc: Read error: 113 (No route to host)

----- silence for 2 hr and 8 minutes -----

[08:35] arre (ac@ratthing-b3fa.strakt.com) joined #pypy.

----- silence for 35 minutes -----

[09:10] sanxiyn_ (~tinuviel@211.104.100.115) joined #pypy.

[09:10] <sanxiyn_> r12102: test_pickle now passes

[09:11] <sanxiyn_> Well, I haven't done anything except running the test. :-)

[09:11] <sanxiyn_> Must be related to disabling of _codecs.

[09:15] aleale (~root@cpe.atm0-0-0-129140.0x3ef2fa3a.bynxx3.customer.tele.dk) joined #pypy.

----- silence for 43 minutes -----

[09:58] adim (~adim@logilab.net2.nerim.net) joined #pypy.

[10:07] cfbolz (~cfbolz@edv01.physi.uni-heidelberg.de) joined #pypy.

[10:07] <cfbolz> hi all!

----- silence for 42 minutes -----

[10:49] cfbolz (cfbolz@edv01.physi.uni-heidelberg.de) left #pypy ("Leaving").

[10:55] <aleale> hi

[10:58] arigo (~arigo@c-3a8b70d5.022-54-67626719.cust.bredbandsbolaget.se) joined #pypy.

[11:03] <sanxiyn_> hi

[11:05] <arigo> hi!

[11:06] <sanxiyn_> Now having fun with Selenium.

[11:07] <sanxiyn_> (Automated web testing)

[11:07] <aleale> I have some questions on windows specific codecs

[11:07] <aleale> (MBCS codec)

[11:08] <aleale> In CPython those codecs are implemented using windows systemcalls

[11:08] <arigo> aleale: I see

[11:09] <aleale> Could PyPy use ctypes for this (adding an extra external dependence)?

[11:10] <aleale> I'd prefer that to implement the codecs from scratch

[11:10] <arigo> it's a difficult question

[11:10] <arigo> definitely, I understand. We need something similar in other cases too, anyway.

[11:10] <sanxiyn_> Using ctypes will allow running it on CPython.

[11:10] <sanxiyn_> How it will be translated... I don't sure.

[11:11] <arigo> aleale: can you point me to a few examples in the CPython source?

[11:12] <aleale> in unicodeobject.c line 2673 onwards

[11:12] <aleale> function PyUnicode_DecodeMBCS it says :

[11:12] <aleale> DWORD usize = MultiByteToWideChar(CP_ACP, 0, s, size, NULL, 0);

[11:13] <arigo> yup, I see

[11:13] <aleale> as an example

[11:13] <aleale> with ctypes it would look like :

[11:13] <aleale> WideCharToMultiByte = windll.kernel32.WideCharToMultiByte

[11:14] <aleale> mbcssize = WideCharToMultiByte(CP_ACP, 0, p, size, s, 0, None, None)

[11:15] <arigo> aleale: for now, you should probably go the simpler way of "cheating"

[11:16] <arigo> i.e. use in this case t = s.decode('msbc') directly

[11:17] <arigo> or, if you'd like to be more explicit,

[11:17] <aleale> sorry I dont understand (using the faked unicode object ? )

[11:17] <arigo> ah right. first, your unicode objects are implemented how? (sorry I didn't look)

[11:18] <arigo> lists of integers?

[11:18] <arigo> (sorry if I'm lost, I just don't know unicode that much and I'm not sure how codecs fit in that picture)

[11:19] <aleale> I dont implement unicode objects, only different codecs

[11:19] <arigo> ok

[11:19] <aleale> So I am counting on arre to implement the objects.

[11:20] <arigo> ah, fine.

[11:20] <arigo> so yes, maybe you really have to do t = s.decode('msbc')

[11:20] <aleale> He can then hopefully use my implementations of the codecs when he need to grow the encode/decode and translate methods

[11:21] <arigo> I see

[11:21] <arigo> thinking about the levels, it seems that only arre is doing interp-level coding, so he'll have to do something explicit about decoding with argument 'msbc' in the unicode object implementation...

[11:21] <arigo> well it's a bit strange if both codecs and unicode.decode call each other

[11:22] <arigo> ok, I'm starting to be confusing. start again...

[11:22] <aleale> in CPython s.decode('mbcs') means: lookup the encoding 'mbcs' in the codec registry, to find the implementattion of the codec

[11:22] <arigo> ok

[11:22] <aleale> Yes it is strange

[11:23] <arigo> so it seems that you have a situation where you need to call some built-in function to help you.

[11:23] <sanxiyn_> (And 'mbcs' codec is in _codecs, which is built-in module.)

[11:24] <arigo> aleale: what is unicodecodec.py ?

[11:24] <aleale> the actual implementation is then found via the _codecsmodule (which is a thin wrapper to the implementation in unicodeobject.c)

[11:25] <sanxiyn_> I guess unicodecodec.py is a port of codec part of unicodeobject.c.

[11:25] <aleale> unicodecodec is the module holding the reimplementation of the codecs in unicodeobject.c, codecs.c and stringobject.c

[11:25] <arigo> ok

[11:26] <aleale> so _codecs.py is looking much like _codecsmodule.c (thin wrapper)

[11:27] <arigo> I'm wondering what source code it would make sense to have at app- or interp-level

[11:27] <aleale> and unicodecodec is a ugly monster (like unicodeobject.c and friends)

[11:27] <aleale> I have wondered to

[11:28] <arigo> unicodecodec seems to be directly adapted from C code, so it might make sense to keep that at interp-level

[11:28] <aleale> because of the size of the code base I thought in best to have it in applevel (I might be wrong)

[11:28] <sanxiyn_> And _codecs.py at app-level makes sense, I think.

[11:29] <arigo> It's never clear what is best... app-level can be more compact or less compact than interp-level (depending on compiling modes), and it's quite slower in both cases

[11:29] <aleale> hopefully we can use geninterplevel on unicodecodec.py then

[11:29] <arigo> precisely, geninterplevel will make the translated unicodecodec enormous...

[11:30] <arigo> (unless we work more quite a bit more on geninterplevel)

[11:30] <aleale> sure but then again it is adapted from several thousand lines of c code

[11:30] <arigo> yup. for now it actually looks very much RPythonic

[11:31] <aleale> It is copied from the c code and then delete most of the c code again

[11:31] <arigo> :-)

[11:31] <sanxiyn_> I think I noticed it doesn't do buffer-length calculation.

[11:32] <sanxiyn_> (And do ''.join instead.)

[11:32] <arigo> sanxiyn_: I see

[11:32] <arigo> (that's great, it's much less strange code around :-)

[11:32] <aleale> I thought that was the easiest

[11:33] <arigo> sure

[11:34] <arigo> I'm a bit confused, though

[11:34] <arigo> e.g. in PyUnicode_DecodeUTF7

[11:34] <arigo> is 'p' a list through all the function?

[11:35] <arigo> or a unicode object?

[11:35] <aleale> the intention is that 'p' is list

[11:36] <arigo> you never tests that code, then?

[11:36] <arigo> p += '-'

[11:36] <arigo> also, "p, ... = DECODE(p, ...)" but DECODE returns a unicode object as p

[11:37] <aleale> test_codecscallback has utf7 test - but I see the problem in DECODE

[11:37] <arigo> "outpos = p-PyUnicode_AS_UNICODE(unicode)" ? is that just a remaining piece of C code, work in progress?

[11:38] <aleale> I am having trouble locating tests for the _codecs module do you have a hint

[11:39] <aleale> work in progress. I've been focussed onn making test_codecscallback.py pass

[11:40] <arigo> ok

[11:41] <arigo> that makes sense, yes.

[11:42] <sanxiyn_> assert re.compile('foo').pattern == 'foo'

[11:42] <sanxiyn_> What would be needed to pass this on PyPy?

[11:43] <arigo> sanxiyn_: we should re-activate the _sre_pypy wrapper module, in pypy/module/

[11:43] <arigo> then it's the kind of thing that we can implement cleanly

[11:43] <sanxiyn_> I see... should look at it.

[11:45] <arigo> aleale: I think that you need more synchronization with arre about unicodecodec.py

[11:46] <arigo> Samuele tell me that the idea of unicodeobject.py is to use lists of unicode characters internally

[11:46] <arigo> "unicode characters" being one-character unicode strings, internally

[11:46] <arigo> so from this point of view, the work of functions like PyUnicode_DecodeUTF7 is

[11:47] <arigo> to build a list of unicode characters

[11:47] <arigo> i.e. p would be a list, and you use p.append(ch) or p.extend(other_list) or whatever,

[11:47] <arigo> and at the end you can return W_UnicodeObject(space, p)

[11:47] <arigo> (in the model where unicodecodec.py is at interp-level)

[11:50] <arigo> then for MBCS, as PyUnicode_DecodeMBCS would be written at interp-level, it's clearer that you can cheat like this:

[11:51] <arigo> list(u''.join(input_unicode_obj.ob_chars).decode('mbcs'))

[11:51] <arigo> because this is an interp-level call to decode()

[11:51] <arigo> i.e. to CPython's decode()

[11:52] <aleale> so the u''.join(p) is deferred to _codecs

[11:52] <arigo> no:

[11:52] <arigo> a W_UnicodeObject contains internally a list of chars

[11:52] <arigo> and appears to be a single app-level unicode string

[11:52] <arigo> no-one ever joins the characters, essentially

[11:53] <arigo> that's why it's important to distinguish the two levels

[11:53] <aleale> ok

[11:54] <arigo> for mbcs we have some mecanism to say that a specific interp-level helper function needs to be considered and translated in a special way,

[11:55] <arigo> for example:

[11:55] <arigo> def MultiByteToWideChar(mode, input_list_of_chars):

[11:55] <arigo> return list(u''.join(input_list_of_chars).decode('mbcs'))

[11:56] <arigo> writing this at interp-level is a clean encapsulation of what the function of the same name does in C

[11:56] <arigo> then we can really say "by the way, this function corresponds directly to the C function MultiByteToWideChar"

[11:56] <arigo> this is said somewhere else, in a GenC-specific list of special cases.

[11:58] <aleale> ok It sounds like I'll ahve to rewrite the unicodecodecs.py at interplevel

[11:58] <arigo> it shouldn't too much a change, though

[11:58] <arigo> shouldn't be

[11:58] <aleale> and move it to modules?

[11:59] <arigo> yes

[11:59] <arigo> hum.

[12:00] <aleale> The string specific codecs should go into modules/stringcodecs.py

[12:00] <aleale> ?

[12:00] <arigo> from another point of view, unicodecodec.py is a nice PyPy-independent implementation of codecs

[12:00] <aleale> well I dont think it is nice ( not yet anyway )

[12:01] <aleale> to c-ish

[12:02] <arigo> we can think about finding a nice place for unicodecodec.py

[12:02] <arigo> suppose that it'd take lists of characters as input, and produce lists of characters as output, with nothing specific to PyPy

[12:03] <aleale> for now I will go for lunch and then change it into the list of characters after lunch

[12:03] <arigo> then we could wrap it in objspace/std/unicodeobject.py, and objspace/std/stringobject.py, by decomposing and composing W_UnicodeObject around the lists of characters

[12:04] <arigo> or, alternatively, if someone unrelated to PyPy wants (you never know!) unicodes for Python 1.5.2

[12:04] <arigo> then he can define a class UnicodeCharacter and use your module :-)

[12:04] <aleale> Sounds like a plan. Talk to you later

[12:04] <arigo> :-)

[12:05] arigo (~arigo@c-3a8b70d5.022-54-67626719.cust.bredbandsbolaget.se) left irc: "[x]chat"

[12:06] sanxiyn_ (~tinuviel@211.104.100.115) left irc: "Bye"

----- silence for 25 minutes -----

[12:31] pedronis (pedronis@ratthing-b246.strakt.com) joined #pypy.

[12:40] mwh2 (~user@modem-27.erendis.dialup.pol.co.uk) joined #pypy.

[12:45] yuuh (wwhuawyk@dsl-62-220-10-27.berlikomm.net) joined #pypy.

[12:50] cfbolz (~cfbolz@edv01.physi.uni-heidelberg.de) joined #pypy.

[12:50] <cfbolz> hi all!

----- silence for 23 minutes -----

[13:13] <aleale> hi

----- silence for 16 minutes -----

[13:29] yuuh (wwhuawyk@dsl-62-220-10-27.berlikomm.net) left irc: Read error: 110 (Connection timed out)

----- silence for 16 minutes -----

[13:45] arigo (~arigo@ratthing-b407.strakt.com) joined #pypy.

[13:47] <cfbolz> hi

[13:51] <arigo> hi!

[13:55] lac (~lac@c-51c6e055.1321-1-64736c11.cust.bredbandsbolaget.se) joined #pypy.

[13:55] <arigo> hi Laura!

[13:59] lac2 (~lac@c-51c6e055.1321-1-64736c11.cust.bredbandsbolaget.se) joined #pypy.

[13:59] <arigo> hi again Laura :-)

[14:05] ludal (~ludal@logilab.net2.nerim.net) joined #pypy.

[14:06] <ludal> hi

[14:06] <arigo> hi!

[14:06] <cfbolz> hi!

[14:06] <cfbolz> and bye :-)

[14:06] cfbolz (~cfbolz@edv01.physi.uni-heidelberg.de) left irc: "Leaving"

[14:06] <ludal> I had a question on Rpython and modules

[14:07] <ludal> presently I do a getattr(symbol, name) to get the mapping between grammar symbol name and symbol value as defined by the cpython parser

[14:07] <ludal> this could be easily changed to be symbol.__dict__.get(...) and my question is is this enough ?

[14:08] <ludal> note1: symbol is a module

[14:10] <arigo> ludal: where is the symbol module? is that CPython's built-in one?

[14:11] <ludal> yes, but it's a .py module not C

[14:11] <arigo> oh

[14:11] <ludal> I think it's generated at build time

[14:12] <arigo> ok, but symbol.__dict__.get(...) is only better than getattr() if the dict in question is "well-typed"

[14:12] <arigo> which is not the case, as it contains values of various types in addition to the ints you're looking for

[14:12] <ludal> remember that's how we discovered that python on codespeak is a modified version

[14:12] <ludal> ok

[14:12] <arigo> ah, yes

[14:13] <arigo> so you probably need to build a custom dict out of symbol.sym_name, which contains only {'name': integer} entries.

[14:13] <ludal> building it during bootstrapping ?

[14:13] <arigo> yes, at global level.

[14:14] <ludal> I asked this by email but... is __init__.py from module/recparser ok for such things ?

[14:14] mwh2 (~user@modem-27.erendis.dialup.pol.co.uk) left irc: "bye"

[14:14] <arigo> (didn't get to read your e-mail yet)

[14:15] <arigo> but you can put there wherever you like, basically

[14:15] <ludal> no pb

[14:15] <arigo> for example in syntaxtree.py, where it's used

[14:15] <ludal> the question is where to put stuff that needs to be run at bootstrap time

[14:15] <arigo> anywhere global. the modules are fully imported as usual before any compilation is done.

[14:16] <arigo> you can even have bootstrap-time functions; if they are not called after bootstrap, they won't be seen by the translator.

[14:16] <ludal> sorry I don't get it, you need to compile the module to import it

[14:17] <arigo> no, we import it first :-) then we translate (i.e. compile to C) the module directly from what has been loaded in memory

[14:17] <arigo> the translator never reads the Python source code.

[14:17] <ludal> ok get it now

[14:17] <arigo> we're doing veeery strange things at bootstrap time at some places :-)

[14:18] <ludal> I was thinking in the context of executing pypy as a regular interpreter...

[14:19] <arigo> a regular, CPython-like interpreter compiled from C?

[14:20] <arigo> the C is generated by the above trick of "dumping" C code corresponding to code and data in memory, after the whole PyPy has been imported and bootstrapped. (i.e. freezing the state to C)

[14:22] <ludal> ok; I had a fuzzy definition of what bootstrap meant

[14:22] <ludal> ie when does bootstrapping stop?

[14:25] <ludal> so about the visitor used in the code it shouldn't be a problem as, as stated in my mail, it's only used at bootstrap

[14:29] <arigo> (sorry, back)

[14:32] lac2 (~lac@c-51c6e055.1321-1-64736c11.cust.bredbandsbolaget.se) left irc: Remote closed the connection

[14:35] <arigo> "bootstrap" can be described as importing everything, and creating an object space

[14:35] <arigo> see for example .../dist/goal/targetpypymain.py

[14:35] <arigo> def target()

[14:36] <arigo> it creates a 'space = StdObjSpace()'

[14:36] <arigo> it does a few extra initialization things

[14:36] <arigo> until it got a reference to a function that basically handles what py.py does.

[14:38] <arigo> at this point, it doesn't actually call the function (doing so would start executing the user program and/or display an interactive prompt)

[14:38] <arigo> this function is what we translate -- and recursively everything that this function calls, which means basically the whole of PyPy, as already loaded in memory and preinitialized.

[14:38] <ludal> ok

[14:39] <arigo> so you can really do a lot of things during this long bootstrap phase. creating classes dynamically etc.

[14:43] <ludal> totally different subject: I see file is still faked, is there a reimplementation yet or ongoing ?

[14:43] <arigo> (now reading your e-mail) similarly, the EBNFParser with the visitor pattern code can really be called at module import time; it will disappear from the C translation because no one calls it later.

[14:44] <ludal> and indeed it is called from recparser/__init__.py

[14:44] <arigo> files: we have our own implementation, but it's rather slow to import at start-up, so not enabled by default

[14:44] <arigo> __init__.py: here again you can call it from anywhere you like.

[14:45] <arigo> any global module-level.

[14:45] <ludal> file: that's what I thought but I couldn't find with a quick look

[14:45] <arigo> py.py --file

[14:45] <arigo> (a flag recently added to enable it from the command line)

[14:45] <arigo> it's in pypy/lib/_file.py

[14:45] <ludal> ok, actually I'll probably move the call somewhere more appropriate

[14:47] <arigo> the basic bootstrapping rule is easy to follow if you consider 'class' statements as, well statements: they are disallowed after bootstrapping. so any place that uses a class statement can also do any other strange things :-)

[14:49] <ludal> my original idea of bootstrapping was 'everything that got executed directly by cpython *before* pypy starts interpreting stuff'

[14:54] <arigo> yes, it's similar. importing the submodules of recparser is done before PyPy starts interpreting user code. (there is some laziness in importing them, actually, but it's only to speed up the start-up of py.py, and the laziness is forced away if needed by the translator)

----- silence for 17 minutes -----

[15:11] yuuh (kxronqxe@dsl-62-220-8-154.berlikomm.net) joined #pypy.

----- silence for 23 minutes -----

[15:34] mwh2 (~user@modem-122.erendis.dialup.pol.co.uk) joined #pypy.

[15:36] mwh2 (~user@modem-122.erendis.dialup.pol.co.uk) left irc: Remote closed the connection

----- silence for 1 hr and 1 minute -----

[16:37] <aleale> hi

[16:37] <arigo> hi

[16:38] <aleale> Is it ok if I make UnicodeDecodeError/UnicodEncodeError/UnicodeTranslateError __init__ methods check their arguments

[16:39] <aleale> test_codeccallbacks.py test for that (thus the tests fails)

[16:39] <arigo> I guess so, yes

[16:40] <arigo> you know that you should not change that in lib/_exceptions.py directly, though? (see pypy-dev messages of the last couple of days)

[16:40] <aleale> That was the next question

[16:41] <arigo> you should ask Christian or see if it's clear how to change it in the tool/...py file, I'm not sure how it's changed

[16:42] <arigo> ask to pypy-dev, I guess

[16:43] <aleale> Ok will do, thanks

----- silence for 29 minutes -----

[17:12] sanxiyn (tinuviel@222.233.187.44) left #pypy ("Bye").

----- silence for 43 minutes -----

[17:55] arigo (~arigo@ratthing-b407.strakt.com) left irc: "[x]chat"

----- silence for 40 minutes -----

[18:35] adim (adim@logilab.net2.nerim.net) left #pypy.

----- silence for 19 minutes -----

[18:54] arre (ac@ratthing-b3fa.strakt.com) left irc: "using sirc version 2.211+KSIRC/1.3.11"

[19:04] arigo (~arigo@ratthing-b407.strakt.com) joined #pypy.

[19:05] ludal (~ludal@logilab.net2.nerim.net) left irc: "Download Gaim: http://gaim.sourceforge.net/";

----- silence for 53 minutes -----

[19:58] cfbolz (~cfbolz@edv01.physi.uni-heidelberg.de) joined #pypy.

[19:58] <cfbolz> hi!

[20:00] <pedronis> hi

[20:01] <arigo> hi!

[20:01] <cfbolz> cool, 87.41%!

[20:01] <pedronis> cfbolz: we broke llvm with changes today

[20:02] <cfbolz> what did you do?

[20:02] <pedronis> we changed how exception handling propagates exception values

[20:02] <pedronis> there are not constants last_exception and last_exc_value anymore

[20:03] <pedronis> but the links out of an exception exitcase

[20:03] <pedronis> introduce variables

[20:03] <pedronis> they are indetified as link.last_exception and link.last_exc_value

[20:03] <cfbolz> identified how?

[20:03] <pedronis> link.last_exception is a new var

[20:04] <cfbolz> ah

[20:04] <pedronis> that corresponds to what last_exception was before

[20:04] <pedronis> same for last_exc_value

[20:04] <pedronis> basically instead of passing constant to the next block

[20:04] <pedronis> the args of the link contain this variables

[20:05] <pedronis> wich are distinguished

[20:05] <pedronis> by being also attached through the last_* attributes of the link

[20:05] <pedronis> normal link have the attributes set to None

[20:05] <pedronis> fixing the other generatos would relatively easy

[20:05] <pedronis> but genllvm is doing quite a lot of things and special casing about exceptions

[20:06] <pedronis> the reason for the change is that

[20:06] <cfbolz> yes, exceptions are a bit hackish in genllvm

[20:06] <pedronis> in some corner cases the old constants could get propagegate at a distant

[20:06] <cfbolz> I'll look into it (though I won't have time for it before friday)

[20:07] <pedronis> that means show up as inputargs of some later block

[20:07] <pedronis> and then it gets hard to attach type to them

[20:07] <pedronis> because the origin is unclear

[20:07] <pedronis> also naively substituing them in the generators may do the wrong thing

[20:08] <pedronis> using variables instead it means that normal progation (not at a distance) happens

[20:08] <pedronis> wich is saner

[20:08] <cfbolz> ok

[20:10] <pedronis> the change was best done as soon as possible because ther more graph transformation we add the better it is if the graph model is sane and stable

[20:10] <pedronis> otherwise we get to change even more places at a later point in the future

[20:11] <cfbolz> makes sense

[20:12] <cfbolz> it doesn't affect genllvm too much since the exception implementation has to be refined anyway

[20:14] <pedronis> yes, I run the tests before doing the change and one that seemed related to exceptions was failing

[20:14] <cfbolz> do you still know which one?

[20:15] <cfbolz> a recent change must have broken that, it worked last week

[20:15] <pedronis> well, Christian has also been working on things and changing stuff

[20:15] <pedronis> so that's possible

[20:16] <cfbolz> ok. I'm a bit short on time at the moment (another exam), so I can't track it all.

[20:16] <pedronis> test_catch_instance

[20:17] <pedronis> was already failing before the changes

[20:17] <cfbolz> thanks.

[20:18] <cfbolz> I'll try to find some time to fix it.

[20:25] <pedronis> cfbolz: FYI, I'm about to check some tweaks such at least tests unrelated to exceptions pass again using some dummy objects for last_exception and last_exc_value

[20:26] <pedronis> that are not there anymore

[20:27] <pedronis> well last_exception is still there but is used only to mark the exitswitch

[20:28] <cfbolz> ah, it fails in some get because it can't find last_exception and last_exc_value anymore

[20:29] <pedronis> ok, I have checked in

[20:29] <cfbolz> thanks

[20:29] <pedronis> failure is a less bit dramatic now

[20:30] <cfbolz> how much is failing (I have no llvm here)?

[20:32] <pedronis> 2 tests

[20:32] <pedronis> now

[20:32] <pedronis> test_catch_instance (which was already failing for different reasons)

[20:32] <pedronis> and

[20:33] <pedronis> test_try_raise_choose

[20:33] <pedronis> as I said fixing the other generatros was not much work as you can see from my checkin

[20:33] <pedronis> but in genllvm exception handling is more spread out

[20:34] <cfbolz> yes. It still needs a lot of tweaking.

----- silence for 19 minutes -----

[20:53] <cfbolz> I have to go. See you!

[20:56] cfbolz (~cfbolz@edv01.physi.uni-heidelberg.de) left irc: "Leaving"

----- silence for 57 minutes -----

[21:53] aleale (~root@cpe.atm0-0-0-129140.0x3ef2fa3a.bynxx3.customer.tele.dk) left irc: "Eject! Eject! Eject!"

[22:06] arigo (~arigo@ratthing-b407.strakt.com) left irc: Remote closed the connection

[22:08] pedronis (pedronis@ratthing-b246.strakt.com) left irc: Remote closed the connection

----- silence for 16 minutes -----

[22:24] ericvrp (~a@ericvrp.demon.nl) joined #pypy.

[22:27] ericvrp (~a@ericvrp.demon.nl) left irc:

----- silence for 44 minutes -----

[23:11] aleale (~chatzilla@0x535ca5a5.hrnxx9.adsl-dhcp.tele.dk) joined #pypy.

----- silence for 38 minutes -----

[23:49] aleale (~chatzilla@0x535ca5a5.hrnxx9.adsl-dhcp.tele.dk) left irc: "Chatzilla 0.9.68a [Firefox 1.0.3/20050414]"

[00:00] --- Tue May 10 2005