Closed Bug 456431 Opened 16 years ago Closed 16 years ago

TM: Support thin loops (iteration < 2) by closing the loop even if we are on the last iteration.

Categories

(Core :: JavaScript Engine, defect)

x86
macOS
defect
Not set
normal

Tracking

()

VERIFIED FIXED

People

(Reporter: gal, Assigned: gal)

References

Details

(Keywords: testcase, verified1.9.1)

Attachments

(1 file, 6 obsolete files)

      No description provided.
Attached patch incomplete patch, wip (obsolete) — Splinter Review
Blocks: 454516
Blocks: 454556
TraceMonkey performance improvement == Wanted for 1.9.1!
Flags: wanted1.9.1?
From my understanding this should block as its predecessor (bug 454556 which was resolved fixed?) was a blocker, requesting blocking 1.9.1?
Flags: blocking1.9.1?
Attached patch current status, wip (obsolete) — Splinter Review
This bug is on top of my list atm, so blocking or not it will get done pretty soon.
Attachment #339829 - Attachment is obsolete: true
Attachment #342192 - Attachment is obsolete: true
Attachment #342207 - Attachment is patch: true
Attachment #342207 - Attachment mime type: application/octet-stream → text/plain
Attached patch mostly working patch, wip (obsolete) — Splinter Review
Another update. We pass some simple test-cases now but iloop on this one:

function testDivisionFloat() {
    var a = 32768;
    var b;
    while (b !== 1) {
        b = a >> 1;
        a = b;
    }
    return a === 1;
}
testDivisionFloat();

Needs a bit more debugging.
Attachment #342207 - Attachment is obsolete: true
Attached patch patch (obsolete) — Splinter Review
Working patch. We trace a new loop in xparb which exposes a bug (we don't blacklist on unstable loop types, separate bug & patch to follow for that).
Attachment #342213 - Attachment is obsolete: true
This patch also removes outerlining which is no longer necessary.
Depends on: 459174
With 459174 the patch works now.

fannkuch regresses by 20ms. 
nbody speeds up by 10ms.

Multi trees might affect this numbers. I am tempted to push since this patch removes reliance on outerlining for thin loops, and it might help the multi tree patch gain back the current perf losses.
Attached patch patch (obsolete) — Splinter Review
Attachment #342371 - Attachment is obsolete: true
Attachment #342380 - Flags: review?(danderson)
Attachment #342380 - Flags: review?(bzbarsky)
Asking bz for additional review since I touch his test in trace-tests. Will commit without his nod, just want to make sure he sees what I changed.
Attachment #342380 - Attachment is obsolete: true
Attachment #342388 - Flags: review?(danderson)
Attachment #342380 - Flags: review?(danderson)
Attachment #342380 - Flags: review?(bzbarsky)
Attachment #342388 - Flags: review?(danderson) → review+
Comment on attachment 342388 [details] [diff] [review]
removed unused negate argument

Will be very nice to have this -- r=me with silly nits

>+static bool
>+js_isLoopEdge(jsbytecode* pc, jsbytecode* header)

Capitalize "is" for consistency maybe.

>+    void trackLoopEdges();

Is that still needed or is it dead?
Status: ASSIGNED → RESOLVED
Closed: 16 years ago
Resolution: --- → FIXED
Keywords: testcase
already in j1_8_1/trace/trace-test.js
Flags: in-testsuite+
Flags: in-litmus-
Flags: wanted1.9.1?
Flags: wanted1.9.1+
Flags: blocking1.9.1?
Flags: blocking1.9.1+
Flags: wanted1.9.1+
Keywords: fixed1.9.1
v 1.9.1, 1.9.2
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: