[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:23:36 PDT 2012


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





--- Comment #9 from Mark Lam <mark.lam at apple.com>  2012-08-13 16:24:06 PST ---
(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.

-- 
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