Closed
Bug 453462
Opened 16 years ago
Closed 16 years ago
TM: FCKeditor initialization breaks with JIT enabled (in 20080903 nightly)
Categories
(Core :: JavaScript Engine, defect, P1)
Tracking
()
VERIFIED
FIXED
mozilla1.9.1b1
People
(Reporter: leeoniya, Assigned: mrbkap)
References
(Blocks 1 open bug, )
Details
(Keywords: regression, testcase, verified1.9.1)
Attachments
(2 files, 1 obsolete file)
717 bytes,
text/html
|
Details | |
6.38 KB,
patch
|
brendan
:
review+
|
Details | Diff | Splinter Review |
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b1pre) Gecko/20080903034741 Minefield/3.1b1pre Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b1pre) Gecko/20080903034741 Minefield/3.1b1pre Firebug 1.2 output: ---------------------------- D is undefined OutdentListItem()()fckedito..._gecko.js (line 52) OutdentListItem()()fckedito..._gecko.js (line 52) FCKToolbarFontFormatCombo()()fckedito..._gecko.js (line 91) FCKToolbarFontFormatCombo()(Object FieldWidth=100 PanelWidth=150 PanelMaxHeight=150)fckedito..._gecko.js (line 91) FCKToolbarStyleCombo()(td)fckedito..._gecko.js (line 90) FCKToolbarBreak()(td#xToolbar.TB_ToolbarSet)fckedito..._gecko.js (line 97) F()("Default")fckedito..._gecko.js (line 99) LoadToolbar()fckedito...r=Default (line 232) GetInstance()()KOJa7yj9...PRg%3D%3D (line 1) GetInstance()(LoadToolbar())KOJa7yj9...PRg%3D%3D (line 1) LoadToolbarSetup()fckedito...r=Default (line 220) onload()()fckedito...r=Default (line 215) [Break on this error] var FCKStyles=FCK.Styles={_Callbacks:{},...tyles[G]=true;A[Q.Name]=Q;};return A;}}; Reproducible: Always Steps to Reproduce: 1. Initialize FCKeditor. 2. 3. Actual Results: Javascript error Expected Results: no errors.
Reporter | ||
Updated•16 years ago
|
Updated•16 years ago
|
Assignee: nobody → general
Component: General → JavaScript Engine
Product: Firefox → Core
QA Contact: general → general
Summary: FCKeditor initialization breaks with JIT enabled (in 20080903 nightly) → TM: FCKeditor initialization breaks with JIT enabled (in 20080903 nightly)
Version: unspecified → Trunk
Comment 1•16 years ago
|
||
Confirming, the editor fails to load with content JIT enabled, works with it disabled.
Status: UNCONFIRMED → NEW
Ever confirmed: true
Comment 2•16 years ago
|
||
It might be possible to reduce this further, but I'm pretty sure removing any part of this causes it to pass. I'll post a testcase suitable for running in the shell once my build completes.
Comment 3•16 years ago
|
||
Is this the "editor on developer.mozilla.org doesn't display text with content JIT enabled" bug?
Comment 4•16 years ago
|
||
This has been identified as an issue with taking a side exit in a scripted constructor, which requires special handling of the return value which the current side exit code doesn't do. mrbkap might whip up a patch for this today.
Comment 5•16 years ago
|
||
mrbkap: along the same line we should also check whether we properly setup the call object when side-exiting from a heavyweight functions, or along a chain like lightweight -> heavyweight -> lightweight and then side-exit from the latter.
Assignee | ||
Comment 6•16 years ago
|
||
I need to test this harder, but it appears to work.
Assignee | ||
Comment 7•16 years ago
|
||
Note: my patch doesn't take comment 5 into account. Someone should feel free to snatch that from me.
Status: ASSIGNED → NEW
Comment 8•16 years ago
|
||
Comment on attachment 337162 [details] [diff] [review] Proposed fix >- if (!js_InvokeConstructor(cx, argc, vp)) >+ if (!js_InvokeConstructor(cx, argc, JS_FALSE, vp)) How is this safe? Who does the clamping? I'm not seeing it. The inline return case handles constructor return but that is disjoint from this case. Your patch adds no new clamping code, it only suppresses clamping from this call site. > struct FrameInfo { > JSObject* callee; // callee function object > jsbytecode* callpc; // pc of JSOP_CALL in caller script >+ uintN flags; // flags to set on the stack frame Don't add another word to store -- do steal a bit from the spdist/argc pair for JSFRAME_CONSTRUCTING (which you can statically assert is 1, the LSb). >+TraceRecorder::interpretedFunctionCall(jsval& fval, JSFunction* fun, uintN argc, uintN flags) So flags is overlarge -- bool constructing is best. /be
Comment 9•16 years ago
|
||
(In reply to comment #7) > Note: my patch doesn't take comment 5 into account. Please file a separate bug on the Call object for reconstructed heavyweight frames (yes, we'll need another bit -- still don't want to store flags in toto). /be
Assignee | ||
Comment 10•16 years ago
|
||
(In reply to comment #8) > How is this safe? Who does the clamping? I'm not seeing it. The inline return > case handles constructor return but that is disjoint from this case. Your patch > adds no new clamping code, it only suppresses clamping from this call site. The clamping is taken care of in the added code to the shared JSOP_RETURN/JSOP_STOP case lower in the patch (which is coincidentally the fix for the bug).
Comment 12•16 years ago
|
||
(In reply to comment #10) > The clamping is taken care of in the added code to the shared > JSOP_RETURN/JSOP_STOP case lower in the patch (which is coincidentally the fix > for the bug). I'm blind, this part's good. Can you make a new patch that avoids the extra rp store? /be
Assignee | ||
Comment 13•16 years ago
|
||
Attachment #337162 -
Attachment is obsolete: true
Attachment #337786 -
Flags: review?(brendan)
Attachment #337162 -
Flags: review?(brendan)
Comment 14•16 years ago
|
||
Comment on attachment 337786 [details] [diff] [review] Updated >- uint16 spdist; // distance from fp->slots to fp->regs->sp at JSOP_CALL >+ uint16 spdist : 15;// distance from fp->slots to fp->regs->sp at JSOP_CALL >+ uint16 constructing : 1; // this frame JSFRAME_CONSTRUCTING > uint16 argc; // actual argument count, may be < fun->nargs Nits: prevailing style crunches (cuddles?) both sides : and give those comments some breathing room -- bump 'em over to the next 4-space stop. >+ JS_ASSERT(!(fp->regs->sp - fp->slots & 0x8000)); This is ok, but we talked about stealing from argc instead. That's even less likely to be >= 32K. > FrameInfo fi = { > JSVAL_TO_OBJECT(fval), > fp->regs->pc, > typemap, >- { { fp->regs->sp - fp->slots, argc } } >+ { { fp->regs->sp - fp->slots, constructing, argc } } Bitfield initializers -- portable or not? Discuss. r=me with sufficient fussing over above. /be
Attachment #337786 -
Flags: review?(brendan) → review+
Updated•16 years ago
|
Priority: -- → P1
Target Milestone: --- → mozilla1.9.1b1
Updated•16 years ago
|
Flags: blocking1.9.1?
Keywords: regression
Comment 16•16 years ago
|
||
http://hg.mozilla.org/tracemonkey/rev/3090e1560262
Status: NEW → RESOLVED
Closed: 16 years ago
Resolution: --- → FIXED
Updated•16 years ago
|
Flags: blocking1.9.1? → blocking1.9.1+
Keywords: fixed1.9.1
Comment 18•15 years ago
|
||
v 1.9.1, 1.9.2
Status: RESOLVED → VERIFIED
Keywords: fixed1.9.1 → verified1.9.1
You need to log in
before you can comment on or make changes to this bug.
Description
•