[Webkit-unassigned] [Bug 91052] JSC: LLInt should auto-generate our cross-platform C++ interpreter

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Aug 13 16:25:13 PDT 2012


https://bugs.webkit.org/show_bug.cgi?id=91052





--- Comment #10 from Filip Pizlo <fpizlo at apple.com>  2012-08-13 16:25:43 PST ---
(In reply to comment #9)
> (In reply to comment #8)
> > > >> Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:92
> > > >> +end
> > > > 
> > > > Why do you need this?
> > > > 
> > > > Why isn't the translation of jmp <address> just:
> > > > 
> > > > // the function you generate from the offlineasm
> > > > enum LLIntGlobalLabels {
> > > >     _llint_op_something,
> > > >     // ... lots more
> > > > };
> > > > void cLoop() {
> > > >     LLIntGlobalLabels nextPC;
> > > >     for (;;) {
> > > >         switch (nextPC) {
> > > >         case _llint_op_something:
> > > >             // translation of jmp [PC]
> > > >             nextPC = *bitwise_cast<LLIntGlobalLabels*>(PC);
> > > >             continue;
> > > >         // more things
> > > >         }
> > > >     }
> > > > }
> > > 
> > > Because there are local labels where a jump to it really means a jump as opposed to goto next opcode.  I need to be able to distinguish between the 2.  One alternative is to make the C loop backend aware that the branch target specifier is the vPC, and use that as the distinguishing factor.  I can see if I can make that work later.
> > 
> > But the offlineasm already distinguishes by those two uses of jmp.  It already has the notion of local labels, and global labels.
> 
> The offlineasm distinguishes the declaration of the local and global labels.  However, the jump sites uses the same vanilla imp instruction.  In my case, I need the imp instruction to behave differently depending on which type of jump target we're jumping to.

It also distinguishes between references to labels.  You *always know* whether you're jumping to a local or global label.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list