Open
Bug 875225
Opened 11 years ago
Updated 1 year ago
IonMonkey: Remove failing boundschecks on GWT linpack benchmark
Categories
(Core :: JavaScript Engine, defect)
Core
JavaScript Engine
Tracking
()
NEW
People
(Reporter: h4writer, Unassigned)
References
(Blocks 1 open bug)
Details
We are bailing on :428 due to boundschecks. This sounds bogus. Haven't found yet why we are failing them, investigating now. Removing the bailouts would increase our performance from 2.03s to 1.82s
Reporter | ||
Comment 1•11 years ago
|
||
Not sure what the solution is. I will have to discuss it with other people.
So this is a small testcase showing the behaviour in linpack GWT. This will bail every time create_array gets called:
function create_array(length){
var array = new Array(length); (1)
for (var i = 0; i < length; ++i) {
array[i] = 0; (2)
}
return array;
}
function test() {
for (var i = 0; i < 10; i++) {
var arr = create_array(1001);
var a = ["&"];
arr[a[1]] = 1; (3)
}
}
test();
1)
array->resultTypeSet() => object[1] [0xb5830be0]
[0xb5830be0] : <0xb583d010> unknown {}
2)
As a result of that array typeset:
types->unknownProperties() == true
types->hasObjectFlags(cx, types::OBJECT_FLAG_LENGTH_OVERFLOW) == true
ElementAccessHasExtraIndexedProperty == true
writeOutOfBounds == false
so we use MStoreElement instead of MStoreElementHole
(this last one wouldn't bail, since it supports adding to array)
3)
Here we do a JSOP_SETELEM with a string as index. MonitorAssign get's called and MarkTypeObjectUnknownProperties(cx, obj->type()); So that's the reason we have no type information or unknownProperties. I don't know what the reason is for this and hg annotate and following bugs didn't show me good information ...
So I'm a bit in the dark what we want to change? Do we want to adjust (2) and use MStoreElementHole for unknownProperties? Or is the optimization in 3 maybe not needed anymore?
Assignee | ||
Updated•10 years ago
|
Assignee: general → nobody
Updated•2 years ago
|
Severity: normal → S3
You need to log in
before you can comment on or make changes to this bug.
Description
•