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

Issue 6932010: Unroll more StringDictionary lookup probes both for positive and negative dictionary lookups. (Closed)

Created:
9 years, 7 months ago by Vyacheslav Egorov (Chromium)
Modified:
9 years, 7 months ago
CC:
v8-dev
Visibility:
Public.

Description

Unroll more StringDictionary lookup probes both for positive and negative dictionary lookups. Committed: http://code.google.com/p/v8/source/detail?r=7795

Patch Set 1 #

Patch Set 2 : revive inlined portions #

Total comments: 1

Patch Set 3 : ported to arm&x64, cleaned up ia32 impl #

Total comments: 23
Unified diffs Side-by-side diffs Delta from patch set Stats (+895 lines, -386 lines) Patch
M src/arm/code-stubs-arm.h View 1 2 1 chunk +55 lines, -0 lines 2 comments Download
M src/arm/code-stubs-arm.cc View 1 2 1 chunk +231 lines, -0 lines 0 comments Download
M src/arm/ic-arm.cc View 1 2 3 chunks +14 lines, -73 lines 0 comments Download
M src/arm/stub-cache-arm.cc View 1 2 1 chunk +9 lines, -63 lines 0 comments Download
M src/code-stubs.h View 1 chunk +2 lines, -1 line 0 comments Download
M src/ia32/code-stubs-ia32.h View 1 2 1 chunk +68 lines, -0 lines 2 comments Download
M src/ia32/code-stubs-ia32.cc View 1 2 1 chunk +209 lines, -0 lines 0 comments Download
M src/ia32/ic-ia32.cc View 1 2 3 chunks +14 lines, -68 lines 0 comments Download
M src/ia32/stub-cache-ia32.cc View 1 2 2 chunks +7 lines, -57 lines 0 comments Download
M src/x64/code-stubs-x64.h View 1 2 1 chunk +67 lines, -0 lines 2 comments Download
M src/x64/code-stubs-x64.cc View 1 2 2 chunks +198 lines, -1 line 17 comments Download
M src/x64/ic-x64.cc View 1 2 3 chunks +14 lines, -66 lines 0 comments Download
M src/x64/stub-cache-x64.cc View 1 2 2 chunks +7 lines, -57 lines 0 comments Download

Messages

Total messages: 6 (0 generated)
Vyacheslav Egorov (Chromium)
Mads, can you take a look? This is ia32 only, I'll port to other platforms ...
9 years, 7 months ago (2011-05-04 13:54:29 UTC) #1
Mads Ager (chromium)
LGTM http://codereview.chromium.org/6932010/diff/1006/src/ia32/stub-cache-ia32.cc File src/ia32/stub-cache-ia32.cc (right): http://codereview.chromium.org/6932010/diff/1006/src/ia32/stub-cache-ia32.cc#newcode171 src/ia32/stub-cache-ia32.cc:171: Immediate(Smi::FromInt(name->Hash() + Accidental edit?
9 years, 7 months ago (2011-05-04 15:03:21 UTC) #2
Vyacheslav Egorov (Chromium)
Please take another look. I ported it to arm/x64 and cleaned up ia32 version by ...
9 years, 7 months ago (2011-05-05 11:28:14 UTC) #3
Mads Ager (chromium)
LGTM http://codereview.chromium.org/6932010/diff/6001/src/arm/code-stubs-arm.h File src/arm/code-stubs-arm.h (right): http://codereview.chromium.org/6932010/diff/6001/src/arm/code-stubs-arm.h#newcode623 src/arm/code-stubs-arm.h:623: private: Could you leave line 623 blank and ...
9 years, 7 months ago (2011-05-05 11:54:55 UTC) #4
Vyacheslav Egorov (Chromium)
landing http://codereview.chromium.org/6932010/diff/6001/src/arm/code-stubs-arm.h File src/arm/code-stubs-arm.h (right): http://codereview.chromium.org/6932010/diff/6001/src/arm/code-stubs-arm.h#newcode623 src/arm/code-stubs-arm.h:623: private: On 2011/05/05 11:54:56, Mads Ager wrote: > ...
9 years, 7 months ago (2011-05-05 12:30:16 UTC) #5
Lasse Reichstein
9 years, 7 months ago (2011-05-05 14:20:13 UTC) #6
A few, late, X64 comments

