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

Issue 12871010: Replace scalarlist optimizations and split external array loads into two IL instructions. (Closed)

Created:
7 years, 9 months ago by Florian Schneider
Modified:
7 years, 9 months ago
CC:
reviews_dartlang.org, siva, vm-dev_dartlang.org
Visibility:
Public.

Description

Replace scalarlist optimizations and split external array loads into two IL instructions. This CL removes optimized access for scalarlist, and only the new TypedData classes are optimized. I changed the runtime libraries core and math to use typedData instead of scalarlist (Uint16List is used in StringBuffer, Uint32List by Math.random). Instead of using LoadIndexed for internal and external arrays, split external loads into a load of the backing store and a load of the element. v3 <- LoadIndexed(v1, index) becomes v2 <- LoadUntagged(v1, ExternalTypedData::data_offset) v3 <- LoadIndexed(v2, index); For this I introduce two new representations in the IL: kUntagged (for values that hold a untagged pointer) and kNoRepresentation (for instructions accept any input representation) Deoptimization does not need to know about kUntagged since these values can never occur in the environment. Also with this change: * fix COMPILE_ASSERT and use it in one place. * Cleanup IL printer output of deopt ids. Committed: https://code.google.com/p/dart/source/detail?r=20198

Patch Set 1 #

Patch Set 2 : working version #

Patch Set 3 : #

Patch Set 4 : clean up, passes all tests #

Patch Set 5 : fixed math library, passes all tests #

Total comments: 12

Patch Set 6 : #

Unified diffs Side-by-side diffs Delta from patch set Stats (+349 lines, -532 lines) Patch
M runtime/lib/core_patch.dart View 1 2 1 chunk +1 line, -1 line 0 comments Download
M runtime/lib/math_patch.dart View 1 2 3 4 1 chunk +1 line, -1 line 0 comments Download
M runtime/lib/string.cc View 1 2 2 chunks +2 lines, -3 lines 0 comments Download
M runtime/platform/assert.h View 1 2 chunks +3 lines, -2 lines 0 comments Download
M runtime/vm/deopt_instructions.cc View 1 2 chunks +4 lines, -4 lines 0 comments Download
M runtime/vm/flow_graph_allocator.h View 1 2 3 4 5 6 chunks +7 lines, -8 lines 0 comments Download
M runtime/vm/flow_graph_allocator.cc View 1 2 3 4 5 12 chunks +35 lines, -18 lines 0 comments Download
M runtime/vm/flow_graph_optimizer.h View 1 2 chunks +2 lines, -2 lines 0 comments Download
M runtime/vm/flow_graph_optimizer.cc View 1 2 3 27 chunks +83 lines, -182 lines 0 comments Download
M runtime/vm/flow_graph_type_propagator.cc View 1 1 chunk +5 lines, -0 lines 0 comments Download
M runtime/vm/il_printer.cc View 1 3 chunks +15 lines, -3 lines 0 comments Download
M runtime/vm/intermediate_language.h View 1 2 3 4 5 6 chunks +65 lines, -48 lines 0 comments Download
M runtime/vm/intermediate_language.cc View 1 2 3 5 chunks +13 lines, -30 lines 0 comments Download
M runtime/vm/intermediate_language_ia32.cc View 1 2 3 4 5 20 chunks +45 lines, -108 lines 0 comments Download
M runtime/vm/intermediate_language_x64.cc View 1 2 3 4 5 18 chunks +49 lines, -106 lines 0 comments Download
M runtime/vm/locations.h View 1 2 3 4 5 6 chunks +19 lines, -16 lines 0 comments Download

Messages

Total messages: 4 (0 generated)
Florian Schneider
7 years, 9 months ago (2013-03-18 16:59:59 UTC) #1
Vyacheslav Egorov (Google)
You need artificial dependency between array load and array object. You can't make it depend ...
7 years, 9 months ago (2013-03-18 18:42:29 UTC) #2
Florian Schneider
Currently, I marked LoadUntagged as AffectedBySideEffect to prevent any code hoisting, so it is safe. ...
7 years, 9 months ago (2013-03-19 11:48:57 UTC) #3
Florian Schneider
7 years, 9 months ago (2013-03-19 12:06:44 UTC) #4
Message was sent while issue was closed.
Committed patchset #6 manually as r20198 (presubmit successful).

Powered by Google App Engine
This is Rietveld 408576698