Closed Bug 514066 Opened 16 years ago Closed 16 years ago

TM: Make short functions in LIR.cpp inline [nanojit]

Categories

(Core :: JavaScript Engine, defect)

x86
macOS
defect
Not set
normal

Tracking

()

RESOLVED FIXED
Tracking Status
status1.9.2 --- beta1-fixed

People

(Reporter: gal, Assigned: n.nethercote)

References

Details

(Whiteboard: fixed-in-tracemonkey)

Attachments

(1 file)

A bunch of short methods of LIns are implemented in LIR.cpp. We should make those inline. The prolog/epilog overhead is killing us according to shark.
I've seen it for imm64f(), maybe imm64(), not sure about others.
Functions that contain less code than the call to them should generally be inline (return oprnd1() i.e.)
This depends on bug 512824 because the patch for bug 512824 inlines some of these functions, so work on this should wait until that's landed to avoid conflicts.
Depends on: 512824
Assignee: general → nnethercote
Attached patch patchSplinter Review
This patch inlines all remaining functions in class LIns except for staticSanityCheck() and isFloat(). isFloat() contains a switch, and is currently unused in TM anyway. Stats: - 'js' code size: 1,430,580 bytes -> 1,426,184 bytes - instructions executed for 3d-raytrace: 244,466,449 -> 242,067,356 - SunSpider overall results: ** TOTAL **: 1.006x as fast 897.7ms +/- 0.1% 892.1ms +/- 0.1% significant Inlining FTW!
Attachment #399646 - Flags: review?(gal)
Attachment #399646 - Flags: review?(gal) → review+
Whiteboard: fixed-in-tracemonkey
Status: NEW → RESOLVED
Closed: 16 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: