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

Side by Side Diff: src/ic/ic.cc

Issue 2601503002: Add Object::IsNullOrUndefined(Isolate*) helper method (Closed)
Patch Set: fixing merge conflicts 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 | « src/ic/handler-compiler.cc ('k') | src/inspector/string-util.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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/ic/ic.h" 5 #include "src/ic/ic.h"
6 6
7 #include <iostream> 7 #include <iostream>
8 8
9 #include "src/accessors.h" 9 #include "src/accessors.h"
10 #include "src/api-arguments-inl.h" 10 #include "src/api-arguments-inl.h"
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 } 380 }
381 381
382 return true; 382 return true;
383 } 383 }
384 384
385 385
386 void IC::UpdateState(Handle<Object> receiver, Handle<Object> name) { 386 void IC::UpdateState(Handle<Object> receiver, Handle<Object> name) {
387 update_receiver_map(receiver); 387 update_receiver_map(receiver);
388 if (!name->IsString()) return; 388 if (!name->IsString()) return;
389 if (state() != MONOMORPHIC && state() != POLYMORPHIC) return; 389 if (state() != MONOMORPHIC && state() != POLYMORPHIC) return;
390 if (receiver->IsUndefined(isolate()) || receiver->IsNull(isolate())) return; 390 if (receiver->IsNullOrUndefined(isolate())) return;
391 391
392 // Remove the target from the code cache if it became invalid 392 // Remove the target from the code cache if it became invalid
393 // because of changes in the prototype chain to avoid hitting it 393 // because of changes in the prototype chain to avoid hitting it
394 // again. 394 // again.
395 if (ShouldRecomputeHandler(Handle<String>::cast(name))) { 395 if (ShouldRecomputeHandler(Handle<String>::cast(name))) {
396 MarkRecomputeHandler(name); 396 MarkRecomputeHandler(name);
397 } 397 }
398 } 398 }
399 399
400 400
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
657 nexus->ConfigurePolymorphic(maps, transitioned_maps, handlers); 657 nexus->ConfigurePolymorphic(maps, transitioned_maps, handlers);
658 658
659 vector_set_ = true; 659 vector_set_ = true;
660 OnTypeFeedbackChanged(isolate(), get_host()); 660 OnTypeFeedbackChanged(isolate(), get_host());
661 } 661 }
662 662
663 663
664 MaybeHandle<Object> LoadIC::Load(Handle<Object> object, Handle<Name> name) { 664 MaybeHandle<Object> LoadIC::Load(Handle<Object> object, Handle<Name> name) {
665 // If the object is undefined or null it's illegal to try to get any 665 // If the object is undefined or null it's illegal to try to get any
666 // of its properties; throw a TypeError in that case. 666 // of its properties; throw a TypeError in that case.
667 if (object->IsUndefined(isolate()) || object->IsNull(isolate())) { 667 if (object->IsNullOrUndefined(isolate())) {
668 if (FLAG_use_ic && state() != UNINITIALIZED && state() != PREMONOMORPHIC) { 668 if (FLAG_use_ic && state() != UNINITIALIZED && state() != PREMONOMORPHIC) {
669 // Ensure the IC state progresses. 669 // Ensure the IC state progresses.
670 TRACE_HANDLER_STATS(isolate(), LoadIC_NonReceiver); 670 TRACE_HANDLER_STATS(isolate(), LoadIC_NonReceiver);
671 update_receiver_map(object); 671 update_receiver_map(object);
672 PatchCache(name, slow_stub()); 672 PatchCache(name, slow_stub());
673 TRACE_IC("LoadIC", name); 673 TRACE_IC("LoadIC", name);
674 } 674 }
675 return TypeError(MessageTemplate::kNonObjectPropertyLoad, object, name); 675 return TypeError(MessageTemplate::kNonObjectPropertyLoad, object, name);
676 } 676 }
677 677
(...skipping 1133 matching lines...) Expand 10 before | Expand all | Expand 10 after
1811 if (MigrateDeprecated(object) || object->IsJSProxy()) { 1811 if (MigrateDeprecated(object) || object->IsJSProxy()) {
1812 Handle<Object> result; 1812 Handle<Object> result;
1813 ASSIGN_RETURN_ON_EXCEPTION( 1813 ASSIGN_RETURN_ON_EXCEPTION(
1814 isolate(), result, 1814 isolate(), result,
1815 Object::SetProperty(object, name, value, language_mode()), Object); 1815 Object::SetProperty(object, name, value, language_mode()), Object);
1816 return result; 1816 return result;
1817 } 1817 }
1818 1818
1819 // If the object is undefined or null it's illegal to try to set any 1819 // If the object is undefined or null it's illegal to try to set any
1820 // properties on it; throw a TypeError in that case. 1820 // properties on it; throw a TypeError in that case.
1821 if (object->IsUndefined(isolate()) || object->IsNull(isolate())) { 1821 if (object->IsNullOrUndefined(isolate())) {
1822 if (FLAG_use_ic && state() != UNINITIALIZED && state() != PREMONOMORPHIC) { 1822 if (FLAG_use_ic && state() != UNINITIALIZED && state() != PREMONOMORPHIC) {
1823 // Ensure the IC state progresses. 1823 // Ensure the IC state progresses.
1824 TRACE_HANDLER_STATS(isolate(), StoreIC_NonReceiver); 1824 TRACE_HANDLER_STATS(isolate(), StoreIC_NonReceiver);
1825 update_receiver_map(object); 1825 update_receiver_map(object);
1826 PatchCache(name, slow_stub()); 1826 PatchCache(name, slow_stub());
1827 TRACE_IC("StoreIC", name); 1827 TRACE_IC("StoreIC", name);
1828 } 1828 }
1829 return TypeError(MessageTemplate::kNonObjectPropertyStore, object, name); 1829 return TypeError(MessageTemplate::kNonObjectPropertyStore, object, name);
1830 } 1830 }
1831 1831
(...skipping 1380 matching lines...) Expand 10 before | Expand all | Expand 10 after
3212 DCHECK_EQ(LookupIterator::INTERCEPTOR, it.state()); 3212 DCHECK_EQ(LookupIterator::INTERCEPTOR, it.state());
3213 it.Next(); 3213 it.Next();
3214 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, 3214 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result,
3215 Object::GetProperty(&it)); 3215 Object::GetProperty(&it));
3216 } 3216 }
3217 3217
3218 return *result; 3218 return *result;
3219 } 3219 }
3220 } // namespace internal 3220 } // namespace internal
3221 } // namespace v8 3221 } // namespace v8
OLDNEW
« no previous file with comments | « src/ic/handler-compiler.cc ('k') | src/inspector/string-util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698