Closed
Bug 810375
Opened 12 years ago
Closed 12 years ago
BaselineCompiler: Support local/arg inc/dec ops
Categories
(Core :: JavaScript Engine, defect)
Core
JavaScript Engine
Tracking
()
RESOLVED
FIXED
People
(Reporter: jandem, Assigned: jandem)
References
Details
Attachments
(3 files)
992 bytes,
patch
|
djvj
:
review+
|
Details | Diff | Splinter Review |
7.02 KB,
patch
|
djvj
:
review+
|
Details | Diff | Splinter Review |
1.57 KB,
patch
|
djvj
:
review+
|
Details | Diff | Splinter Review |
No description provided.
Assignee | ||
Comment 1•12 years ago
|
||
Attachment #680131 -
Flags: review?(kvijayan)
Assignee | ||
Comment 2•12 years ago
|
||
Uses an inline path for int32 and double. We can test for both with a single compare and in these cases POS is a no-op.
Attachment #680152 -
Flags: review?(kvijayan)
Assignee | ||
Comment 3•12 years ago
|
||
i++ is decomposed as
getlocal 0
pos
dup
one
add
setlocal 0
The patch doesn't attempt to DUP unsynced constants etc directly. There are probably other uses of DUP but here it doesn't matter.
Attachment #680172 -
Flags: review?(kvijayan)
Updated•12 years ago
|
Attachment #680131 -
Flags: review?(kvijayan) → review+
Updated•12 years ago
|
Attachment #680152 -
Flags: review?(kvijayan) → review+
Updated•12 years ago
|
Attachment #680172 -
Flags: review?(kvijayan) → review+
Comment 4•12 years ago
|
||
There's something I don't understand about decomposed ops. JSOP_LOCALINC has the decompose flag set on it, but in the emitted bytecode it doesn't actually seem to be decomposed.
The couple of other inc ops I checked actually had the surrogate ops emitted, but not LOCALINC. Is there something I'm missing?
Assignee | ||
Comment 5•12 years ago
|
||
(In reply to Kannan Vijayan [:djvj] from comment #4)
> There's something I don't understand about decomposed ops. JSOP_LOCALINC
> has the decompose flag set on it, but in the emitted bytecode it doesn't
> actually seem to be decomposed.
Are you using a recent build? Local/arg ops were decomposed in bug 804636.
js> dis(function() { var i; i++; });
flags: LAMBDA
loc op
----- --
main:
00000: getlocal 0
00003: pop
00004: localinc 11
00007: getlocal 0
00010: pos
00011: dup
00012: one
00013: add
00014: setlocal 0
00017: pop
00018: pop
00019: stop
Assignee | ||
Comment 6•12 years ago
|
||
https://hg.mozilla.org/projects/ionmonkey/rev/6942d3709009
https://hg.mozilla.org/projects/ionmonkey/rev/79b5f9e429d0
https://hg.mozilla.org/projects/ionmonkey/rev/281c54efd991
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.
Description
•