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

Issue 7901016: Basic support for tracking smi-only arrays on ia32. (Closed)

Created:
9 years, 3 months ago by danno
Modified:
9 years, 2 months ago
CC:
v8-dev
Visibility:
Public.

Description

Basic support for tracking smi-only arrays on ia32. Activated by the flag --smi-only-arrays Currently not crankshaft support, using flag on non-ia32 platforms will lead to write barrier misses and crashes. BUG=none TEST=elements_kind.js Committed: http://code.google.com/p/v8/source/detail?r=9392

Patch Set 1 #

Patch Set 2 : tweaks #

Patch Set 3 : deactivate by default #

Total comments: 69

Patch Set 4 : review feedback and gc merge #

Patch Set 5 : fix merge problems #

Patch Set 6 : merge fixes #

Patch Set 7 : more changes #

Patch Set 8 : fix snapshot #

Patch Set 9 : properly handle smi-only fallback in Crankshaft #

Patch Set 10 : tweaks #

Patch Set 11 : fix failing tests with smi_only_arrays active #

Patch Set 12 : fix remaining failing tests #

Total comments: 20

Patch Set 13 : ready to land #

Total comments: 1
Unified diffs Side-by-side diffs Delta from patch set Stats (+826 lines, -165 lines) Patch
M src/arm/lithium-codegen-arm.cc View 1 2 3 4 5 6 7 8 9 10 11 12 2 chunks +2 lines, -0 lines 0 comments Download
M src/arm/macro-assembler-arm.cc View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +2 lines, -1 line 0 comments Download
M src/arm/stub-cache-arm.cc View 1 2 3 4 5 6 7 8 9 10 11 12 7 chunks +10 lines, -2 lines 0 comments Download
M src/bootstrapper.cc View 1 2 3 4 5 6 7 8 9 10 11 12 2 chunks +17 lines, -0 lines 1 comment Download
M src/builtins.cc View 1 2 3 4 5 6 7 8 9 10 11 17 chunks +58 lines, -11 lines 0 comments Download
M src/code-stubs.cc View 1 2 3 4 5 6 7 8 9 10 11 12 2 chunks +6 lines, -1 line 0 comments Download
M src/elements.cc View 1 2 3 4 chunks +10 lines, -1 line 0 comments Download
M src/factory.h View 1 2 3 4 5 6 7 8 9 10 11 12 2 chunks +7 lines, -1 line 0 comments Download
M src/factory.cc View 1 2 3 4 5 6 7 8 9 10 11 12 3 chunks +26 lines, -4 lines 0 comments Download
M src/flag-definitions.h View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +1 line, -0 lines 0 comments Download
M src/heap.h View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +4 lines, -2 lines 0 comments Download
M src/heap.cc View 1 2 3 4 5 6 7 8 9 10 11 12 5 chunks +14 lines, -4 lines 0 comments Download
M src/hydrogen.cc View 1 2 3 4 5 6 7 8 9 10 11 12 5 chunks +51 lines, -27 lines 0 comments Download
M src/hydrogen-instructions.cc View 2 chunks +2 lines, -0 lines 0 comments Download
M src/ia32/full-codegen-ia32.cc View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +13 lines, -1 line 0 comments Download
M src/ia32/ic-ia32.cc View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +13 lines, -0 lines 0 comments Download
M src/ia32/lithium-codegen-ia32.cc View 1 2 3 4 5 6 7 8 9 10 11 12 2 chunks +2 lines, -0 lines 0 comments Download
M src/ia32/macro-assembler-ia32.h View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +12 lines, -0 lines 0 comments Download
M src/ia32/macro-assembler-ia32.cc View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +26 lines, -1 line 0 comments Download
M src/ia32/stub-cache-ia32.cc View 1 2 3 4 5 6 7 8 9 10 11 12 8 chunks +58 lines, -17 lines 0 comments Download
M src/ic.cc View 1 2 3 1 chunk +1 line, -0 lines 0 comments Download
M src/lithium.cc View 1 2 3 1 chunk +1 line, -0 lines 0 comments Download
M src/liveobjectlist.cc View 1 2 3 3 chunks +9 lines, -3 lines 0 comments Download
M src/mips/macro-assembler-mips.cc View 1 2 3 1 chunk +2 lines, -1 line 0 comments Download
M src/mips/stub-cache-mips.cc View 1 2 3 1 chunk +1 line, -0 lines 0 comments Download
M src/objects.h View 1 2 3 4 5 6 7 8 9 10 11 12 11 chunks +51 lines, -8 lines 0 comments Download
M src/objects.cc View 1 2 3 4 5 6 7 8 9 10 11 12 29 chunks +109 lines, -27 lines 0 comments Download
M src/objects-debug.cc View 1 2 3 2 chunks +3 lines, -2 lines 0 comments Download
M src/objects-inl.h View 1 2 3 4 5 6 7 8 9 10 11 12 10 chunks +110 lines, -15 lines 0 comments Download
M src/objects-printer.cc View 1 2 3 4 5 6 7 8 9 10 11 12 6 chunks +79 lines, -7 lines 0 comments Download
M src/runtime.h View 1 2 3 2 chunks +3 lines, -0 lines 0 comments Download
M src/runtime.cc View 1 2 3 4 5 6 7 8 9 10 11 12 23 chunks +81 lines, -21 lines 0 comments Download
M src/stub-cache.h View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +2 lines, -1 line 0 comments Download
M src/x64/lithium-codegen-x64.cc View 1 2 3 4 5 6 7 8 9 10 11 12 2 chunks +2 lines, -0 lines 0 comments Download
M src/x64/macro-assembler-x64.cc View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +2 lines, -1 line 0 comments Download
M src/x64/stub-cache-x64.cc View 1 2 3 4 5 6 7 8 9 10 11 12 4 chunks +7 lines, -2 lines 0 comments Download
M test/cctest/test-heap.cc View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +2 lines, -1 line 0 comments Download
M test/mjsunit/element-kind.js View 1 2 3 4 5 6 7 8 9 10 3 chunks +27 lines, -3 lines 0 comments Download

