weolar / blinkgc Goto Github PK
View Code? Open in Web Editor NEW从blink里剥离的垃圾回收组件, 能让c++拥有java一样的自动垃圾回收机制
从blink里剥离的垃圾回收组件, 能让c++拥有java一样的自动垃圾回收机制
对这个项目蛮感兴趣的,希望作者添加更多项目描述,以及当前的项目状态!
非常感谢楼主的分享,剥离GC不易,我在测试过程中,遇到如下的小问题,跟大家分享一下:
在最初的blink initialize时候调用ThreadState::current()->addInterruptor(s_isolateInterruptor);这句代码应该是和V8相关的,我查了一下,在这之前有初始化s_isolateInterruptor的一个操作,但是楼主的源码中没有出现,之前是如下这样的:
s_isolateInterruptor = new V8IsolateInterruptor(V8PerIsolateData::mainThreadIsolate());
ThreadState::current()->addInterruptor(s_isolateInterruptor);
这套GC代码在不涉及多线程时候可以稳定运行,但是多线程运行到请求中断时interruptor->requestInterrupt();,因为s_isolateInterruptor未被初始化,所以产生null指针访问,导致程序奔溃。
可以直接屏蔽掉这段代码(ThreadState::current()->addInterruptor(s_isolateInterruptor);),不要在一开始给main thread添加这个null的中断。
x64编译的时候出现一大堆错误,经过一一解决后,只剩下“pushAllRegisters”这个问题没有解决:
1>SafePoint.obj : error LNK2019: 无法解析的外部符号 pushAllRegisters,该符号在函数 "public: void __cdecl blink::SafePointBarrier::enterSafePoint(class blink::ThreadState *)" (?enterSafePoint@SafePointBarrier@blink@@QEAAXPEAVThreadState@2@@z) 中被引用
1>C:\Users\Administrator\Desktop\blinkgc-master\x64\Debug\blinkgc.exe : fatal error LNK1120: 1 个无法解析的外部命令
我看到“platform\heap\asm”目录里有这些文件里定义了“pushAllRegisters”:
SaveRegisters_arm.S
SaveRegisters_arm64.S
SaveRegisters_mips.S
SaveRegisters_mips64.S
SaveRegisters_x86.asm
我该使用哪一个进行内联编译呢?
官方的代码修改很多次了,这里还是16年的。支持下作者。C++**!
在知乎上看到了你写的关于blinkgc,非常感兴趣,可是用vs2015打开,并配置了头文件,还是有很多编译错误。可以详细说明下使用的编译工具以及配置情况呢。多谢。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.