Closed Bug 825382 Opened 12 years ago Closed 11 years ago

IonMonkey: Differential Testing: Getting different output w/without --ion-eager with byteLength

Categories

(Core :: JavaScript Engine, defect)

x86_64
macOS
defect
Not set
major

Tracking

()

RESOLVED DUPLICATE of bug 827659
Tracking Status
firefox17 --- unaffected
firefox18 --- affected
firefox19 --- affected
firefox20 --- affected
firefox-esr10 --- unaffected
firefox-esr17 --- unaffected
b2g18 --- affected
b2g18-v1.0.1 --- affected

People

(Reporter: gkw, Unassigned)

References

Details

(Keywords: regression, testcase)

g = f = x = new ArrayBuffer
var eval = this
try {
    g.toSource = (function() {
        x.byteLength
    })
    eval()
} catch (e) {}
try {
    x = [, , , , , , , , , , , 0].slice(6)[5]
    print(uneval(this))
} catch (e) {}

shows the following output in js debug and opt shell on m-c changeset 0bb4773db082 without --ion-eager:

...
/snipped for the sake of brevity
...
}, version:function version() {
    [native code]
}, wrap:function wrap() {
    [native code]
}, wrapWithProto:function wrapWithProto() {
    [native code]
}, x:0})

but does not show anything with --ion-eager.

autoBisect shows this is probably related to the following changeset:

The first bad revision is:
changeset:   109238:a85c0f30cdfa
user:        Jan de Mooij
date:        Thu Oct 04 13:26:16 2012 +0200
summary:     Bug 797185 - Disable DVG stack search when building with --enable-more-deterministic. r=decoder
Severity: critical → major
autoBisect shows this is probably related to the following changeset:

The first good revision is:
changeset:   118117:86e85b93cad1
user:        Jan de Mooij
date:        Tue Jan 08 19:13:19 2013 +0100
summary:     Bug 827659 - Ensure |this| is an object when inlining getter/setter calls. r=bhackett

jandem, is this a possible fix?
Flags: needinfo?(jdemooij)
(In reply to Gary Kwong [:gkw] from comment #1)
> jandem, is this a possible fix?

Yes. x.byteLength is a getter. First x is an ArrayBuffer, then x becomes 0. Before the fix for bug 827659, this would throw with --ion-eager because we'd call the getter with a primitive value. With the patch for bug 827659, it correctly results in |undefined| without an exception.
Status: NEW → RESOLVED
Closed: 11 years ago
Flags: needinfo?(jdemooij)
Resolution: --- → DUPLICATE
Batch edit: Bugs marked status-b2g18: affected after 2/13 branching of v1.0.1 are now also status-b2g18-v1.0.1: affected
You need to log in before you can comment on or make changes to this bug.