| 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/objects.h" |      5 #include "src/objects.h" | 
|      6  |      6  | 
|      7 #include <cmath> |      7 #include <cmath> | 
|      8 #include <iomanip> |      8 #include <iomanip> | 
|      9 #include <sstream> |      9 #include <sstream> | 
|     10  |     10  | 
| (...skipping 993 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   1004  |   1004  | 
|   1005   // Cross-Origin [[Get]] of Well-Known Symbols does not throw, and returns |   1005   // Cross-Origin [[Get]] of Well-Known Symbols does not throw, and returns | 
|   1006   // undefined. |   1006   // undefined. | 
|   1007   Handle<Name> name = it->GetName(); |   1007   Handle<Name> name = it->GetName(); | 
|   1008   if (name->IsSymbol() && Symbol::cast(*name)->is_well_known_symbol()) { |   1008   if (name->IsSymbol() && Symbol::cast(*name)->is_well_known_symbol()) { | 
|   1009     return it->factory()->undefined_value(); |   1009     return it->factory()->undefined_value(); | 
|   1010   } |   1010   } | 
|   1011  |   1011  | 
|   1012   it->isolate()->ReportFailedAccessCheck(checked); |   1012   it->isolate()->ReportFailedAccessCheck(checked); | 
|   1013   RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(it->isolate(), Object); |   1013   RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(it->isolate(), Object); | 
|   1014   return it->factory()->undefined_value(); |   1014   UNREACHABLE(); | 
 |   1015   return MaybeHandle<Object>(); | 
|   1015 } |   1016 } | 
|   1016  |   1017  | 
|   1017  |   1018  | 
|   1018 Maybe<PropertyAttributes> JSObject::GetPropertyAttributesWithFailedAccessCheck( |   1019 Maybe<PropertyAttributes> JSObject::GetPropertyAttributesWithFailedAccessCheck( | 
|   1019     LookupIterator* it) { |   1020     LookupIterator* it) { | 
|   1020   Handle<JSObject> checked = it->GetHolder<JSObject>(); |   1021   Handle<JSObject> checked = it->GetHolder<JSObject>(); | 
|   1021   while (AllCanRead(it)) { |   1022   while (AllCanRead(it)) { | 
|   1022     if (it->state() == LookupIterator::ACCESSOR) { |   1023     if (it->state() == LookupIterator::ACCESSOR) { | 
|   1023       return Just(it->property_details().attributes()); |   1024       return Just(it->property_details().attributes()); | 
|   1024     } |   1025     } | 
|   1025     DCHECK_EQ(LookupIterator::INTERCEPTOR, it->state()); |   1026     DCHECK_EQ(LookupIterator::INTERCEPTOR, it->state()); | 
|   1026     auto result = GetPropertyAttributesWithInterceptor(it); |   1027     auto result = GetPropertyAttributesWithInterceptor(it); | 
|   1027     if (it->isolate()->has_scheduled_exception()) break; |   1028     if (it->isolate()->has_scheduled_exception()) break; | 
|   1028     if (result.IsJust() && result.FromJust() != ABSENT) return result; |   1029     if (result.IsJust() && result.FromJust() != ABSENT) return result; | 
|   1029   } |   1030   } | 
|   1030   it->isolate()->ReportFailedAccessCheck(checked); |   1031   it->isolate()->ReportFailedAccessCheck(checked); | 
|   1031   RETURN_VALUE_IF_SCHEDULED_EXCEPTION(it->isolate(), |   1032   RETURN_VALUE_IF_SCHEDULED_EXCEPTION(it->isolate(), | 
|   1032                                       Nothing<PropertyAttributes>()); |   1033                                       Nothing<PropertyAttributes>()); | 
|   1033   return Just(ABSENT); |   1034   UNREACHABLE(); | 
 |   1035   return Nothing<PropertyAttributes>(); | 
|   1034 } |   1036 } | 
|   1035  |   1037  | 
|   1036  |   1038  | 
|   1037 // static |   1039 // static | 
|   1038 bool JSObject::AllCanWrite(LookupIterator* it) { |   1040 bool JSObject::AllCanWrite(LookupIterator* it) { | 
|   1039   for (; it->IsFound(); it->Next()) { |   1041   for (; it->IsFound(); it->Next()) { | 
|   1040     if (it->state() == LookupIterator::ACCESSOR) { |   1042     if (it->state() == LookupIterator::ACCESSOR) { | 
|   1041       Handle<Object> accessors = it->GetAccessors(); |   1043       Handle<Object> accessors = it->GetAccessors(); | 
|   1042       if (accessors->IsAccessorInfo()) { |   1044       if (accessors->IsAccessorInfo()) { | 
|   1043         if (AccessorInfo::cast(*accessors)->all_can_write()) return true; |   1045         if (AccessorInfo::cast(*accessors)->all_can_write()) return true; | 
|   1044       } |   1046       } | 
|   1045     } |   1047     } | 
|   1046   } |   1048   } | 
|   1047   return false; |   1049   return false; | 
|   1048 } |   1050 } | 
|   1049  |   1051  | 
|   1050  |   1052  | 
|   1051 Maybe<bool> JSObject::SetPropertyWithFailedAccessCheck( |   1053 Maybe<bool> JSObject::SetPropertyWithFailedAccessCheck( | 
|   1052     LookupIterator* it, Handle<Object> value, ShouldThrow should_throw) { |   1054     LookupIterator* it, Handle<Object> value, ShouldThrow should_throw) { | 
|   1053   Handle<JSObject> checked = it->GetHolder<JSObject>(); |   1055   Handle<JSObject> checked = it->GetHolder<JSObject>(); | 
|   1054   if (AllCanWrite(it)) { |   1056   if (AllCanWrite(it)) { | 
|   1055     // The supplied language-mode is ignored by SetPropertyWithAccessor. |   1057     // The supplied language-mode is ignored by SetPropertyWithAccessor. | 
|   1056     return SetPropertyWithAccessor(it, value, SLOPPY, should_throw); |   1058     return SetPropertyWithAccessor(it, value, SLOPPY, should_throw); | 
|   1057   } |   1059   } | 
|   1058  |   1060  | 
|   1059   it->isolate()->ReportFailedAccessCheck(checked); |   1061   it->isolate()->ReportFailedAccessCheck(checked); | 
|   1060   RETURN_VALUE_IF_SCHEDULED_EXCEPTION(it->isolate(), Nothing<bool>()); |   1062   RETURN_VALUE_IF_SCHEDULED_EXCEPTION(it->isolate(), Nothing<bool>()); | 
|   1061   UNREACHABLE(); |   1063   UNREACHABLE(); | 
|   1062   it->isolate()->Throw( |  | 
|   1063       *it->isolate()->factory()->NewTypeError(MessageTemplate::kNoAccess)); |  | 
|   1064   return Nothing<bool>(); |   1064   return Nothing<bool>(); | 
|   1065 } |   1065 } | 
|   1066  |   1066  | 
|   1067  |   1067  | 
|   1068 void JSObject::SetNormalizedProperty(Handle<JSObject> object, |   1068 void JSObject::SetNormalizedProperty(Handle<JSObject> object, | 
|   1069                                      Handle<Name> name, |   1069                                      Handle<Name> name, | 
|   1070                                      Handle<Object> value, |   1070                                      Handle<Object> value, | 
|   1071                                      PropertyDetails details) { |   1071                                      PropertyDetails details) { | 
|   1072   DCHECK(!object->HasFastProperties()); |   1072   DCHECK(!object->HasFastProperties()); | 
|   1073   if (!name->IsUniqueName()) { |   1073   if (!name->IsUniqueName()) { | 
| (...skipping 3711 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   4785     switch (it->state()) { |   4785     switch (it->state()) { | 
|   4786       case LookupIterator::JSPROXY: |   4786       case LookupIterator::JSPROXY: | 
|   4787       case LookupIterator::NOT_FOUND: |   4787       case LookupIterator::NOT_FOUND: | 
|   4788       case LookupIterator::TRANSITION: |   4788       case LookupIterator::TRANSITION: | 
|   4789         UNREACHABLE(); |   4789         UNREACHABLE(); | 
|   4790  |   4790  | 
|   4791       case LookupIterator::ACCESS_CHECK: |   4791       case LookupIterator::ACCESS_CHECK: | 
|   4792         if (!it->HasAccess()) { |   4792         if (!it->HasAccess()) { | 
|   4793           it->isolate()->ReportFailedAccessCheck(it->GetHolder<JSObject>()); |   4793           it->isolate()->ReportFailedAccessCheck(it->GetHolder<JSObject>()); | 
|   4794           RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(it->isolate(), Object); |   4794           RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(it->isolate(), Object); | 
|   4795           return value; |   4795           UNREACHABLE(); | 
|   4796         } |   4796         } | 
|   4797         break; |   4797         break; | 
|   4798  |   4798  | 
|   4799       // If there's an interceptor, try to store the property with the |   4799       // If there's an interceptor, try to store the property with the | 
|   4800       // interceptor. |   4800       // interceptor. | 
|   4801       // In case of success, the attributes will have been reset to the default |   4801       // In case of success, the attributes will have been reset to the default | 
|   4802       // attributes of the interceptor, rather than the incoming attributes. |   4802       // attributes of the interceptor, rather than the incoming attributes. | 
|   4803       // |   4803       // | 
|   4804       // TODO(verwaest): JSProxy afterwards verify the attributes that the |   4804       // TODO(verwaest): JSProxy afterwards verify the attributes that the | 
|   4805       // JSProxy claims it has, and verifies that they are compatible. If not, |   4805       // JSProxy claims it has, and verifies that they are compatible. If not, | 
| (...skipping 1008 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   5814   for (; it->IsFound(); it->Next()) { |   5814   for (; it->IsFound(); it->Next()) { | 
|   5815     switch (it->state()) { |   5815     switch (it->state()) { | 
|   5816       case LookupIterator::JSPROXY: |   5816       case LookupIterator::JSPROXY: | 
|   5817       case LookupIterator::NOT_FOUND: |   5817       case LookupIterator::NOT_FOUND: | 
|   5818       case LookupIterator::TRANSITION: |   5818       case LookupIterator::TRANSITION: | 
|   5819         UNREACHABLE(); |   5819         UNREACHABLE(); | 
|   5820       case LookupIterator::ACCESS_CHECK: |   5820       case LookupIterator::ACCESS_CHECK: | 
|   5821         if (it->HasAccess()) break; |   5821         if (it->HasAccess()) break; | 
|   5822         isolate->ReportFailedAccessCheck(it->GetHolder<JSObject>()); |   5822         isolate->ReportFailedAccessCheck(it->GetHolder<JSObject>()); | 
|   5823         RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object); |   5823         RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object); | 
|   5824         return it->factory()->false_value(); |   5824         UNREACHABLE(); | 
|   5825       case LookupIterator::INTERCEPTOR: { |   5825       case LookupIterator::INTERCEPTOR: { | 
|   5826         MaybeHandle<Object> maybe_result = |   5826         MaybeHandle<Object> maybe_result = | 
|   5827             JSObject::DeletePropertyWithInterceptor(it); |   5827             JSObject::DeletePropertyWithInterceptor(it); | 
|   5828         // Delete with interceptor succeeded. Return result. |   5828         // Delete with interceptor succeeded. Return result. | 
|   5829         if (!maybe_result.is_null()) return maybe_result; |   5829         if (!maybe_result.is_null()) return maybe_result; | 
|   5830         // An exception was thrown in the interceptor. Propagate. |   5830         // An exception was thrown in the interceptor. Propagate. | 
|   5831         if (isolate->has_pending_exception()) return maybe_result; |   5831         if (isolate->has_pending_exception()) return maybe_result; | 
|   5832         break; |   5832         break; | 
|   5833       } |   5833       } | 
|   5834       case LookupIterator::INTEGER_INDEXED_EXOTIC: |   5834       case LookupIterator::INTEGER_INDEXED_EXOTIC: | 
| (...skipping 940 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   6775  |   6775  | 
|   6776   if (!object->HasSloppyArgumentsElements() && !object->map()->is_observed()) { |   6776   if (!object->HasSloppyArgumentsElements() && !object->map()->is_observed()) { | 
|   6777     return PreventExtensionsWithTransition<NONE>(object, should_throw); |   6777     return PreventExtensionsWithTransition<NONE>(object, should_throw); | 
|   6778   } |   6778   } | 
|   6779  |   6779  | 
|   6780   if (object->IsAccessCheckNeeded() && |   6780   if (object->IsAccessCheckNeeded() && | 
|   6781       !isolate->MayAccess(handle(isolate->context()), object)) { |   6781       !isolate->MayAccess(handle(isolate->context()), object)) { | 
|   6782     isolate->ReportFailedAccessCheck(object); |   6782     isolate->ReportFailedAccessCheck(object); | 
|   6783     RETURN_VALUE_IF_SCHEDULED_EXCEPTION(isolate, Nothing<bool>()); |   6783     RETURN_VALUE_IF_SCHEDULED_EXCEPTION(isolate, Nothing<bool>()); | 
|   6784     UNREACHABLE(); |   6784     UNREACHABLE(); | 
|   6785     RETURN_FAILURE(isolate, should_throw, |  | 
|   6786                    NewTypeError(MessageTemplate::kNoAccess)); |  | 
|   6787   } |   6785   } | 
|   6788  |   6786  | 
|   6789   if (object->IsJSGlobalProxy()) { |   6787   if (object->IsJSGlobalProxy()) { | 
|   6790     PrototypeIterator iter(isolate, object); |   6788     PrototypeIterator iter(isolate, object); | 
|   6791     if (iter.IsAtEnd()) return Just(true); |   6789     if (iter.IsAtEnd()) return Just(true); | 
|   6792     DCHECK(PrototypeIterator::GetCurrent(iter)->IsJSGlobalObject()); |   6790     DCHECK(PrototypeIterator::GetCurrent(iter)->IsJSGlobalObject()); | 
|   6793     return PreventExtensions(PrototypeIterator::GetCurrent<JSObject>(iter), |   6791     return PreventExtensions(PrototypeIterator::GetCurrent<JSObject>(iter), | 
|   6794                              should_throw); |   6792                              should_throw); | 
|   6795   } |   6793   } | 
|   6796  |   6794  | 
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   6876   // Sealing/freezing sloppy arguments should be handled elsewhere. |   6874   // Sealing/freezing sloppy arguments should be handled elsewhere. | 
|   6877   DCHECK(!object->HasSloppyArgumentsElements()); |   6875   DCHECK(!object->HasSloppyArgumentsElements()); | 
|   6878   DCHECK(!object->map()->is_observed()); |   6876   DCHECK(!object->map()->is_observed()); | 
|   6879  |   6877  | 
|   6880   Isolate* isolate = object->GetIsolate(); |   6878   Isolate* isolate = object->GetIsolate(); | 
|   6881   if (object->IsAccessCheckNeeded() && |   6879   if (object->IsAccessCheckNeeded() && | 
|   6882       !isolate->MayAccess(handle(isolate->context()), object)) { |   6880       !isolate->MayAccess(handle(isolate->context()), object)) { | 
|   6883     isolate->ReportFailedAccessCheck(object); |   6881     isolate->ReportFailedAccessCheck(object); | 
|   6884     RETURN_VALUE_IF_SCHEDULED_EXCEPTION(isolate, Nothing<bool>()); |   6882     RETURN_VALUE_IF_SCHEDULED_EXCEPTION(isolate, Nothing<bool>()); | 
|   6885     UNREACHABLE(); |   6883     UNREACHABLE(); | 
|   6886     RETURN_FAILURE(isolate, should_throw, |  | 
|   6887                    NewTypeError(MessageTemplate::kNoAccess)); |  | 
|   6888   } |   6884   } | 
|   6889  |   6885  | 
|   6890   if (object->IsJSGlobalProxy()) { |   6886   if (object->IsJSGlobalProxy()) { | 
|   6891     PrototypeIterator iter(isolate, object); |   6887     PrototypeIterator iter(isolate, object); | 
|   6892     if (iter.IsAtEnd()) return Just(true); |   6888     if (iter.IsAtEnd()) return Just(true); | 
|   6893     DCHECK(PrototypeIterator::GetCurrent(iter)->IsJSGlobalObject()); |   6889     DCHECK(PrototypeIterator::GetCurrent(iter)->IsJSGlobalObject()); | 
|   6894     return PreventExtensionsWithTransition<attrs>( |   6890     return PreventExtensionsWithTransition<attrs>( | 
|   6895         PrototypeIterator::GetCurrent<JSObject>(iter), should_throw); |   6891         PrototypeIterator::GetCurrent<JSObject>(iter), should_throw); | 
|   6896   } |   6892   } | 
|   6897  |   6893  | 
| (...skipping 873 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   7771     } |   7767     } | 
|   7772  |   7768  | 
|   7773     Handle<JSObject> current = PrototypeIterator::GetCurrent<JSObject>(iter); |   7769     Handle<JSObject> current = PrototypeIterator::GetCurrent<JSObject>(iter); | 
|   7774  |   7770  | 
|   7775     // Check access rights if required. |   7771     // Check access rights if required. | 
|   7776     if (current->IsAccessCheckNeeded() && |   7772     if (current->IsAccessCheckNeeded() && | 
|   7777         !isolate->MayAccess(handle(isolate->context()), current)) { |   7773         !isolate->MayAccess(handle(isolate->context()), current)) { | 
|   7778       if (iter.IsAtEnd(PrototypeIterator::END_AT_NON_HIDDEN)) { |   7774       if (iter.IsAtEnd(PrototypeIterator::END_AT_NON_HIDDEN)) { | 
|   7779         isolate->ReportFailedAccessCheck(current); |   7775         isolate->ReportFailedAccessCheck(current); | 
|   7780         RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, FixedArray); |   7776         RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, FixedArray); | 
 |   7777         UNREACHABLE(); | 
|   7781       } |   7778       } | 
|   7782       break; |   7779       break; | 
|   7783     } |   7780     } | 
|   7784  |   7781  | 
|   7785     JSObject::CollectOwnElementKeys(current, &accumulator, |   7782     JSObject::CollectOwnElementKeys(current, &accumulator, | 
|   7786                                     static_cast<PropertyAttributes>(DONT_ENUM)); |   7783                                     static_cast<PropertyAttributes>(DONT_ENUM)); | 
|   7787  |   7784  | 
|   7788     // Add the element keys from the interceptor. |   7785     // Add the element keys from the interceptor. | 
|   7789     if (current->HasIndexedInterceptor()) { |   7786     if (current->HasIndexedInterceptor()) { | 
|   7790       Handle<JSObject> result; |   7787       Handle<JSObject> result; | 
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   7883 MaybeHandle<Object> JSObject::DefineAccessor(LookupIterator* it, |   7880 MaybeHandle<Object> JSObject::DefineAccessor(LookupIterator* it, | 
|   7884                                              Handle<Object> getter, |   7881                                              Handle<Object> getter, | 
|   7885                                              Handle<Object> setter, |   7882                                              Handle<Object> setter, | 
|   7886                                              PropertyAttributes attributes) { |   7883                                              PropertyAttributes attributes) { | 
|   7887   Isolate* isolate = it->isolate(); |   7884   Isolate* isolate = it->isolate(); | 
|   7888  |   7885  | 
|   7889   if (it->state() == LookupIterator::ACCESS_CHECK) { |   7886   if (it->state() == LookupIterator::ACCESS_CHECK) { | 
|   7890     if (!it->HasAccess()) { |   7887     if (!it->HasAccess()) { | 
|   7891       isolate->ReportFailedAccessCheck(it->GetHolder<JSObject>()); |   7888       isolate->ReportFailedAccessCheck(it->GetHolder<JSObject>()); | 
|   7892       RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object); |   7889       RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object); | 
|   7893       return isolate->factory()->undefined_value(); |   7890       UNREACHABLE(); | 
|   7894     } |   7891     } | 
|   7895     it->Next(); |   7892     it->Next(); | 
|   7896   } |   7893   } | 
|   7897  |   7894  | 
|   7898   Handle<JSObject> object = Handle<JSObject>::cast(it->GetReceiver()); |   7895   Handle<JSObject> object = Handle<JSObject>::cast(it->GetReceiver()); | 
|   7899   // Ignore accessors on typed arrays. |   7896   // Ignore accessors on typed arrays. | 
|   7900   if (it->IsElement() && object->HasFixedTypedArrayElements()) { |   7897   if (it->IsElement() && object->HasFixedTypedArrayElements()) { | 
|   7901     return it->factory()->undefined_value(); |   7898     return it->factory()->undefined_value(); | 
|   7902   } |   7899   } | 
|   7903  |   7900  | 
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   7948  |   7945  | 
|   7949   // Duplicate ACCESS_CHECK outside of GetPropertyAttributes for the case that |   7946   // Duplicate ACCESS_CHECK outside of GetPropertyAttributes for the case that | 
|   7950   // the FailedAccessCheckCallbackFunction doesn't throw an exception. |   7947   // the FailedAccessCheckCallbackFunction doesn't throw an exception. | 
|   7951   // |   7948   // | 
|   7952   // TODO(verwaest): Force throw an exception if the callback doesn't, so we can |   7949   // TODO(verwaest): Force throw an exception if the callback doesn't, so we can | 
|   7953   // remove reliance on default return values. |   7950   // remove reliance on default return values. | 
|   7954   if (it.state() == LookupIterator::ACCESS_CHECK) { |   7951   if (it.state() == LookupIterator::ACCESS_CHECK) { | 
|   7955     if (!it.HasAccess()) { |   7952     if (!it.HasAccess()) { | 
|   7956       isolate->ReportFailedAccessCheck(object); |   7953       isolate->ReportFailedAccessCheck(object); | 
|   7957       RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object); |   7954       RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object); | 
|   7958       return it.factory()->undefined_value(); |   7955       UNREACHABLE(); | 
|   7959     } |   7956     } | 
|   7960     it.Next(); |   7957     it.Next(); | 
|   7961   } |   7958   } | 
|   7962  |   7959  | 
|   7963   // Ignore accessors on typed arrays. |   7960   // Ignore accessors on typed arrays. | 
|   7964   if (it.IsElement() && object->HasFixedTypedArrayElements()) { |   7961   if (it.IsElement() && object->HasFixedTypedArrayElements()) { | 
|   7965     return it.factory()->undefined_value(); |   7962     return it.factory()->undefined_value(); | 
|   7966   } |   7963   } | 
|   7967  |   7964  | 
|   7968   CHECK(GetPropertyAttributes(&it).IsJust()); |   7965   CHECK(GetPropertyAttributes(&it).IsJust()); | 
| (...skipping 26 matching lines...) Expand all  Loading... | 
|   7995     switch (it.state()) { |   7992     switch (it.state()) { | 
|   7996       case LookupIterator::INTERCEPTOR: |   7993       case LookupIterator::INTERCEPTOR: | 
|   7997       case LookupIterator::NOT_FOUND: |   7994       case LookupIterator::NOT_FOUND: | 
|   7998       case LookupIterator::TRANSITION: |   7995       case LookupIterator::TRANSITION: | 
|   7999         UNREACHABLE(); |   7996         UNREACHABLE(); | 
|   8000  |   7997  | 
|   8001       case LookupIterator::ACCESS_CHECK: |   7998       case LookupIterator::ACCESS_CHECK: | 
|   8002         if (it.HasAccess()) continue; |   7999         if (it.HasAccess()) continue; | 
|   8003         isolate->ReportFailedAccessCheck(it.GetHolder<JSObject>()); |   8000         isolate->ReportFailedAccessCheck(it.GetHolder<JSObject>()); | 
|   8004         RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object); |   8001         RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object); | 
|   8005         return isolate->factory()->undefined_value(); |   8002         UNREACHABLE(); | 
|   8006  |   8003  | 
|   8007       case LookupIterator::JSPROXY: |   8004       case LookupIterator::JSPROXY: | 
|   8008         return isolate->factory()->undefined_value(); |   8005         return isolate->factory()->undefined_value(); | 
|   8009  |   8006  | 
|   8010       case LookupIterator::INTEGER_INDEXED_EXOTIC: |   8007       case LookupIterator::INTEGER_INDEXED_EXOTIC: | 
|   8011         return isolate->factory()->undefined_value(); |   8008         return isolate->factory()->undefined_value(); | 
|   8012       case LookupIterator::DATA: |   8009       case LookupIterator::DATA: | 
|   8013         continue; |   8010         continue; | 
|   8014       case LookupIterator::ACCESSOR: { |   8011       case LookupIterator::ACCESSOR: { | 
|   8015         Handle<Object> maybe_pair = it.GetAccessors(); |   8012         Handle<Object> maybe_pair = it.GetAccessors(); | 
| (...skipping 9831 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  17847   if (cell->value() != *new_value) { |  17844   if (cell->value() != *new_value) { | 
|  17848     cell->set_value(*new_value); |  17845     cell->set_value(*new_value); | 
|  17849     Isolate* isolate = cell->GetIsolate(); |  17846     Isolate* isolate = cell->GetIsolate(); | 
|  17850     cell->dependent_code()->DeoptimizeDependentCodeGroup( |  17847     cell->dependent_code()->DeoptimizeDependentCodeGroup( | 
|  17851         isolate, DependentCode::kPropertyCellChangedGroup); |  17848         isolate, DependentCode::kPropertyCellChangedGroup); | 
|  17852   } |  17849   } | 
|  17853 } |  17850 } | 
|  17854  |  17851  | 
|  17855 }  // namespace internal |  17852 }  // namespace internal | 
|  17856 }  // namespace v8 |  17853 }  // namespace v8 | 
| OLD | NEW |