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

Side by Side Diff: src/code-stub-assembler.cc

Issue 2727003006: [turbofan] Drop obsolete unused JSStrictNotEqual operator. (Closed)
Patch Set: Created 3 years, 9 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 unified diff | Download patch
« no previous file with comments | « src/code-stub-assembler.h ('k') | src/compiler/ast-graph-builder.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 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 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 #include "src/code-stub-assembler.h" 4 #include "src/code-stub-assembler.h"
5 #include "src/code-factory.h" 5 #include "src/code-factory.h"
6 #include "src/frames-inl.h" 6 #include "src/frames-inl.h"
7 #include "src/frames.h" 7 #include "src/frames.h"
8 8
9 namespace v8 { 9 namespace v8 {
10 namespace internal { 10 namespace internal {
(...skipping 7305 matching lines...) Expand 10 before | Expand all | Expand 10 after
7316 Bind(&if_notequal); 7316 Bind(&if_notequal);
7317 { 7317 {
7318 result.Bind(BooleanConstant(mode == kNegateResult)); 7318 result.Bind(BooleanConstant(mode == kNegateResult));
7319 Goto(&end); 7319 Goto(&end);
7320 } 7320 }
7321 7321
7322 Bind(&end); 7322 Bind(&end);
7323 return result.value(); 7323 return result.value();
7324 } 7324 }
7325 7325
7326 Node* CodeStubAssembler::StrictEqual(ResultMode mode, Node* lhs, Node* rhs, 7326 Node* CodeStubAssembler::StrictEqual(Node* lhs, Node* rhs, Node* context) {
7327 Node* context) {
7328 // Here's pseudo-code for the algorithm below in case of kDontNegateResult 7327 // Here's pseudo-code for the algorithm below in case of kDontNegateResult
7329 // mode; for kNegateResult mode we properly negate the result. 7328 // mode; for kNegateResult mode we properly negate the result.
7330 // 7329 //
7331 // if (lhs == rhs) { 7330 // if (lhs == rhs) {
7332 // if (lhs->IsHeapNumber()) return HeapNumber::cast(lhs)->value() != NaN; 7331 // if (lhs->IsHeapNumber()) return HeapNumber::cast(lhs)->value() != NaN;
7333 // return true; 7332 // return true;
7334 // } 7333 // }
7335 // if (!lhs->IsSmi()) { 7334 // if (!lhs->IsSmi()) {
7336 // if (lhs->IsHeapNumber()) { 7335 // if (lhs->IsHeapNumber()) {
7337 // if (rhs->IsSmi()) { 7336 // if (rhs->IsSmi()) {
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
7466 Node* rhs_instance_type = LoadInstanceType(rhs); 7465 Node* rhs_instance_type = LoadInstanceType(rhs);
7467 7466
7468 // Check if {rhs} is also a String. 7467 // Check if {rhs} is also a String.
7469 Label if_rhsisstring(this, Label::kDeferred), 7468 Label if_rhsisstring(this, Label::kDeferred),
7470 if_rhsisnotstring(this); 7469 if_rhsisnotstring(this);
7471 Branch(IsStringInstanceType(rhs_instance_type), &if_rhsisstring, 7470 Branch(IsStringInstanceType(rhs_instance_type), &if_rhsisstring,
7472 &if_rhsisnotstring); 7471 &if_rhsisnotstring);
7473 7472
7474 Bind(&if_rhsisstring); 7473 Bind(&if_rhsisstring);
7475 { 7474 {
7476 Callable callable = (mode == kDontNegateResult) 7475 Callable callable = CodeFactory::StringEqual(isolate());
7477 ? CodeFactory::StringEqual(isolate())
7478 : CodeFactory::StringNotEqual(isolate());
7479 result.Bind(CallStub(callable, context, lhs, rhs)); 7476 result.Bind(CallStub(callable, context, lhs, rhs));
7480 Goto(&end); 7477 Goto(&end);
7481 } 7478 }
7482 7479
7483 Bind(&if_rhsisnotstring); 7480 Bind(&if_rhsisnotstring);
7484 Goto(&if_notequal); 7481 Goto(&if_notequal);
7485 } 7482 }
7486 7483
7487 Bind(&if_lhsisnotstring); 7484 Bind(&if_lhsisnotstring);
7488 Goto(&if_notequal); 7485 Goto(&if_notequal);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
7523 } 7520 }
7524 7521
7525 Bind(&if_rhsisnotnumber); 7522 Bind(&if_rhsisnotnumber);
7526 Goto(&if_notequal); 7523 Goto(&if_notequal);
7527 } 7524 }
7528 } 7525 }
7529 } 7526 }
7530 7527
7531 Bind(&if_equal); 7528 Bind(&if_equal);
7532 { 7529 {
7533 result.Bind(BooleanConstant(mode == kDontNegateResult)); 7530 result.Bind(TrueConstant());
7534 Goto(&end); 7531 Goto(&end);
7535 } 7532 }
7536 7533
7537 Bind(&if_notequal); 7534 Bind(&if_notequal);
7538 { 7535 {
7539 result.Bind(BooleanConstant(mode == kNegateResult)); 7536 result.Bind(FalseConstant());
7540 Goto(&end); 7537 Goto(&end);
7541 } 7538 }
7542 7539
7543 Bind(&end); 7540 Bind(&end);
7544 return result.value(); 7541 return result.value();
7545 } 7542 }
7546 7543
7547 // ECMA#sec-samevalue 7544 // ECMA#sec-samevalue
7548 // This algorithm differs from the Strict Equality Comparison Algorithm in its 7545 // This algorithm differs from the Strict Equality Comparison Algorithm in its
7549 // treatment of signed zeroes and NaNs. 7546 // treatment of signed zeroes and NaNs.
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
7614 Bind(&if_floatnotequal); 7611 Bind(&if_floatnotequal);
7615 { 7612 {
7616 var_result.Bind(int_false); 7613 var_result.Bind(int_false);
7617 Goto(&out); 7614 Goto(&out);
7618 } 7615 }
7619 } 7616 }
7620 } 7617 }
7621 7618
7622 Bind(&strict_equal); 7619 Bind(&strict_equal);
7623 { 7620 {
7624 Node* const is_equal = StrictEqual(kDontNegateResult, lhs, rhs, context); 7621 Node* const is_equal = StrictEqual(lhs, rhs, context);
7625 Node* const result = WordEqual(is_equal, TrueConstant()); 7622 Node* const result = WordEqual(is_equal, TrueConstant());
7626 var_result.Bind(result); 7623 var_result.Bind(result);
7627 Goto(&out); 7624 Goto(&out);
7628 } 7625 }
7629 7626
7630 Bind(&out); 7627 Bind(&out);
7631 return var_result.value(); 7628 return var_result.value();
7632 } 7629 }
7633 7630
7634 Node* CodeStubAssembler::ForInFilter(Node* key, Node* object, Node* context) { 7631 Node* CodeStubAssembler::ForInFilter(Node* key, Node* object, Node* context) {
(...skipping 781 matching lines...) Expand 10 before | Expand all | Expand 10 after
8416 formatted.c_str(), TENURED); 8413 formatted.c_str(), TENURED);
8417 CallRuntime(Runtime::kGlobalPrint, NoContextConstant(), 8414 CallRuntime(Runtime::kGlobalPrint, NoContextConstant(),
8418 HeapConstant(string)); 8415 HeapConstant(string));
8419 } 8416 }
8420 CallRuntime(Runtime::kDebugPrint, NoContextConstant(), tagged_value); 8417 CallRuntime(Runtime::kDebugPrint, NoContextConstant(), tagged_value);
8421 #endif 8418 #endif
8422 } 8419 }
8423 8420
8424 } // namespace internal 8421 } // namespace internal
8425 } // namespace v8 8422 } // namespace v8
OLDNEW
« no previous file with comments | « src/code-stub-assembler.h ('k') | src/compiler/ast-graph-builder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698