Sure, I will. You are very helpful, really. A very silly question, I am a newbie to v8, so my ways to try to understand v8 is:
1) build and run benchmark (with flags), which gives me some feeling about v8; 2) read blogs and see video, which gives me basic ideas; 3) refer to the code, however, the code is too much for me, and I want to quickly grab how all the parts work together (for example, I see there are hydrogen, ic, lithium, even build graph and build optimized graph, however, I still now how all the things work together); 4) refer to "git log" to see the changes, still very hard; Could you give me some suggestions that I can see how the parts work together? All I can think (maybe my next step) is to use gdb to step through function calls, which is tooo inefficient as to huge v8. Sincerely, Amy On Sun, Apr 14, 2013 at 2:16 PM, Jakob Kummerow <[email protected]>wrote: > On Sun, Apr 14, 2013 at 11:09 PM, Yue Xing <[email protected]> wrote: > >> Jakob, Thanks very much! It helps a lot. >> >> One more question related to your answer, my understanding about >> de-optimization is that it happens during execution time when some guard is >> compromised, then the de-opt instruction(s) are invoked. In the >> compilation/optimization time, the de-opt instruction(s) are inserted at >> potential points. Is this correct? >> > > Yes. > > >> I read through the hydrogen.cc and I saw some checkXXX instructions. Are >> those also used for the potential de-opt points? >> > > Yes. > But you won't see all possible deoptimizations explicitly on the Hydrogen > level. Look for uses of DeoptimizeIf() in > src/$ARCH/lithium-codegen-$ARCH.cc for more. > > >> Sincerely, >> Amy >> >> >> On Sun, Apr 14, 2013 at 1:22 PM, Jakob Kummerow >> <[email protected]>wrote: >> >>> There's no direct relationship between AddSimulate() and >>> FinishExitWithDeoptimization(). Both are helper methods to add certain >>> HInstructions to the Hydrogen instruction graph. >>> >>> Simulates are "safe points" or "snapshots" of the compiler's >>> "environment", which reflects the execution state of the program, live >>> values on the stack and such. Simulates have associated program counter >>> addresses in both optimized and unoptimized code that can be translated to >>> each other. When a deoptimization happens, execution resumes at the address >>> in unoptimized code that corresponds to the last simulate *(or basic >>> block entry)* before the deopt point. That's why there must generally >>> be a simulate after each instruction with observable side effects, i.e. >>> after anything that can't just be skipped or re-executed. >>> >>> FinishExitWithDeoptimization() is just one of many ways of creating >>> potential deoptimization points. Its purpose is situations like "insert an >>> instruction to compare the hidden class of this object; if it's class A >>> jump to block X which will handle that, if it's B jump to block Y; >>> otherwise insert an unconditional Deopt instruction and then finish the >>> current block". >>> >>> "The deoptimization stuff" is tricky business involving replacing the >>> current stack of the optimized code with what the unoptimized code expects. >>> If you're interested in the details, you should look at the source code. >>> >>> ICs are not related to deoptimization. >>> >>> >>> On Sun, Apr 14, 2013 at 6:26 AM, Amy <[email protected]> wrote: >>> >>>> From a google v8 video, I heard that the simulate instruction is for >>>> the de-optimization. I went through the code and found out there >>>> is AddSimulate() appearing in the BasicBlock, GraphBuilder, and >>>> CodeStubGraphBuilder, etc., while FinishExitWithDeoptimize() in the >>>> OptimizedGraphBuilder. >>>> >>>> My feeling is that maybe AddSimulate() is like a setLongJump(); >>>> while FinishExitWithDeoptimize() will do a longJump(). Is this feeling >>>> correct? >>>> >>>> How the de-optimization stuff work? >>>> >>>> What about IC related to de-optimization? >>>> >>>> Thanks very much. >>>> >>>> -- >>>> -- >>>> v8-users mailing list >>>> [email protected] >>>> http://groups.google.com/group/v8-users >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "v8-users" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> >>>> For more options, visit https://groups.google.com/groups/opt_out. >>>> >>>> >>>> >>> >>> -- >>> -- >>> v8-users mailing list >>> [email protected] >>> http://groups.google.com/group/v8-users >>> --- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "v8-users" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/d/topic/v8-users/gE7UZAw8AMs/unsubscribe?hl=en >>> . >>> To unsubscribe from this group and all its topics, send an email to >>> [email protected]. >>> >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >>> >>> >> >> -- >> -- >> v8-users mailing list >> [email protected] >> http://groups.google.com/group/v8-users >> --- >> You received this message because you are subscribed to the Google Groups >> "v8-users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> >> > > -- > -- > v8-users mailing list > [email protected] > http://groups.google.com/group/v8-users > --- > You received this message because you are subscribed to a topic in the > Google Groups "v8-users" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/v8-users/gE7UZAw8AMs/unsubscribe?hl=en. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- -- v8-users mailing list [email protected] http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
