Reviewers: titzer,

Message:
PTAL

Description:
Improve ==/=== comparison in Hydrogen for monomorphic maps

[email protected]


Please review this at https://codereview.chromium.org/108083004/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+7, -6 lines):
  M src/hydrogen.cc


Index: src/hydrogen.cc
diff --git a/src/hydrogen.cc b/src/hydrogen.cc
index 8dbecac1191d49440fd755860a559cd71b75e2a5..3011bb15a4dd5052c696b233f87d240c63f44904 100644
--- a/src/hydrogen.cc
+++ b/src/hydrogen.cc
@@ -9231,11 +9231,13 @@ void HOptimizedGraphBuilder::VisitCompareOperation(CompareOperation* expr) {
     switch (op) {
       case Token::EQ:
       case Token::EQ_STRICT: {
+        HValue* operand_to_check =
+            left->block()->block_id() < right->block()->block_id()
+                ? left : right;
         // Can we get away with map check and not instance type check?
         if (combined_type->IsClass()) {
           Handle<Map> map = combined_type->AsClass();
-          AddCheckMap(left, map);
-          AddCheckMap(right, map);
+          AddCheckMap(operand_to_check, map);
           HCompareObjectEqAndBranch* result =
               New<HCompareObjectEqAndBranch>(left, right);
           if (FLAG_emit_opt_code_positions) {
@@ -9244,10 +9246,9 @@ void HOptimizedGraphBuilder::VisitCompareOperation(CompareOperation* expr) {
           }
           return ast_context()->ReturnControl(result, expr->id());
         } else {
-          BuildCheckHeapObject(left);
- Add<HCheckInstanceType>(left, HCheckInstanceType::IS_SPEC_OBJECT);
-          BuildCheckHeapObject(right);
- Add<HCheckInstanceType>(right, HCheckInstanceType::IS_SPEC_OBJECT);
+          BuildCheckHeapObject(operand_to_check);
+          Add<HCheckInstanceType>(operand_to_check,
+                                  HCheckInstanceType::IS_SPEC_OBJECT);
           HCompareObjectEqAndBranch* result =
               New<HCompareObjectEqAndBranch>(left, right);
           return ast_context()->ReturnControl(result, expr->id());


--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to