From: Feng Q. <fen...@ma...> - 2004-03-04 03:33:37
|
Hi, Currently OSR is used as follows: 1. opt compiler knows where to put OSR instructions in your program. One example is to replace uncommon path by an OSR instruction. 2. at very low level of opt compiler, OSR instructions were tranferred to special OSR thread-switch points. At runtime, if an OSR thread-switch point is executed, the thread is suspended and is put in a queue waiting for on-stack replacement. A control thread does actual work, which operates the suspended thread. After OSR was done, the suspended thread is rescheduled to run with specialized code and replaced stack frame. All code related to OSR is protected by the RVM_WITH_OSR preprocessing directive. The detailed design and implementation can be found in our CGO'03 paper from publication page. Cheers, Feng wong chi-leung wrote: >Hello, > >I would like to use OSR in Jikes RVM 2.3.1. This is used for speculative >compilation. Consider the following program: > >f() { > while () { > ... > } >} > >the method f() is a long running method compiled based on a >speculative assumption. Suppose at some point the assumption is found >to be wrong (e.g due to classloading), how can we trigger OSR to >invalidate f()? I looked at the invalidation code w.r.t. inlining >(specifically OPT_InvalidationDatabase.java and >OPT_ClassLoadingDependencyManager.java) but could not see OSR code there. > >Any helps are appreciated. > >Thanks, > >david >_______________________________________________ >Jikesrvm-researchers mailing list >Jik...@os... >http://www-124.ibm.com/developerworks/oss/mailman/listinfo/jikesrvm-researchers > > |