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 <iomanip> | 5 #include <iomanip> |
6 #include <sstream> | 6 #include <sstream> |
7 | 7 |
8 #include "src/v8.h" | 8 #include "src/v8.h" |
9 | 9 |
10 #include "src/accessors.h" | 10 #include "src/accessors.h" |
(...skipping 5060 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
5071 // Make sure that the top context does not change when doing callbacks or | 5071 // Make sure that the top context does not change when doing callbacks or |
5072 // interceptor calls. | 5072 // interceptor calls. |
5073 AssertNoContextChange ncc(isolate); | 5073 AssertNoContextChange ncc(isolate); |
5074 | 5074 |
5075 DCHECK_EQ(LookupIterator::INTERCEPTOR, it->state()); | 5075 DCHECK_EQ(LookupIterator::INTERCEPTOR, it->state()); |
5076 Handle<InterceptorInfo> interceptor(it->GetInterceptor()); | 5076 Handle<InterceptorInfo> interceptor(it->GetInterceptor()); |
5077 if (interceptor->deleter()->IsUndefined()) return MaybeHandle<Object>(); | 5077 if (interceptor->deleter()->IsUndefined()) return MaybeHandle<Object>(); |
5078 | 5078 |
5079 Handle<JSObject> holder = it->GetHolder<JSObject>(); | 5079 Handle<JSObject> holder = it->GetHolder<JSObject>(); |
5080 | 5080 |
5081 // TODO(verwaest): Temporary workaround for blink pretending to delete | |
5082 // elements that don't actually exist. | |
5083 Maybe<PropertyAttributes> attributes = | |
5084 GetPropertyAttributesWithInterceptor(it); | |
5085 CHECK(attributes.IsJust()); | |
5086 if (attributes.FromJust() == ABSENT) return MaybeHandle<Object>(); | |
5087 | |
5081 PropertyCallbackArguments args(isolate, interceptor->data(), | 5088 PropertyCallbackArguments args(isolate, interceptor->data(), |
5082 *it->GetReceiver(), *holder); | 5089 *it->GetReceiver(), *holder); |
5083 v8::Handle<v8::Boolean> result; | 5090 v8::Handle<v8::Boolean> result; |
5084 if (it->IsElement()) { | 5091 if (it->IsElement()) { |
5085 uint32_t index = it->index(); | 5092 uint32_t index = it->index(); |
5093 | |
Igor Sheludko
2015/06/12 10:05:25
Spurious change.
| |
5086 v8::IndexedPropertyDeleterCallback deleter = | 5094 v8::IndexedPropertyDeleterCallback deleter = |
5087 v8::ToCData<v8::IndexedPropertyDeleterCallback>(interceptor->deleter()); | 5095 v8::ToCData<v8::IndexedPropertyDeleterCallback>(interceptor->deleter()); |
5088 LOG(isolate, | 5096 LOG(isolate, |
5089 ApiIndexedPropertyAccess("interceptor-indexed-delete", *holder, index)); | 5097 ApiIndexedPropertyAccess("interceptor-indexed-delete", *holder, index)); |
5090 result = args.Call(deleter, index); | 5098 result = args.Call(deleter, index); |
5091 } else if (it->name()->IsSymbol() && !interceptor->can_intercept_symbols()) { | 5099 } else if (it->name()->IsSymbol() && !interceptor->can_intercept_symbols()) { |
5092 return MaybeHandle<Object>(); | 5100 return MaybeHandle<Object>(); |
5093 } else { | 5101 } else { |
5094 Handle<Name> name = it->name(); | 5102 Handle<Name> name = it->name(); |
5095 v8::GenericNamedPropertyDeleterCallback deleter = | 5103 v8::GenericNamedPropertyDeleterCallback deleter = |
(...skipping 11541 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
16637 Handle<Object> new_value) { | 16645 Handle<Object> new_value) { |
16638 if (cell->value() != *new_value) { | 16646 if (cell->value() != *new_value) { |
16639 cell->set_value(*new_value); | 16647 cell->set_value(*new_value); |
16640 Isolate* isolate = cell->GetIsolate(); | 16648 Isolate* isolate = cell->GetIsolate(); |
16641 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 16649 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
16642 isolate, DependentCode::kPropertyCellChangedGroup); | 16650 isolate, DependentCode::kPropertyCellChangedGroup); |
16643 } | 16651 } |
16644 } | 16652 } |
16645 } // namespace internal | 16653 } // namespace internal |
16646 } // namespace v8 | 16654 } // namespace v8 |
OLD | NEW |