WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
NEW
Bug 96916
Make the old JIT not rely on the timeout check register
https://bugs.webkit.org/show_bug.cgi?id=96916
Summary
Make the old JIT not rely on the timeout check register
Gabor Ballabas
Reported
2012-09-17 06:32:18 PDT
First step to solve this DFG-JIT related bug:
https://bugs.webkit.org/show_bug.cgi?id=79040
Attachments
Patch
(12.76 KB, patch)
2012-09-17 06:38 PDT
,
Gabor Ballabas
no flags
Details
Formatted Diff
Diff
Updated patch
(12.82 KB, patch)
2012-09-27 09:33 PDT
,
Gabor Ballabas
no flags
Details
Formatted Diff
Diff
Rebased patch
(12.80 KB, patch)
2012-11-12 04:32 PST
,
Gabor Ballabas
ggaren
: review-
Details
Formatted Diff
Diff
Show Obsolete
(2)
View All
Add attachment
proposed patch, testcase, etc.
Gabor Ballabas
Comment 1
2012-09-17 06:38:26 PDT
Created
attachment 164384
[details]
Patch MIPS and SH4 versions of the emitTimeoutCheck function has been left as they were (with added ifdef guards) due to lack of any kind of device or buildbot for testing the changes.
Gergely Kis
Comment 2
2012-09-18 13:02:40 PDT
Add Balázs and myself to the CC list to track for MIPS support.
Gabor Ballabas
Comment 3
2012-09-27 09:33:45 PDT
Created
attachment 166020
[details]
Updated patch
Csaba Osztrogonác
Comment 4
2012-10-30 09:36:56 PDT
Ping for review?
Csaba Osztrogonác
Comment 5
2012-11-05 10:08:02 PST
(In reply to
comment #3
)
> Created an attachment (id=166020) [details] > Updated patch
Unfortunately it isn't applyable now. Could you rebase the patch to ToT, please?
Gabor Ballabas
Comment 6
2012-11-12 04:32:45 PST
Created
attachment 173616
[details]
Rebased patch
Zoltan Herczeg
Comment 7
2012-11-12 04:41:38 PST
Comment on
attachment 173616
[details]
Rebased patch View in context:
https://bugs.webkit.org/attachment.cgi?id=173616&action=review
> Source/JavaScriptCore/ChangeLog:9 > + First step to solve this DFG-JIT related > + bug:
https://bugs.webkit.org/show_bug.cgi?id=79040
Perhaps a little more explanation would be good. Otherwise, the patch looks good. Oliver, Filip, anybody any thoughts?
Geoffrey Garen
Comment 8
2012-11-12 10:26:42 PST
How does this relate to
bug 79040
? What is the plan you're pursuing for restoring timeout checking? Is this just a subset of the patch in
bug 79040
? We can't evaluate that patch until you post performance numbers for it.
Zoltan Herczeg
Comment 9
2012-11-12 10:44:04 PST
(In reply to
comment #8
)
> How does this relate to
bug 79040
? What is the plan you're pursuing for restoring timeout checking?
We discussed this topic with Filip Pizlo before. We should either support timeout checking everywhere or remove the feature completly (for consistency). We decided to keep the feature that time.
> Is this just a subset of the patch in
bug 79040
? We can't evaluate that patch until you post performance numbers for it.
Yes, this is the first part. We free the timeout register first so DFG-JIT could use it. Sorry for the missing performance numbers. Gabor, could you copy them here?
Geoffrey Garen
Comment 10
2012-11-12 13:10:01 PST
> Yes, this is the first part.
So your plan is to do timeout checking by polling an in-memory counter at loop boundaries in the interpreter, the baseline JIT, and the DFG?
Zoltan Herczeg
Comment 11
2012-11-12 20:49:24 PST
> So your plan is to do timeout checking by polling an in-memory counter at loop boundaries in the interpreter, the baseline JIT, and the DFG?
Yes. That is a consistent approach. Or perhaps do you have any better idea?
Geoffrey Garen
Comment 12
2012-11-12 20:55:50 PST
> > So your plan is to do timeout checking by polling an in-memory counter at loop boundaries in the interpreter, the baseline JIT, and the DFG? > > Yes. That is a consistent approach. Or perhaps do you have any better idea?
That depends on the performance of polling an in-memory counter. For example, we could use a flag and an alarm to avoid having to read-modify-write the counter. Or we could poll in the interpreter and baseline JIT, where performance matters less, and use some other solution in the DFG. If there's no performance cost to a read-modify-write counter in all engines, that seems like a fine approach. But I suspect there will be a performance cost. Have you tested this?
Gabor Ballabas
Comment 13
2012-11-13 04:35:31 PST
Sunspider results: Sunspider: TEST COMPARISON
r134387
Patch DETAILS ============================================================================= ** TOTAL **: *1.003x as slow* 205.8ms +/- 0.1% 206.3ms +/- 0.1% significant ============================================================================= 3d: *1.005x as slow* 31.2ms +/- 0.3% 31.3ms +/- 0.4% significant cube: ?? 11.0ms +/- 0.2% 11.1ms +/- 0.7% not conclusive: might be *1.005x as slow* morph: *1.012x as slow* 9.0ms +/- 0.4% 9.2ms +/- 0.8% significant raytrace: - 11.1ms +/- 0.6% 11.1ms +/- 0.6% access: - 18.0ms +/- 0.1% 18.0ms +/- 0.0% binary-trees: - 2.0ms +/- 0.0% 2.0ms +/- 0.0% fannkuch: - 8.0ms +/- 0.2% 8.0ms +/- 0.0% nbody: - 4.0ms +/- 0.0% 4.0ms +/- 0.0% nsieve: - 4.0ms +/- 0.0% 4.0ms +/- 0.0% bitops: - 12.5ms +/- 0.8% 12.4ms +/- 0.8% 3bit-bits-in-byte: - 1.0ms +/- 0.0% 1.0ms +/- 0.0% bits-in-byte: - 5.5ms +/- 1.8% 5.4ms +/- 1.8% bitwise-and: - 2.0ms +/- 0.0% 2.0ms +/- 0.0% nsieve-bits: - 4.0ms +/- 0.0% 4.0ms +/- 0.0% controlflow: - 2.0ms +/- 0.0% 2.0ms +/- 0.0% recursive: - 2.0ms +/- 0.0% 2.0ms +/- 0.0% crypto: 1.002x as fast 17.0ms +/- 0.0% 17.0ms +/- 0.2% significant aes: 1.004x as fast 10.0ms +/- 0.0% 10.0ms +/- 0.4% significant md5: - 4.0ms +/- 0.0% 4.0ms +/- 0.0% sha1: - 3.0ms +/- 0.0% 3.0ms +/- 0.0% date: - 31.0ms +/- 0.1% 31.0ms +/- 0.1% format-tofte: - 16.0ms +/- 0.0% 16.0ms +/- 0.0% format-xparb: ?? 15.0ms +/- 0.3% 15.0ms +/- 0.2% not conclusive: might be *1.001x as slow* math: ?? 18.2ms +/- 0.4% 18.3ms +/- 0.5% not conclusive: might be *1.006x as slow* cordic: - 3.0ms +/- 0.0% 3.0ms +/- 0.0% partial-sums: - 13.0ms +/- 0.2% 13.0ms +/- 0.2% spectral-norm: ?? 2.1ms +/- 3.3% 2.3ms +/- 3.8% not conclusive: might be *1.047x as slow* regexp: - 11.0ms +/- 0.0% 11.0ms +/- 0.0% dna: - 11.0ms +/- 0.0% 11.0ms +/- 0.0% string: *1.005x as slow* 65.0ms +/- 0.1% 65.4ms +/- 0.2% significant base64: - 5.0ms +/- 0.0% 5.0ms +/- 0.0% fasta: - 10.0ms +/- 0.0% 10.0ms +/- 0.0% tagcloud: *1.005x as slow* 16.0ms +/- 0.1% 16.1ms +/- 0.4% significant unpack-code: *1.010x as slow* 26.0ms +/- 0.1% 26.3ms +/- 0.3% significant validate-input: - 8.0ms +/- 0.2% 8.0ms +/- 0.0% V8: TEST COMPARISON
r134387
Patch DETAILS ============================================================================= ** TOTAL **: - 762.2ms +/- 0.4% 760.7ms +/- 0.3% ============================================================================= v8: - 762.2ms +/- 0.4% 760.7ms +/- 0.3% crypto: ?? 88.1ms +/- 0.9% 88.4ms +/- 0.7% not conclusive: might be *1.003x as slow* deltablue: *1.007x as slow* 137.3ms +/- 0.4% 138.3ms +/- 0.5% significant earley-boyer: ?? 99.4ms +/- 0.5% 99.8ms +/- 0.7% not conclusive: might be *1.004x as slow* raytrace: - 72.3ms +/- 0.7% 72.0ms +/- 0.7% regexp: 1.015x as fast 109.4ms +/- 0.7% 107.8ms +/- 0.5% significant richards: - 114.6ms +/- 0.7% 113.8ms +/- 0.5% splay: - 141.1ms +/- 0.7% 140.6ms +/- 0.6%
Gabor Ballabas
Comment 14
2012-11-13 04:36:44 PST
(In reply to
comment #13
) The results were produced on x86_64 Linux.
Zoltan Herczeg
Comment 15
2012-11-13 04:54:25 PST
It seems the difference is negligible. Anyway, Geoffrey, if you have a better idea just let us know. The important thing is it should be consistent across JIT and interpreter.
Geoffrey Garen
Comment 16
2012-11-13 10:12:19 PST
The results in
bug 79040
show a 1%-2% regression across the board. Whose results are correct?
Zoltan Herczeg
Comment 17
2012-11-13 10:23:29 PST
(In reply to
comment #16
)
> The results in
bug 79040
show a 1%-2% regression across the board. Whose results are correct?
The results here belong to old JIT patch. The results there belong to the DFG JIT patch. Since we are new to DFG JIT, that patch certanly could be improved. Do you have any suggestions how to do that?
Geoffrey Garen
Comment 18
2012-11-13 14:04:10 PST
> Since we are new to DFG JIT, that patch certanly could be improved. Do you have any suggestions how to do that?
I'd start by trying a patch that polls a memory location but doesn't modify the location. If that avoids the regression, we can use an alarm to update the memory location after a certain amount of time, without cost. For now, I guess I'll mark this patch r-, since it's a step toward a design change that's a performance regression.
Csaba Osztrogonác
Comment 19
2012-11-21 06:31:15 PST
As far as I know Gábor won't work on it in the future. Could you confirm it?
Gabor Ballabas
Comment 20
2012-11-21 06:36:47 PST
(In reply to
comment #19
)
> As far as I know Gábor won't work on it in the future. Could you confirm it?
No, I won't.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug