协程
文章平均质量分 77
yueyemaitian
这个作者很懒,什么都没留下…
展开
-
java协程框架----kilim实现机制解析
java语言处理多任务的模式是基于多线程,java语言级别原生并不支持协程,我们想要java语言支持协程,就需要在线程和协程之间架起一道桥梁。在某个事件点(我们成为挂起点)上,我们在应用级别备份当前任务在线程上的调用栈信息(包括局部变量和操作栈上的数据),释放线程,让它去执行下一个任务;等某些事件被触发的时候,重新执行刚才的任务,用之前备份的调用栈信息恢复线程的调用栈,从挂起点开始执行。...原创 2013-03-08 16:14:32 · 585 阅读 · 0 评论 -
Kilim源码分析之二 ---- 织入入口及可织入判断
1、织入入口,配置 1.1、织入入口 kilim.tools.Weaver是织入的主类,通过程序参数设置要织入的代码路径,可以是class文件、jar包、其他(是什么)、目录(目录中可以是jar包、class文件)。 如果传入的是class文件,会直接织入;调用kilim.tools.Weaver.weaveFile(String, InputS...原创 2013-03-20 19:33:52 · 239 阅读 · 0 评论 -
Kilim源码分析之三 ---- 织入之构造/合并BasicBlock
上一篇分析了可织入判断的代码,本篇继续分析织入部分的构造/合并BasicBlock。 首先看下分析方法kilim.analysis.MethodFlow.analyze()包含的功能: //织入逻辑 public void analyze() throws KilimException { buildBasicBlock...原创 2013-03-20 19:50:17 · 320 阅读 · 0 评论 -
Kilim源码分析之四 ---- 织入之内联subroutine
小于1.5编译级别时,如果不显示inline try/catch/finally块,try/catch和any会产生的jsr指令跳转到finally。此处分析kilim如何对这种情况下的jsr指令进行内联:finally块中有pausable则会被拷贝一份;finally块中有pausable则会把jsr/ret指令都替换为goto指令,但是并没有像1.5及以后编译级别那样,拷...原创 2013-03-20 20:00:50 · 193 阅读 · 0 评论 -
Kilim源码分析之五 ---- 织入之变量活跃性分析
/** * In live var analysis a BB asks its successor (in essence) about which * vars are live, mixes it with its own uses and defs and passes on a * new list of live vars to i...原创 2013-03-20 21:00:28 · 205 阅读 · 0 评论