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.