| Index: src/handles-inl.h
|
| diff --git a/src/handles-inl.h b/src/handles-inl.h
|
| index 9d38f3891034695322c14b0d132b73f2db1eff8e..4f4490b75bfa97d2c0aa0d0e03b3833f3a19c8fb 100644
|
| --- a/src/handles-inl.h
|
| +++ b/src/handles-inl.h
|
| @@ -57,7 +57,8 @@ inline bool Handle<T>::is_identical_to(const Handle<T> other) const {
|
| if (location_ == other.location_) return true;
|
| if (location_ == NULL || other.location_ == NULL) return false;
|
| // Dereferencing deferred handles to check object equality is safe.
|
| - SLOW_ASSERT(IsDereferenceAllowed(true) && other.IsDereferenceAllowed(true));
|
| + SLOW_ASSERT(IsDereferenceAllowed(NO_DEFERRED_CHECK) &&
|
| + other.IsDereferenceAllowed(NO_DEFERRED_CHECK));
|
| return *location_ == *other.location_;
|
| }
|
|
|
| @@ -65,20 +66,21 @@ inline bool Handle<T>::is_identical_to(const Handle<T> other) const {
|
| template <typename T>
|
| inline T* Handle<T>::operator*() const {
|
| ASSERT(location_ != NULL && !(*location_)->IsFailure());
|
| - SLOW_ASSERT(IsDereferenceAllowed(false));
|
| + SLOW_ASSERT(IsDereferenceAllowed(INCLUDE_DEFERRED_CHECK));
|
| return *BitCast<T**>(location_);
|
| }
|
|
|
| template <typename T>
|
| inline T** Handle<T>::location() const {
|
| ASSERT(location_ == NULL || !(*location_)->IsFailure());
|
| - SLOW_ASSERT(location_ == NULL || IsDereferenceAllowed(false));
|
| + SLOW_ASSERT(location_ == NULL ||
|
| + IsDereferenceAllowed(INCLUDE_DEFERRED_CHECK));
|
| return location_;
|
| }
|
|
|
| #ifdef DEBUG
|
| template <typename T>
|
| -bool Handle<T>::IsDereferenceAllowed(bool explicitly_allow_deferred) const {
|
| +bool Handle<T>::IsDereferenceAllowed(DereferenceCheckMode mode) const {
|
| ASSERT(location_ != NULL);
|
| Object* object = *BitCast<T**>(location_);
|
| if (object->IsSmi()) return true;
|
| @@ -91,7 +93,7 @@ bool Handle<T>::IsDereferenceAllowed(bool explicitly_allow_deferred) const {
|
| return true;
|
| }
|
| if (!AllowHandleDereference::IsAllowed()) return false;
|
| - if (!explicitly_allow_deferred &&
|
| + if (mode == INCLUDE_DEFERRED_CHECK &&
|
| !AllowDeferredHandleDereference::IsAllowed()) {
|
| // Accessing maps and internalized strings is safe.
|
| if (heap_object->IsMap()) return true;
|
|
|