Closed Bug 762480 Opened 12 years ago Closed 12 years ago

IonMonkey: Inline more unary math functions

Categories

(Core :: JavaScript Engine, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: jandem, Assigned: jandem)

References

(Blocks 1 open bug)

Details

Attachments

(1 file)

For Kraken darkroom we need Math.log to be fast. On a typical micro-benchmark we're slower than V8.

As a first step we should inline a call to a "double log(MathCache *, double)" helper (and sin, cos, tan). This should be pretty straight-forward and if it does not help much we can try to inline more.
Attached patch PatchSplinter Review
Inlines Math.{log, sin, cos, tan} by calling a stub. Flagging Marty for the ARM changes.

This patch itself is a small win on Kraken darkroom, but combined with some inlining patches this will allow us to hoist a loop-invariant Math.log and that will help a lot more.
Attachment #633179 - Flags: review?(mrosenberg)
Attachment #633179 - Flags: review?(dvander)
Attachment #633179 - Flags: review?(mrosenberg) → review+
Comment on attachment 633179 [details] [diff] [review]
Patch

Review of attachment 633179 [details] [diff] [review]:
-----------------------------------------------------------------

::: js/src/ion/CodeGenerator.cpp
@@ +1249,5 @@
> +      default:
> +        JS_NOT_REACHED("Unknown math function");
> +    }
> +
> +    masm.callWithABI(funptr, masm.DOUBLE);

Interesting, this doesn't have to be MacroAssembler::DOUBLE?
Attachment #633179 - Flags: review?(dvander) → review+
https://hg.mozilla.org/projects/ionmonkey/rev/c980045c4077

(In reply to David Anderson [:dvander] from comment #2)
> 
> Interesting, this doesn't have to be MacroAssembler::DOUBLE?

Both Clang and GCC 4.2 didn't complain. I changed it to MacroAssembler::DOUBLE though, makes more sense indeed.
Status: ASSIGNED → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.