| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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/crankshaft/hydrogen.h" | 5 #include "src/crankshaft/hydrogen.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <sstream> | 8 #include <sstream> |
| 9 | 9 |
| 10 #include "src/allocation-site-scopes.h" | 10 #include "src/allocation-site-scopes.h" |
| (...skipping 11334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11345 (!to_string_tag.IsFound() || to_string_tag.IsData() || | 11345 (!to_string_tag.IsFound() || to_string_tag.IsData() || |
| 11346 to_string_tag.IsDataConstant()) && | 11346 to_string_tag.IsDataConstant()) && |
| 11347 value_of.CanAccessMonomorphic() && value_of.IsDataConstant() && | 11347 value_of.CanAccessMonomorphic() && value_of.IsDataConstant() && |
| 11348 value_of.constant().is_identical_to(isolate()->object_value_of()) && | 11348 value_of.constant().is_identical_to(isolate()->object_value_of()) && |
| 11349 to_string.CanAccessMonomorphic() && to_string.IsDataConstant() && | 11349 to_string.CanAccessMonomorphic() && to_string.IsDataConstant() && |
| 11350 to_string.constant().is_identical_to( | 11350 to_string.constant().is_identical_to( |
| 11351 isolate()->object_to_string())) { | 11351 isolate()->object_to_string())) { |
| 11352 // We depend on the prototype chain to stay the same, because we | 11352 // We depend on the prototype chain to stay the same, because we |
| 11353 // also need to deoptimize when someone installs @@toPrimitive | 11353 // also need to deoptimize when someone installs @@toPrimitive |
| 11354 // or @@toStringTag somewhere in the prototype chain. | 11354 // or @@toStringTag somewhere in the prototype chain. |
| 11355 BuildCheckPrototypeMaps(handle(JSObject::cast(map->prototype())), | 11355 Handle<Object> prototype(map->prototype(), isolate()); |
| 11356 Handle<JSObject>::null()); | 11356 if (prototype->IsJSObject()) { |
| 11357 BuildCheckPrototypeMaps(Handle<JSObject>::cast(prototype), |
| 11358 Handle<JSObject>::null()); |
| 11359 } |
| 11357 AddCheckMap(left, map); | 11360 AddCheckMap(left, map); |
| 11358 AddCheckMap(right, map); | 11361 AddCheckMap(right, map); |
| 11359 // The caller expects a branch instruction, so make it happy. | 11362 // The caller expects a branch instruction, so make it happy. |
| 11360 return New<HBranch>( | 11363 return New<HBranch>( |
| 11361 graph()->GetConstantBool(op == Token::LTE || op == Token::GTE)); | 11364 graph()->GetConstantBool(op == Token::LTE || op == Token::GTE)); |
| 11362 } | 11365 } |
| 11363 } | 11366 } |
| 11364 Bailout(kUnsupportedNonPrimitiveCompare); | 11367 Bailout(kUnsupportedNonPrimitiveCompare); |
| 11365 return NULL; | 11368 return NULL; |
| 11366 } | 11369 } |
| (...skipping 1642 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13009 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); | 13012 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); |
| 13010 } | 13013 } |
| 13011 | 13014 |
| 13012 #ifdef DEBUG | 13015 #ifdef DEBUG |
| 13013 graph_->Verify(false); // No full verify. | 13016 graph_->Verify(false); // No full verify. |
| 13014 #endif | 13017 #endif |
| 13015 } | 13018 } |
| 13016 | 13019 |
| 13017 } // namespace internal | 13020 } // namespace internal |
| 13018 } // namespace v8 | 13021 } // namespace v8 |
| OLD | NEW |