Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(181)

Issue 13234: Experimental: three small codegen changes.... (Closed)

Created:
12 years ago by Kevin Millikin (Chromium)
Modified:
9 years, 7 months ago
Reviewers:
iposva
CC:
v8-dev
Visibility:
Public.

Description

Experimental: three small codegen changes. 1. Do not let the esi register (reserved for the context) be available for register allocation. This was unsafe as it stood. We noe generate better code, because we do not spill it at a call (it's callee saved) and do not restore it after a call. 2. Move the code for making frames mergable from the common CFG edge leading to a branch and onto the labeled (non-fall-through) basic block. This needs improvement: it should be triggered by a test that VirtualFrame::MakeMergable will actually generate code (sometimes it updates internal state and generates no code, in which case we now get an annoying branch to a jump). 3. Push the virtual frame farther. It is enabled for blocks and some code paths through assignments. It can now reach the entry of loop statements in the two loop benchmarks.

Patch Set 1 #

Total comments: 2
Unified diffs Side-by-side diffs Delta from patch set Stats (+85 lines, -21 lines) Patch
M src/assembler-ia32.h View 1 chunk +9 lines, -0 lines 0 comments Download
M src/codegen-ia32.cc View 20 chunks +33 lines, -6 lines 0 comments Download
M src/jump-target-ia32.cc View 2 chunks +11 lines, -2 lines 2 comments Download
M src/virtual-frame-ia32.cc View 4 chunks +32 lines, -13 lines 0 comments Download

Messages

Total messages: 4 (0 generated)
Kevin Millikin (Chromium)
12 years ago (2008-12-06 09:06:40 UTC) #1
Kevin Millikin (Chromium)
12 years ago (2008-12-06 09:06:50 UTC) #2
iposva
Kevin, I need some more time to take another look at this. Ideally by Monday ...
12 years ago (2008-12-08 06:32:32 UTC) #3
Kevin Millikin (Chromium)
12 years ago (2008-12-08 08:26:28 UTC) #4
http://codereview.chromium.org/13234/diff/1/4
File src/jump-target-ia32.cc (right):

http://codereview.chromium.org/13234/diff/1/4#newcode119
Line 119: __ bind(&original_fall_through);
On 2008/12/08 06:32:32, iposva wrote:
> How often do you expect this double jump to happen?

Only when the frame contains constants that are synched to memory and nothing
else that's problematic---then it can become mergable by just forgetting about
the constants.

I don't expect it to be the common case, but it happens right now for the stack
check on function entry where the locals are constants (the undefined value). 
For total correctness with the debugger, the stack check should probably be
special-cased and avoid the double jump but I'd still like to avoid it in other
cases too.

Powered by Google App Engine
This is Rietveld 408576698