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

Unified Diff: src/compiler/js-builtin-reducer.cc

Issue 2397753003: Revert of [turbofan] inline %StringIteratorPrototype%.next in JSBuiltinReducer. (Closed)
Patch Set: Created 4 years, 2 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/compiler/js-builtin-reducer.h ('k') | src/compiler/opcodes.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler/js-builtin-reducer.cc
diff --git a/src/compiler/js-builtin-reducer.cc b/src/compiler/js-builtin-reducer.cc
index 78c3286d059e3d2bf26d98cc8c44121e18230615..762020438878fdbc5566ba07848fd601c870b6ca 100644
--- a/src/compiler/js-builtin-reducer.cc
+++ b/src/compiler/js-builtin-reducer.cc
@@ -1026,139 +1026,6 @@
return NoChange();
}
-Reduction JSBuiltinReducer::ReduceStringIteratorNext(Node* node) {
- Node* receiver = NodeProperties::GetValueInput(node, 1);
- Node* effect = NodeProperties::GetEffectInput(node);
- Node* control = NodeProperties::GetControlInput(node);
- Node* context = NodeProperties::GetContextInput(node);
- if (HasInstanceTypeWitness(receiver, effect, JS_STRING_ITERATOR_TYPE)) {
- Node* string = effect = graph()->NewNode(
- simplified()->LoadField(AccessBuilder::ForJSStringIteratorString()),
- receiver, effect, control);
- Node* index = effect = graph()->NewNode(
- simplified()->LoadField(AccessBuilder::ForJSStringIteratorIndex()),
- receiver, effect, control);
- Node* length = effect = graph()->NewNode(
- simplified()->LoadField(AccessBuilder::ForStringLength()), string,
- effect, control);
-
- // branch0: if (index < length)
- Node* check0 =
- graph()->NewNode(simplified()->NumberLessThan(), index, length);
- Node* branch0 =
- graph()->NewNode(common()->Branch(BranchHint::kTrue), check0, control);
-
- Node* etrue0 = effect;
- Node* if_true0 = graph()->NewNode(common()->IfTrue(), branch0);
- Node* done_true;
- Node* vtrue0;
- {
- done_true = jsgraph()->FalseConstant();
- Node* lead = graph()->NewNode(simplified()->StringCharCodeAt(), string,
- index, if_true0);
-
- // branch1: if ((lead & 0xFC00) === 0xD800)
- Node* check1 = graph()->NewNode(
- simplified()->NumberEqual(),
- graph()->NewNode(simplified()->NumberBitwiseAnd(), lead,
- jsgraph()->Int32Constant(0xFC00)),
- jsgraph()->Int32Constant(0xD800));
- Node* branch1 = graph()->NewNode(common()->Branch(BranchHint::kFalse),
- check1, if_true0);
- Node* if_true1 = graph()->NewNode(common()->IfTrue(), branch1);
- Node* vtrue1;
- {
- Node* next_index = graph()->NewNode(simplified()->NumberAdd(), index,
- jsgraph()->OneConstant());
- // branch2: if ((index + 1) < length)
- Node* check2 = graph()->NewNode(simplified()->NumberLessThan(),
- next_index, length);
- Node* branch2 = graph()->NewNode(common()->Branch(BranchHint::kTrue),
- check2, if_true1);
- Node* if_true2 = graph()->NewNode(common()->IfTrue(), branch2);
- Node* vtrue2;
- {
- Node* trail = graph()->NewNode(simplified()->StringCharCodeAt(),
- string, next_index, if_true2);
- // branch3: if ((trail & 0xFC00) === 0xDC00)
- Node* check3 = graph()->NewNode(
- simplified()->NumberEqual(),
- graph()->NewNode(simplified()->NumberBitwiseAnd(), trail,
- jsgraph()->Int32Constant(0xFC00)),
- jsgraph()->Int32Constant(0xDC00));
- Node* branch3 = graph()->NewNode(common()->Branch(BranchHint::kTrue),
- check3, if_true2);
- Node* if_true3 = graph()->NewNode(common()->IfTrue(), branch3);
- Node* vtrue3;
- {
- vtrue3 = graph()->NewNode(
- simplified()->NumberBitwiseOr(),
- graph()->NewNode(simplified()->NumberShiftLeft(), trail,
- jsgraph()->Int32Constant(16)),
- lead);
- }
-
- Node* if_false3 = graph()->NewNode(common()->IfFalse(), branch3);
- Node* vfalse3 = lead;
- if_true2 = graph()->NewNode(common()->Merge(2), if_true3, if_false3);
- vtrue2 =
- graph()->NewNode(common()->Phi(MachineRepresentation::kWord32, 2),
- vtrue3, vfalse3, if_true2);
- }
-
- Node* if_false2 = graph()->NewNode(common()->IfFalse(), branch2);
- Node* vfalse2 = lead;
- if_true1 = graph()->NewNode(common()->Merge(2), if_true2, if_false2);
- vtrue1 =
- graph()->NewNode(common()->Phi(MachineRepresentation::kWord32, 2),
- vtrue2, vfalse2, if_true1);
- }
-
- Node* if_false1 = graph()->NewNode(common()->IfFalse(), branch1);
- Node* vfalse1 = lead;
- if_true0 = graph()->NewNode(common()->Merge(2), if_true1, if_false1);
- vtrue0 =
- graph()->NewNode(common()->Phi(MachineRepresentation::kWord32, 2),
- vtrue1, vfalse1, if_true0);
- vtrue0 = graph()->NewNode(
- simplified()->StringFromCodePoint(UnicodeEncoding::UTF16), vtrue0);
-
- // Update iterator.[[NextIndex]]
- Node* char_length = etrue0 = graph()->NewNode(
- simplified()->LoadField(AccessBuilder::ForStringLength()), vtrue0,
- etrue0, if_true0);
- index = graph()->NewNode(simplified()->NumberAdd(), index, char_length);
- etrue0 = graph()->NewNode(
- simplified()->StoreField(AccessBuilder::ForJSStringIteratorIndex()),
- receiver, index, etrue0, if_true0);
- }
-
- Node* if_false0 = graph()->NewNode(common()->IfFalse(), branch0);
- Node* done_false;
- Node* vfalse0;
- {
- vfalse0 = jsgraph()->UndefinedConstant();
- done_false = jsgraph()->TrueConstant();
- }
-
- control = graph()->NewNode(common()->Merge(2), if_true0, if_false0);
- effect = graph()->NewNode(common()->EffectPhi(2), etrue0, effect, control);
- Node* value =
- graph()->NewNode(common()->Phi(MachineRepresentation::kTagged, 2),
- vtrue0, vfalse0, control);
- Node* done =
- graph()->NewNode(common()->Phi(MachineRepresentation::kTagged, 2),
- done_true, done_false, control);
-
- value = effect = graph()->NewNode(javascript()->CreateIterResultObject(),
- value, done, context, effect);
-
- ReplaceWithValue(node, value, effect, control);
- return Replace(value);
- }
- return NoChange();
-}
-
Reduction JSBuiltinReducer::ReduceArrayBufferViewAccessor(
Node* node, InstanceType instance_type, FieldAccess const& access) {
Node* receiver = NodeProperties::GetValueInput(node, 1);
@@ -1328,8 +1195,6 @@
return ReduceStringCharAt(node);
case kStringCharCodeAt:
return ReduceStringCharCodeAt(node);
- case kStringIteratorNext:
- return ReduceStringIteratorNext(node);
case kDataViewByteLength:
return ReduceArrayBufferViewAccessor(
node, JS_DATA_VIEW_TYPE,
@@ -1389,10 +1254,6 @@
return jsgraph()->simplified();
}
-JSOperatorBuilder* JSBuiltinReducer::javascript() const {
- return jsgraph()->javascript();
-}
-
} // namespace compiler
} // namespace internal
} // namespace v8
« no previous file with comments | « src/compiler/js-builtin-reducer.h ('k') | src/compiler/opcodes.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698