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

Side by Side Diff: src/crankshaft/hydrogen.cc

Issue 2621583002: [crankshaft] Properly deal with null prototype. (Closed)
Patch Set: Created 3 years, 11 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 | « no previous file | test/mjsunit/regress/regress-crbug-679202.js » ('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 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
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
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
OLDNEW
« no previous file with comments | « no previous file | test/mjsunit/regress/regress-crbug-679202.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698