[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Tinycc-devel] make tcc reentrant
From: |
ag |
Subject: |
Re: [Tinycc-devel] make tcc reentrant |
Date: |
Fri, 6 Dec 2019 21:47:39 +0200 |
User-agent: |
Mutt/1.12.1 (2019-06-15) |
On Fri, Dec 06, at 03:42 Michael Matz wrote:
> Hello,
>
> On Tue, 3 Dec 2019, Ulrich Schmidt wrote:
>
> > i try to write a lua binding for tcc. To work out propperly, the tcc lib
> > needs to be reentrant.
>
> As demonstrated down-thread, that isn't correct. It doesn't _need_ to be,
> it would be an feature. As usual with features it needs to be measured
> against the downsides. The downsides for your proposed changes are the
> following at least:
> 1) more complicated/boiler-platy source code of TCC (a TCCState
> argument almost everywhere)
> 2) slower code: most of the time the indirection through a pointer
> variable (the state) in comparison to a direct access to a static
> variable doesn't matter. But it does matter for the symbol/token
> table (and potentially for the register/evaluation stack). I have
> measured this years ago for the token table, so this might or might not
> still be the case.
>
> So, while I can see the wish for this feature, I don't necessarily see
> that tcc should be changed to accomodate.
>
> If anything I would expect a _complete_ transition to exist, in order to
> measure the impact. The worst thing that could happen is if someone added
> TCCState arguments everywhere, moved some static variables to that state,
> and then leaves: none of the features of this whole excercise would be
> had, but all the downsides would be there.
>
> And yes, this is a big project. I really think it would be better
> if you simply write a wrapper for libtcc that ensures single-threadedness
> and that regards TCCState as a singleton. I think such thing would be
> well-suited in the TCC sources itself.
>
> (In a way it seems prudent for a tiny C compiler to only be usable as a
> singleton)
I maybe understand, that a C compiler would be best as a singleton, as a
state can influence unexpectedly the other states (unless (perhaps like in
this case as it would be under Lua control) there is a mechanism to handle
gracefully any errors)), and i can trust you about the "direct access to static
variables", but how about an (probably predefined (even with a compile option)
__array__ of states (under a single-thread), and expose it generiously and with
a pleasure to the user responsibility, without tcc guilties (if any)?
Perhaps can even implement this mechanism (to have a control of the environment)
by it's own.
Anyway C is unsafe by default (if it is that worry).
> Ciao,
> Michael.
Best,
Αγαθοκλής
> >
> > I took a look into the sources and found some comments (XXX:...) and
> > started with removing
> >
> > the static var tcc_state. As a result allmost all lib functions needs a
> > 1st parameter of
> >
> > type TCCState*. I did this in my own local branch and tcc is still
> > running :).
> >
> > But this is a really HUGE change. in addition most of the local vars in
> > tccpp, tccgen, ... needs
> >
> > to be moved to TCCState. I can do that but at some points i will have
> > some questions and i
> >
> > can only test on windows and probably on linux.
> >
> > My 1st question is: Are you interested in these changes or should i do
> > this locally?
> >
> > I would like to this together with you.
> >
> >
> > Greetings.
> >
> > Ulrich.
- Re: [Tinycc-devel] make tcc reentrant, (continued)
- Re: [Tinycc-devel] make tcc reentrant, uso ewin, 2019/12/03
- Re: [Tinycc-devel] make tcc reentrant, Ulrich Schmidt, 2019/12/03
- Re: [Tinycc-devel] make tcc reentrant, Karl Yerkes, 2019/12/06
- Re: [Tinycc-devel] make tcc reentrant, Ulrich Schmidt, 2019/12/11
- Re: [Tinycc-devel] make tcc reentrant, Ulrich Schmidt, 2019/12/13
Re: [Tinycc-devel] make tcc reentrant, Michael Matz, 2019/12/06
- Re: [Tinycc-devel] make tcc reentrant,
ag <=
- Re: [Tinycc-devel] make tcc reentrant, Charles Lohr, 2019/12/06
- Re: [Tinycc-devel] make tcc reentrant, Domingo Alvarez Duarte, 2019/12/07
- Re: [Tinycc-devel] make tcc reentrant, Ulrich Schmidt, 2019/12/07
- Re: [Tinycc-devel] make tcc reentrant, Daniel Glöckner, 2019/12/07
- Re: [Tinycc-devel] make tcc reentrant, uso ewin, 2019/12/08
- Re: [Tinycc-devel] make tcc reentrant, Ulrich Schmidt, 2019/12/08
- Re: [Tinycc-devel] make tcc reentrant, Michael Matz, 2019/12/09
- Re: [Tinycc-devel] make tcc reentrant, Michael Matz, 2019/12/09
Re: [Tinycc-devel] make tcc reentrant, Michael Matz, 2019/12/09
Re: [Tinycc-devel] make tcc reentrant, Ulrich Schmidt, 2019/12/09