[Development] Qt 5.9's new garbage collector documentation? + root_ptr
Phil Bouchard
philippeb8 at gmail.com
Sun Jul 16 04:10:26 CEST 2017
On 07/15/2017 09:46 PM, Phil Bouchard wrote:
> On 07/15/2017 07:32 PM, Phil Bouchard wrote:
>> On 07/15/2017 04:58 PM, Phil Bouchard wrote:
>>> On 07/15/2017 02:26 PM, Phil Bouchard wrote:
>>>> On 07/15/2017 02:17 PM, Tim Blechmann wrote:
>>>>>>> fwiw, to get this thread back to the main topic, i still fail to see
>>>>>>> how
>>>>>>> root_ptr deals with objects which are reachable from multiple roots,
>>>>>>> which have independent lifetime
>>>>>>
>>>>>> Please provide an example.
>>>>>
>>>>> i've posted some already
>>>>
>>>> I'm working on the parser right now but I thought I proved my point
>>>> with
>>>> the following code:
>>>>
>>>> var temporary = 0;
>>>>
>>>> var bar = function (object)
>>>> {
>>>> return 10;
>>>> };
>>>>
>>>> var foo = function ()
>>>> {
>>>> var object;
>>>> var result = function() { return object; };
>>>> return function() { return bar( object ); };
>>>> };
>>>>
>>>> for (var i = 0; i < 1000000; ++ i)
>>>> console_log((foo())(temporary));
>>>
>>> Alright I got good news: the parser already generates code that compiles
>>> and works!
>>>
>>> I still need to fix minor issues but I am on the right path.
>>
>> Alright... it's good enough now so you try it out yourselves (BTW I
>> added the keyword: "extern" so you can already mix C++ code with
>> Javascript).
>>
>>
>> Instructions (you'll need: Boost, Flex, Bison, Qt):
>>
>> 1) Get the following code: https://github.com/philippeb8/root_ptr/tree/qt
>>
>> 2) In "example/js2cpp", type:
>> $ qmake
>> $ make
>> $ ./js2cpp < tests/input1.js > tmp.cpp
>> $ g++ -std=c++11 -O2 -Iinclude -I../../include tmp.cpp -otmp
>> -lboost_system
>> $ time ./tmp
>> int main()
>>
>> real 0m1.581s
>> user 0m1.581s
>> sys 0m0.000s
>>
>>
>> TODO:
>>
>> 1) Finish removing all dependencies from Boost
>>
>> 2) Figure a way to have variadic number of arguments for functions
>>
>> 3) Create local variables linked to the function arguments
>>
>> 4) Fix a -DBOOST_DISABLE_THREADS that is not working for some reason
>>
>> 5) ...
>
> Actually there seem to have a bug in g++-4.8 so please use g++-4.9 as
> follows:
>
> g++-4.9 -DBOOST_DISABLE_THREADS -std=c++11 -O2 -I./include
> -I../../include tmp.cpp -otmp -lboost_system
... and it's still exactly twice as fast as Node.JS.
More information about the Development
mailing list