Closed Bug 552150 Opened 15 years ago Closed 12 years ago

JM: Dynamically generate trampolines

Categories

(Core :: JavaScript Engine, defect)

x86
Linux
defect
Not set
normal

Tracking

()

RESOLVED INVALID

People

(Reporter: dvander, Unassigned)

References

Details

Right now our trampolines are inline assembly. We should probably dynamically generate them instead, This is advantageous for two reasons: - It's easier to make sure the code is correct across VMFrame adjustments, rather than static asserts w/ hardcoded offsets. - We can share code across similar operating systems/platforms (right now Windows/Linux x86 and x64 are very similar). - Easier to port x64, which has no inline assembly and thus requires using an external assembler.
Right now I would like to call JaegerTrampoline() with an arbitrary inlineCallCount, but I can't because cx->fp's return address ends up as the trampoline return address. Luke pointed out I could fix this by having a second trampoline that uses "push ; jmp" instead of "call". So there's another good reason to dynamically generate these things instead of having lots of duplication.
Groundwork has been laid for this in my patch for bug 570650. Unless someone really wants this to happen sooner, I was going to move over all the other trampolines after I finish the rest of the blockers for JaegerDebug.
JM has been removed from the tree, replaced by Ion and Baseline. Ion's trampolines are dynamically generated.
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → INVALID
You need to log in before you can comment on or make changes to this bug.