http://codereview.chromium.org/6932010/diff/6001/src/x64/code-stubs-x64.cc
File src/x64/code-stubs-x64.cc (right):

http://codereview.chromium.org/6932010/diff/6001/src/x64/code-stubs-x64.cc#ne...
src/x64/code-stubs-x64.cc:4757: __ and_(index,
Use andl instead of and_, one byte shorter.

http://codereview.chromium.org/6932010/diff/6001/src/x64/code-stubs-x64.cc#ne...
src/x64/code-stubs-x64.cc:4762: __ lea(index, Operand(index, index, times_2,
0));  // index *= 3.
Use leal instead of lea for 32-bit operations - unless you need it to overflow.

http://codereview.chromium.org/6932010/diff/6001/src/x64/code-stubs-x64.cc#ne...
src/x64/code-stubs-x64.cc:4771: __ Cmp(entity_name,
masm->isolate()->factory()->undefined_value());
We typically use CompareRoot for this.

http://codereview.chromium.org/6932010/diff/6001/src/x64/code-stubs-x64.cc#ne...
src/x64/code-stubs-x64.cc:4792: __ testq(r0, r0);
If the result is guaranteed to have its nonzero bits in the lower 32 bits, you
can use testl.

http://codereview.chromium.org/6932010/diff/6001/src/x64/code-stubs-x64.cc#ne...
src/x64/code-stubs-x64.cc:4822: __ and_(r1, r0);
andl

http://codereview.chromium.org/6932010/diff/6001/src/x64/code-stubs-x64.cc#ne...
src/x64/code-stubs-x64.cc:4826: __ lea(r1, Operand(r1, r1, times_2, 0));  // r1
= r1 * 3
leal

http://codereview.chromium.org/6932010/diff/6001/src/x64/code-stubs-x64.cc#ne...
src/x64/code-stubs-x64.cc:4844: __ testq(r0, r0);
Possibly testl.

http://codereview.chromium.org/6932010/diff/6001/src/x64/code-stubs-x64.cc#ne...
src/x64/code-stubs-x64.cc:4852: //  esp[0 * kPointerSize]: return address.
esp->rsp

http://codereview.chromium.org/6932010/diff/6001/src/x64/code-stubs-x64.cc#ne...
src/x64/code-stubs-x64.cc:4861: //  result_ is zero if lookup failed, non zero
otherwise.
Document that it's nonzero when used as a double-word register.

http://codereview.chromium.org/6932010/diff/6001/src/x64/code-stubs-x64.cc#ne...
src/x64/code-stubs-x64.cc:4882: __ and_(scratch, Operand(rsp, 0));
andl

http://codereview.chromium.org/6932010/diff/6001/src/x64/code-stubs-x64.cc#ne...
src/x64/code-stubs-x64.cc:4886: __ lea(index_, Operand(scratch, scratch,
times_2, 0));  // index *= 3.
leal

http://codereview.chromium.org/6932010/diff/6001/src/x64/code-stubs-x64.cc#ne...
src/x64/code-stubs-x64.cc:4894: __ Cmp(scratch,
masm->isolate()->factory()->undefined_value());
CompareRoot

http://codereview.chromium.org/6932010/diff/6001/src/x64/code-stubs-x64.cc#ne...
src/x64/code-stubs-x64.cc:4919: __ movq(scratch, Immediate(0));
__ Move(scratch, 0);  // will use xor

http://codereview.chromium.org/6932010/diff/6001/src/x64/code-stubs-x64.cc#ne...
src/x64/code-stubs-x64.cc:4925: __ movq(scratch, Immediate(1));
Consider using Move

http://codereview.chromium.org/6932010/diff/6001/src/x64/code-stubs-x64.cc#ne...
src/x64/code-stubs-x64.cc:4930: __ movq(scratch, Immediate(0));
Use Move.

Powered by Google App Engine
This is Rietveld 408576698