Closed
Bug 1256298
Opened 8 years ago
Closed 8 years ago
Make DoCallFallback consume a bit less stack space
Categories
(Core :: JavaScript Engine: JIT, defect)
Core
JavaScript Engine: JIT
Tracking
()
RESOLVED
FIXED
mozilla48
Tracking | Status | |
---|---|---|
firefox48 | --- | fixed |
People
(Reporter: jandem, Assigned: jandem)
References
Details
Attachments
(1 file)
7.00 KB,
patch
|
Waldo
:
review+
|
Details | Diff | Splinter Review |
Noticed this while looking into bug 1247496. This patch changes DoCallFallback to call the Invoke() overload that takes CallArgs instead of separate arguments, to get rid of an unnecessary copy/call. I also changed it to call ConstructFromStack instead of Construct. It's shorter and we can get rid of the ConstructArgs copy on the stack.
Attachment #8730181 -
Flags: review?(jwalden+bmo)
Comment 1•8 years ago
|
||
Comment on attachment 8730181 [details] [diff] [review] Patch Review of attachment 8730181 [details] [diff] [review]: ----------------------------------------------------------------- This'll muck up two of my patches in bug 1259877. Serves me right for taking so long to do this. ::: js/src/jit/BaselineIC.cpp @@ +6134,5 @@ > if (!stub->addMonitorStubForValue(cx, &info, res)) > return false; > > // If 'callee' is a potential Call_StringSplit, try to attach an > // optimized StringSplit stub. Maybe worth noting |vp[0]| that was formerly the callee has been overwritten at this point. ::: js/src/vm/Interpreter.h @@ +89,5 @@ > Construct(JSContext* cx, HandleValue fval, const ConstructArgs& args, HandleValue newTarget, > MutableHandleObject objp); > > +extern bool > +ConstructFromStack(JSContext* cx, const CallArgs& args); Add a comment: """ Check that in the given |args|, which must be |args.isConstructing()|, that |IsConstructor(args.callee())|. If this is not the case, throw a TypeError. Otherwise, the user must ensure that, additionally, |IsConstructor(args.newTarget())|. (If |args| comes directly from the interpreter stack, as set up by JSOP_NEW, this comes for free.) Then perform a Construct() operation using |args|. This internal operation is intended only for use with arguments known to be on the JS stack, or at least in carefully-rooted memory. The vast majority of potential users should instead use ConstructArgs in concert with Construct(). """
Attachment #8730181 -
Flags: review?(jwalden+bmo) → review+
Comment 3•8 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/ca768ab10b5b
Status: ASSIGNED → RESOLVED
Closed: 8 years ago
status-firefox48:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla48
You need to log in
before you can comment on or make changes to this bug.
Description
•