Messages in this thread | | | Date | Tue, 19 Oct 2010 23:07:47 +0200 (CEST) | From | Thomas Gleixner <> | Subject | Re: [PATCH] tracing: Cleanup the convoluted softirq tracepoints |
| |
On Tue, 19 Oct 2010, Steven Rostedt wrote: > On Tue, 2010-10-19 at 21:49 +0200, Thomas Gleixner wrote: > > So that saves _TWO_ bytes of text and replaces: > > > > - 1e: 83 3d 00 00 00 00 00 cmpl $0x0,0x0(%rip) # 25 <test+0x25> > > - 25: 74 4d je 74 <test+0x74> > > + 1e: e9 00 00 00 00 jmpq 23 <test+0x23> > > + 23: eb 4d jmp 72 <test+0x72> > > > > So it trades a conditional vs. two jumps ? WTF ?? > > Well, the one jmpq is noped out, and the jmp is non conditional. I've
What are you smoking ?
In case the trace point is enabled the jmpq is there, so it jumps to 23 and jumps from there to 72.
In case the trace point is disabled the jmpq is noped out, so it jumps to 72 directly.
> always thought a non conditional jmp was faster than a conditional one,
I always thought, that at least some of the stuff which comes from tracing folks makes some sense.
> since there's no need to go into the branch prediction logic. The CPU > can simply skip to the code to jump next. Of counse, this pollutes the > I$.
We might consult Mathieu for further useless blurb on how CPUs work around broken code.
Thanks,
tglx
| |