Closed Bug 724773 Opened 12 years ago Closed 12 years ago

IonMonkey: Assertion failure: !ranges_.empty(), at js/src/ion/LinearScan.h:289

Categories

(Core :: JavaScript Engine, defect)

Other Branch
x86_64
Linux
defect
Not set
major

Tracking

()

RESOLVED FIXED

People

(Reporter: decoder, Assigned: jandem)

References

Details

(Keywords: assertion, testcase)

Attachments

(1 file)

The following testcase asserts on ionmonkey revision f46cfb199e77 (run with --ion -n -m --ion-eager), tested on 64 bit:


function Day( t ) {}
function DayFromYear( y ) {}
function YearFromTime( t ) {
  for ( var timeToTimeZero = t; ;  ) {  }
}
function MonthFromTime( t ) {
  return( Day(t) - DayFromYear(YearFromTime(t)));
}
addNewTestCase( "TDATE = new Date(0);(TDATE).setFullYear(1969);TDATE",
		UTCDateFromTime(SetFullYear(0,1969)),
		LocalDateFromTime(SetFullYear(0,1969)) );
function addNewTestCase( DateString, UTCDate, LocalDate) {}
function UTCDateFromTime(t) {}
function SetFullYear( t, year, mon, date ) {
  var T = addNewTestCase ? 0 : LocalTime(t) ;
  var MONTH = ( mon == void 0 ) ? MonthFromTime(T) : Number( mon );
}
Summary: Assertion failure: !ranges_.empty(), at js/src/ion/LinearScan.h:289 → IonMonkey: Assertion failure: !ranges_.empty(), at js/src/ion/LinearScan.h:289
Attached patch PatchSplinter Review
Almost all scripts have an MReturn or MThrow and therefore fixedIntervalsUnion usually has at least one range. There's an edge case though: infinite loops. The patch adds a small range to fixedIntervalsUnion to handle this (rare) case so that the allocator does not have to guard against this.

I can't add the testcase since it iloops and we don't support interrupts.
Assignee: general → jdemooij
Status: NEW → ASSIGNED
Attachment #594955 - Flags: review?(dvander)
Attachment #594955 - Flags: review?(dvander) → review+
https://hg.mozilla.org/projects/ionmonkey/rev/c34398f961e7
Status: ASSIGNED → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.