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

Issue 6461017: ARM: Add type-feedback recording for compare... (Closed)

Created:
9 years, 10 months ago by Søren Thygesen Gjesse
Modified:
9 years, 7 months ago
CC:
v8-dev
Visibility:
Public.

Description

ARM: Add type-feedback recording for compare Change the comparison in the full code generator to use CompareIC instead of the CompareStub to record the types. This also implements the patching in the full code generator where the inlined smi code is de-activated by default to call the CompareIC once and then activating the inlined smi code by patching the code. Fixed the smi comparison in the ICCompareStub. Fixed ToBooleanStub to ensure that the scratch register used is not the input. Use r9 as default as that will never be input with Crankshaft. Implemented lithium instruction CmpTAndBranch. Make sure that the lithium instruction CmpID have operands in registrers as the current optimized code expects that. Committed: http://code.google.com/p/v8/source/detail?r=6704

Patch Set 1 #

Total comments: 14

Patch Set 2 : '' #

Unified diffs Side-by-side diffs Delta from patch set Stats (+272 lines, -41 lines) Patch
M src/arm/assembler-arm.h View 4 chunks +9 lines, -0 lines 0 comments Download
M src/arm/assembler-arm.cc View 1 5 chunks +56 lines, -1 line 0 comments Download
M src/arm/code-stubs-arm.cc View 1 2 chunks +4 lines, -5 lines 0 comments Download
M src/arm/constants-arm.h View 1 2 chunks +2 lines, -0 lines 0 comments Download
M src/arm/full-codegen-arm.cc View 1 4 chunks +88 lines, -16 lines 0 comments Download
M src/arm/ic-arm.cc View 1 chunk +68 lines, -1 line 0 comments Download
M src/arm/lithium-arm.cc View 2 chunks +2 lines, -2 lines 0 comments Download
M src/arm/lithium-codegen-arm.cc View 5 chunks +19 lines, -7 lines 0 comments Download
M src/arm/macro-assembler-arm.h View 2 chunks +11 lines, -1 line 0 comments Download
M src/arm/macro-assembler-arm.cc View 1 2 chunks +9 lines, -4 lines 0 comments Download
M src/full-codegen.h View 1 chunk +2 lines, -1 line 0 comments Download
M src/ia32/full-codegen-ia32.cc View 2 chunks +2 lines, -3 lines 0 comments Download

Messages

Total messages: 5 (0 generated)
Søren Thygesen Gjesse
9 years, 10 months ago (2011-02-09 12:58:00 UTC) #1
Mads Ager (chromium)
LGTM
9 years, 10 months ago (2011-02-09 13:55:19 UTC) #2
Alexandre
Just a few comments. The v8 benchmarks performance improvement are impressive! Alexandre http://codereview.chromium.org/6461017/diff/1/src/arm/assembler-arm.cc File src/arm/assembler-arm.cc ...
9 years, 10 months ago (2011-02-09 13:57:16 UTC) #3
Karl Klose
http://codereview.chromium.org/6461017/diff/1/src/arm/full-codegen-arm.cc File src/arm/full-codegen-arm.cc (right): http://codereview.chromium.org/6461017/diff/1/src/arm/full-codegen-arm.cc#newcode92 src/arm/full-codegen-arm.cc:92: __ cmp_raw_immediate(r0, delta_to_patch_site % kOff12Mask); The destination register of ...
9 years, 10 months ago (2011-02-09 14:35:29 UTC) #4
Søren Thygesen Gjesse
9 years, 10 months ago (2011-02-09 14:48:28 UTC) #5
http://codereview.chromium.org/6461017/diff/1/src/arm/assembler-arm.cc
File src/arm/assembler-arm.cc (right):

http://codereview.chromium.org/6461017/diff/1/src/arm/assembler-arm.cc#newcod...
src/arm/assembler-arm.cc:355: Condition Assembler::GetCondition(Instr instr) {
On 2011/02/09 13:57:16, Alexandre wrote:
> Same as Instruction::ConditionField(). Do we want to redefine this?

This now calls Instruction::ConditionField()

http://codereview.chromium.org/6461017/diff/1/src/arm/assembler-arm.cc#newcod...
src/arm/assembler-arm.cc:514: 
On 2011/02/09 13:57:16, Alexandre wrote:
> Not sure, but should we move these to the Instruction class in constants-arm.*
?

I think it will be fine to have these in the Instruction class instead of the
assembler. However leaving them here for now.

http://codereview.chromium.org/6461017/diff/1/src/arm/assembler-arm.h
File src/arm/assembler-arm.h (right):

http://codereview.chromium.org/6461017/diff/1/src/arm/assembler-arm.h#newcode...
src/arm/assembler-arm.h:1103: static Condition GetCondition(Instr instr);
On 2011/02/09 13:57:16, Alexandre wrote:
> Same as Instruction::ConditionField(). Do we want to redefine this?

This now calls Instruction::ConditionField().

http://codereview.chromium.org/6461017/diff/1/src/arm/code-stubs-arm.cc
File src/arm/code-stubs-arm.cc (right):

http://codereview.chromium.org/6461017/diff/1/src/arm/code-stubs-arm.cc#newco...
src/arm/code-stubs-arm.cc:1301: Register scratch = r9;
On 2011/02/09 13:57:16, Alexandre wrote:
> Is this more readable?
> Register scratch = r9.is(tos_) ? r7 : r9;

Done.

http://codereview.chromium.org/6461017/diff/1/src/arm/constants-arm.h
File src/arm/constants-arm.h (right):

http://codereview.chromium.org/6461017/diff/1/src/arm/constants-arm.h#newcode144
src/arm/constants-arm.h:144: kConditionMask = 15 << 28      // Mask for the
condition field.
On 2011/02/09 13:57:16, Alexandre wrote:
> kCondMask was already defined  (~line 259).
> I think we should keep only one; but I think any of them is fine though.

Removed this again.

http://codereview.chromium.org/6461017/diff/1/src/arm/full-codegen-arm.cc
File src/arm/full-codegen-arm.cc (right):

http://codereview.chromium.org/6461017/diff/1/src/arm/full-codegen-arm.cc#new...
src/arm/full-codegen-arm.cc:50: // class has a number of methods the emit the
code which is patchable and the
On 2011/02/09 13:57:16, Alexandre wrote:
> typo: "the emit the code" -> "to emit the code" ?

Done.

http://codereview.chromium.org/6461017/diff/1/src/arm/full-codegen-arm.cc#new...
src/arm/full-codegen-arm.cc:92: __ cmp_raw_immediate(r0, delta_to_patch_site %
kOff12Mask);
On 2011/02/09 14:35:30, Karl Klose wrote:
> The destination register of the cmp should be reg.

Good catch, fixed.

Powered by Google App Engine
This is Rietveld 408576698