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

Side by Side Diff: src/compiler/js-native-context-specialization.cc

Issue 2509623002: [turbofan] Sparse representation for state values (Closed)
Patch Set: Renaming and changing refs to pointers Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/compiler/js-inlining.cc ('k') | src/compiler/simplified-lowering.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/compiler/js-native-context-specialization.h" 5 #include "src/compiler/js-native-context-specialization.h"
6 6
7 #include "src/accessors.h" 7 #include "src/accessors.h"
8 #include "src/code-factory.h" 8 #include "src/code-factory.h"
9 #include "src/compilation-dependencies.h" 9 #include "src/compilation-dependencies.h"
10 #include "src/compiler/access-builder.h" 10 #include "src/compiler/access-builder.h"
(...skipping 988 matching lines...) Expand 10 before | Expand all | Expand 10 after
999 case AccessMode::kLoad: { 999 case AccessMode::kLoad: {
1000 // We need a FrameState for the getter stub to restore the correct 1000 // We need a FrameState for the getter stub to restore the correct
1001 // context before returning to fullcodegen. 1001 // context before returning to fullcodegen.
1002 FrameStateFunctionInfo const* frame_info0 = 1002 FrameStateFunctionInfo const* frame_info0 =
1003 common()->CreateFrameStateFunctionInfo(FrameStateType::kGetterStub, 1003 common()->CreateFrameStateFunctionInfo(FrameStateType::kGetterStub,
1004 1, 0, shared_info); 1004 1, 0, shared_info);
1005 Node* frame_state0 = graph()->NewNode( 1005 Node* frame_state0 = graph()->NewNode(
1006 common()->FrameState(BailoutId::None(), 1006 common()->FrameState(BailoutId::None(),
1007 OutputFrameStateCombine::Ignore(), 1007 OutputFrameStateCombine::Ignore(),
1008 frame_info0), 1008 frame_info0),
1009 graph()->NewNode(common()->StateValues(1), receiver), 1009 graph()->NewNode(common()->StateValues(1, SparseInputMask::Dense()),
1010 receiver),
1010 jsgraph()->EmptyStateValues(), jsgraph()->EmptyStateValues(), 1011 jsgraph()->EmptyStateValues(), jsgraph()->EmptyStateValues(),
1011 context, target, frame_state); 1012 context, target, frame_state);
1012 1013
1013 // Introduce the call to the getter function. 1014 // Introduce the call to the getter function.
1014 if (access_info.constant()->IsJSFunction()) { 1015 if (access_info.constant()->IsJSFunction()) {
1015 value = effect = graph()->NewNode( 1016 value = effect = graph()->NewNode(
1016 javascript()->CallFunction( 1017 javascript()->CallFunction(
1017 2, 0.0f, VectorSlotPair(), 1018 2, 0.0f, VectorSlotPair(),
1018 ConvertReceiverMode::kNotNullOrUndefined), 1019 ConvertReceiverMode::kNotNullOrUndefined),
1019 target, receiver, context, frame_state0, effect, control); 1020 target, receiver, context, frame_state0, effect, control);
(...skipping 16 matching lines...) Expand all
1036 case AccessMode::kStore: { 1037 case AccessMode::kStore: {
1037 // We need a FrameState for the setter stub to restore the correct 1038 // We need a FrameState for the setter stub to restore the correct
1038 // context and return the appropriate value to fullcodegen. 1039 // context and return the appropriate value to fullcodegen.
1039 FrameStateFunctionInfo const* frame_info0 = 1040 FrameStateFunctionInfo const* frame_info0 =
1040 common()->CreateFrameStateFunctionInfo(FrameStateType::kSetterStub, 1041 common()->CreateFrameStateFunctionInfo(FrameStateType::kSetterStub,
1041 2, 0, shared_info); 1042 2, 0, shared_info);
1042 Node* frame_state0 = graph()->NewNode( 1043 Node* frame_state0 = graph()->NewNode(
1043 common()->FrameState(BailoutId::None(), 1044 common()->FrameState(BailoutId::None(),
1044 OutputFrameStateCombine::Ignore(), 1045 OutputFrameStateCombine::Ignore(),
1045 frame_info0), 1046 frame_info0),
1046 graph()->NewNode(common()->StateValues(2), receiver, value), 1047 graph()->NewNode(common()->StateValues(2, SparseInputMask::Dense()),
1048 receiver, value),
1047 jsgraph()->EmptyStateValues(), jsgraph()->EmptyStateValues(), 1049 jsgraph()->EmptyStateValues(), jsgraph()->EmptyStateValues(),
1048 context, target, frame_state); 1050 context, target, frame_state);
1049 1051
1050 // Introduce the call to the setter function. 1052 // Introduce the call to the setter function.
1051 if (access_info.constant()->IsJSFunction()) { 1053 if (access_info.constant()->IsJSFunction()) {
1052 effect = graph()->NewNode( 1054 effect = graph()->NewNode(
1053 javascript()->CallFunction( 1055 javascript()->CallFunction(
1054 3, 0.0f, VectorSlotPair(), 1056 3, 0.0f, VectorSlotPair(),
1055 ConvertReceiverMode::kNotNullOrUndefined), 1057 ConvertReceiverMode::kNotNullOrUndefined),
1056 target, receiver, value, context, frame_state0, effect, control); 1058 target, receiver, value, context, frame_state0, effect, control);
(...skipping 775 matching lines...) Expand 10 before | Expand all | Expand 10 after
1832 return jsgraph()->javascript(); 1834 return jsgraph()->javascript();
1833 } 1835 }
1834 1836
1835 SimplifiedOperatorBuilder* JSNativeContextSpecialization::simplified() const { 1837 SimplifiedOperatorBuilder* JSNativeContextSpecialization::simplified() const {
1836 return jsgraph()->simplified(); 1838 return jsgraph()->simplified();
1837 } 1839 }
1838 1840
1839 } // namespace compiler 1841 } // namespace compiler
1840 } // namespace internal 1842 } // namespace internal
1841 } // namespace v8 1843 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/js-inlining.cc ('k') | src/compiler/simplified-lowering.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698