JM: "Assertion failure: !fe->type.isConstant(),"

RESOLVED FIXED

Status

()

Core
JavaScript Engine
--
critical
RESOLVED FIXED
8 years ago
5 years ago

People

(Reporter: gkw, Assigned: dvander)

Tracking

(Blocks: 1 bug, {assertion, regression, testcase})

Trunk
x86
Mac OS X
assertion, regression, testcase
Points:
---
Dependency tree / graph
Bug Flags:
in-testsuite +

Firefox Tracking Flags

(Not tracked)

Details

(Reporter)

Description

8 years ago
(function() {
  function a() {}
  a.e = a++
})()

asserts js debug shell on JM changeset 787e35063545 with -m at Assertion failure: !fe->type.isConstant(), at ../methodjit/FrameState-inl.h:393
jsop_localinc() calls frame.forgetType(frame.peek(-1)), but that frame is a copy of a FrameEntry where the type is known.

jsop_setprop() then checks whether the type is known, sees that it isn't, calls tempRegForType(). That function works with fe->copyOf(), so it asserts that the value is constant.
Hrm. There shouldn't be a copy here in the first place. Investigating
Assignee: general → dvander
Status: NEW → ASSIGNED
Oh, fine. For LOCALINC with an observed value, and also cases where the type is known to be not int32, just break the op down into more primitive operations. No point in being super clever.

http://hg.mozilla.org/users/danderson_mozilla.com/moo/rev/92c4c89c5ba8
Status: ASSIGNED → RESOLVED
Last Resolved: 8 years ago
Resolution: --- → FIXED
Duplicate of this bug: 585392
Duplicate of this bug: 585314
A testcase for this bug was automatically identified at js/src/jit-test/tests/jaeger/bug585408-3.js.
Flags: in-testsuite+
You need to log in before you can comment on or make changes to this bug.