if ((cg->noteCount - 1) % SNINCR <= 1) {
if ((cg->noteCount + 1) % SNINCR <= 1) {
js_SetSrcNoteOffset(JSContext *cx, JSCodeGenerator *cg, uintN index,		    uintN which, ptrdiff_t offset){    jssrcnote *sn;    ptrdiff_t diff;    if (offset >= (((ptrdiff_t)SN_3BYTE_OFFSET_FLAG) << 16)) {	ReportStatementTooLarge(cx, cg);	return JS_FALSE;    }    /* Find the offset numbered which (i.e., skip exactly which offsets). */    sn = &cg->notes[index];    JS_ASSERT(SN_TYPE(sn) != SRC_XDELTA);    JS_ASSERT(which < js_SrcNoteArity[SN_TYPE(sn)]);    for (sn++; which; sn++, which--) {	if (*sn & SN_3BYTE_OFFSET_FLAG)	    sn += 2;    }    /* See if the new offset requires three bytes. */    if (offset > (ptrdiff_t)SN_3BYTE_OFFSET_MASK) {	/* Maybe this offset was already set to a three-byte value. */	if (!(*sn & SN_3BYTE_OFFSET_FLAG)) {	    /* Losing, need to insert another two bytes for this offset. */	    index = PTRDIFF(sn, cg->notes, jssrcnote);	    cg->noteCount += 2;	    /*	     * Simultaneously test to see if the source note array must grow to	     * accomodate either the first or second byte of additional storage	     * required by this 3-byte offset.	     */	    if ((cg->noteCount - 1) % SNINCR <= 1) {		if (!GrowSrcNotes(cx, cg))		    return JS_FALSE;		sn = cg->notes + index;	    }	    diff = cg->noteCount - (index + 3);	    JS_ASSERT(diff >= 0);	    if (diff > 0)		memmove(sn + 3, sn + 1, diff * sizeof(jssrcnote));	}	*sn++ = (jssrcnote)(SN_3BYTE_OFFSET_FLAG | (offset >> 16));	*sn++ = (jssrcnote)(offset >> 8);    }    *sn = (jssrcnote)offset;    return JS_TRUE;}