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

Issue 8569008: Port r10023 to x64 (Add pointer cache field to external string). (Closed)

Created:
9 years, 1 month ago by Yang
Modified:
9 years, 1 month ago
Reviewers:
Lasse Reichstein
CC:
v8-dev
Visibility:
Public.

Description

Port r10023 to x64 (Add pointer cache field to external string).

Patch Set 1 #

Patch Set 2 : . #

Patch Set 3 : . #

Patch Set 4 : . #

Total comments: 6
Unified diffs Side-by-side diffs Delta from patch set Stats (+146 lines, -155 lines) Patch
M src/codegen.h View 1 chunk +0 lines, -17 lines 0 comments Download
M src/ia32/codegen-ia32.h View 1 chunk +16 lines, -0 lines 0 comments Download
M src/ia32/codegen-ia32.cc View 1 1 chunk +1 line, -1 line 1 comment Download
M src/x64/code-stubs-x64.cc View 2 chunks +4 lines, -62 lines 0 comments Download
M src/x64/codegen-x64.h View 1 chunk +15 lines, -0 lines 0 comments Download
M src/x64/codegen-x64.cc View 1 2 3 1 chunk +105 lines, -0 lines 5 comments Download
M src/x64/lithium-codegen-x64.cc View 1 chunk +5 lines, -75 lines 0 comments Download

Messages

Total messages: 2 (0 generated)
Yang
Please take a look.
9 years, 1 month ago (2011-11-18 12:54:25 UTC) #1
Lasse Reichstein
9 years, 1 month ago (2011-11-24 09:21:42 UTC) #2
LGTM.
I'm not sure this includes the addition of short external strings?

http://codereview.chromium.org/8569008/diff/5002/src/ia32/codegen-ia32.cc
File src/ia32/codegen-ia32.cc (right):

http://codereview.chromium.org/8569008/diff/5002/src/ia32/codegen-ia32.cc#new...
src/ia32/codegen-ia32.cc:566: // Assert that the data pointer cache is valid.
This shouldn't be necessary any more, right?
The cache, if it is there, is always valid.
Perhaps put this inside 'if (FLAG_debug_code) {' and make it a real Assert.

http://codereview.chromium.org/8569008/diff/5002/src/x64/codegen-x64.cc
File src/x64/codegen-x64.cc (right):

http://codereview.chromium.org/8569008/diff/5002/src/x64/codegen-x64.cc#newco...
src/x64/codegen-x64.cc:378: __ movzxbl(result, FieldOperand(result,
Map::kInstanceTypeOffset));
If we know that only strings get here, is it possible to expect the instance
type in one of the input registers? We have probably loaded it at some point
prior to getting here.

http://codereview.chromium.org/8569008/diff/5002/src/x64/codegen-x64.cc#newco...
src/x64/codegen-x64.cc:382: __ testb(result, Immediate(kIsIndirectStringMask));
Would it make sense to have kShortExternalStringMask as part of this mask? It
is, after all, not a string that has direct access to character data.

http://codereview.chromium.org/8569008/diff/5002/src/x64/codegen-x64.cc#newco...
src/x64/codegen-x64.cc:406: __ movq(result, FieldOperand(string,
ExternalString::kResourceDataOffset));
Should you be testing for short external strings here, before loading the
resource?

http://codereview.chromium.org/8569008/diff/5002/src/x64/codegen-x64.cc#newco...
src/x64/codegen-x64.cc:409: __ j(zero, call_runtime);
Not necessary?

http://codereview.chromium.org/8569008/diff/5002/src/x64/codegen-x64.cc#newco...
src/x64/codegen-x64.cc:439: // Check whether the string is sequential. The only
non-sequential
Comment seems a little off.
When we get here, we know that the string is either a sequential or an external
string. 
So perhaps write something like "Distinguish between sequential and external
strings" to make it clear what's happening.

Powered by Google App Engine
This is Rietveld 408576698