Messages

Total messages: 12 (0 generated)
danno
PTAL. Reviewer guidance: Initially, most JSArrays, including arrays allocated with "new Array()" in JavaScript code, ...
9 years, 3 months ago (2011-09-15 14:51:27 UTC) #1
Sven Panne
http://codereview.chromium.org/7901016/diff/4001/src/bootstrapper.cc File src/bootstrapper.cc (right): http://codereview.chromium.org/7901016/diff/4001/src/bootstrapper.cc#newcode1563 src/bootstrapper.cc:1563: // InternalArrays should not use Smi-Only array optimizations Please ...
9 years, 3 months ago (2011-09-16 09:19:32 UTC) #2
Rico
first round of comments, did not look at generated code yet http://codereview.chromium.org/7901016/diff/4001/src/heap.cc File src/heap.cc (right): ...
9 years, 3 months ago (2011-09-16 09:40:10 UTC) #3
Jakob Kummerow
http://codereview.chromium.org/7901016/diff/4001/src/builtins.cc File src/builtins.cc (right): http://codereview.chromium.org/7901016/diff/4001/src/builtins.cc#newcode243 src/builtins.cc:243: AssertNoAllocation no_gc; Scope or move this, you're calling EnsureCanContain<whatever> ...
9 years, 3 months ago (2011-09-16 16:30:34 UTC) #4
Yang
Still in the process of getting familiar with the code, but got two things I ...
9 years, 3 months ago (2011-09-19 14:00:15 UTC) #5
danno
I addressed all the feedback, and made sure that x64 and arm also build and ...
9 years, 3 months ago (2011-09-21 14:32:03 UTC) #6
Yang
I already had a look at the platform-specific code when porting. http://codereview.chromium.org/7901016/diff/28079/src/ia32/full-codegen-ia32.cc File src/ia32/full-codegen-ia32.cc (right): ...
9 years, 3 months ago (2011-09-21 14:47:50 UTC) #7
Jakob Kummerow
LGTM. http://codereview.chromium.org/7901016/diff/28079/test/cctest/test-heap.cc File test/cctest/test-heap.cc (right): http://codereview.chromium.org/7901016/diff/28079/test/cctest/test-heap.cc#newcode676 test/cctest/test-heap.cc:676: CHECK(array->HasFastElements() || array->HasFastSmiOnlyElements()); HasFastTypeElements()
9 years, 3 months ago (2011-09-21 15:42:33 UTC) #8
Sven Panne
LGTM with only a tiny performance consideration (which probably won't make a difference, anyway... :-P ...
9 years, 3 months ago (2011-09-22 07:43:25 UTC) #9
fschneider
stylistic DBCs: http://codereview.chromium.org/7901016/diff/28079/src/ia32/stub-cache-ia32.cc File src/ia32/stub-cache-ia32.cc (right): http://codereview.chromium.org/7901016/diff/28079/src/ia32/stub-cache-ia32.cc#newcode3907 src/ia32/stub-cache-ia32.cc:3907: StoreObjectAction store_object_action) { I find the name ...
9 years, 3 months ago (2011-09-22 07:46:38 UTC) #10
danno
feedback addressed, landing. http://codereview.chromium.org/7901016/diff/28079/src/ia32/full-codegen-ia32.cc File src/ia32/full-codegen-ia32.cc (right): http://codereview.chromium.org/7901016/diff/28079/src/ia32/full-codegen-ia32.cc#newcode1490 src/ia32/full-codegen-ia32.cc:1490: __ mov(ebx, Operand(esp, 0)); // Copy ...
9 years, 3 months ago (2011-09-22 11:23:15 UTC) #11
fschneider
9 years, 2 months ago (2011-10-18 10:30:20 UTC) #12
http://codereview.chromium.org/7901016/diff/29001/src/bootstrapper.cc
File src/bootstrapper.cc (right):

http://codereview.chromium.org/7901016/diff/29001/src/bootstrapper.cc#newcode...
src/bootstrapper.cc:1080: factory->GetElementsTransitionMap(result,
Is this call really necessary? It seems that this always return the same
(current) map because result->map() has already elements kind set to
NON_STRICT_ARGUMENTS_ELEMENTS.

Powered by Google App Engine
This is Rietveld 408576698