From: jochen@chromium.org Date: Mon, 30 Sep 2013 11:56:52 +0000 (+0000) Subject: Split extra checks into extra checks and handle zapping X-Git-Tag: upstream/4.7.83~12259 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3387afd33e5fb54e7a441ef484198010af98c7c7;p=platform%2Fupstream%2Fv8.git Split extra checks into extra checks and handle zapping That will make it easier to turn on handle zapping alone and experiment with it. R=jkummerow@chromium.org Review URL: https://codereview.chromium.org/25250002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17004 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- diff --git a/Makefile b/Makefile index bcf3bcca0..9c4326ae9 100644 --- a/Makefile +++ b/Makefile @@ -76,10 +76,10 @@ ifeq ($(snapshot), off) endif # extrachecks=on/off ifeq ($(extrachecks), on) - GYPFLAGS += -Dv8_enable_extra_checks=1 + GYPFLAGS += -Dv8_enable_extra_checks=1 -Dv8_enable_handle_zapping=1 endif ifeq ($(extrachecks), off) - GYPFLAGS += -Dv8_enable_extra_checks=0 + GYPFLAGS += -Dv8_enable_extra_checks=0 -Dv8_enable_handle_zapping=0 endif # gdbjit=on/off ifeq ($(gdbjit), on) diff --git a/build/features.gypi b/build/features.gypi index 5343284db..8ef58a9d4 100644 --- a/build/features.gypi +++ b/build/features.gypi @@ -89,21 +89,29 @@ 'Debug': { 'variables': { 'v8_enable_extra_checks%': 1, + 'v8_enable_handle_zapping%': 1, }, 'conditions': [ ['v8_enable_extra_checks==1', { 'defines': ['ENABLE_EXTRA_CHECKS',], }], + ['v8_enable_handle_zapping==1', { + 'defines': ['ENABLE_HANDLE_ZAPPING',], + }], ], }, # Debug 'Release': { 'variables': { 'v8_enable_extra_checks%': 0, + 'v8_enable_handle_zapping%': 0, }, 'conditions': [ ['v8_enable_extra_checks==1', { 'defines': ['ENABLE_EXTRA_CHECKS',], }], + ['v8_enable_handle_zapping==1', { + 'defines': ['ENABLE_HANDLE_ZAPPING',], + }], ], # conditions }, # Release }, # configurations diff --git a/src/api.cc b/src/api.cc index 3f31556d4..544a08307 100644 --- a/src/api.cc +++ b/src/api.cc @@ -7525,7 +7525,7 @@ DeferredHandles::~DeferredHandles() { isolate_->UnlinkDeferredHandles(this); for (int i = 0; i < blocks_.length(); i++) { -#ifdef ENABLE_EXTRA_CHECKS +#ifdef ENABLE_HANDLE_ZAPPING HandleScope::ZapRange(blocks_[i], &blocks_[i][kHandleBlockSize]); #endif isolate_->handle_scope_implementer()->ReturnBlock(blocks_[i]); diff --git a/src/api.h b/src/api.h index 8fb17a07b..9197bafbc 100644 --- a/src/api.h +++ b/src/api.h @@ -667,7 +667,7 @@ void HandleScopeImplementer::DeleteExtensions(internal::Object** prev_limit) { #ifdef DEBUG // SealHandleScope may make the prev_limit to point inside the block. if (block_start <= prev_limit && prev_limit <= block_limit) { -#ifdef ENABLE_EXTRA_CHECKS +#ifdef ENABLE_HANDLE_ZAPPING internal::HandleScope::ZapRange(prev_limit, block_limit); #endif break; @@ -677,7 +677,7 @@ void HandleScopeImplementer::DeleteExtensions(internal::Object** prev_limit) { #endif blocks_.RemoveLast(); -#ifdef ENABLE_EXTRA_CHECKS +#ifdef ENABLE_HANDLE_ZAPPING internal::HandleScope::ZapRange(block_start, block_limit); #endif if (spare_ != NULL) { diff --git a/src/global-handles.cc b/src/global-handles.cc index 1a98e49ff..2ebe1c008 100644 --- a/src/global-handles.cc +++ b/src/global-handles.cc @@ -79,7 +79,7 @@ class GlobalHandles::Node { Internals::kNodeIsPartiallyDependentShift); } -#ifdef ENABLE_EXTRA_CHECKS +#ifdef ENABLE_HANDLE_ZAPPING ~Node() { // TODO(1428): if it's a weak handle we should have invoked its callback. // Zap the values for eager trapping. diff --git a/src/handles-inl.h b/src/handles-inl.h index 185280887..ec69c3fdb 100644 --- a/src/handles-inl.h +++ b/src/handles-inl.h @@ -135,7 +135,7 @@ void HandleScope::CloseScope(Isolate* isolate, if (current->limit != prev_limit) { current->limit = prev_limit; DeleteExtensions(isolate); -#ifdef ENABLE_EXTRA_CHECKS +#ifdef ENABLE_HANDLE_ZAPPING ZapRange(current->next, prev_limit); } else { ZapRange(current->next, prev_next); diff --git a/src/handles.cc b/src/handles.cc index 6b9025dbf..054dde38e 100644 --- a/src/handles.cc +++ b/src/handles.cc @@ -101,7 +101,7 @@ void HandleScope::DeleteExtensions(Isolate* isolate) { } -#ifdef ENABLE_EXTRA_CHECKS +#ifdef ENABLE_HANDLE_ZAPPING void HandleScope::ZapRange(Object** start, Object** end) { ASSERT(end - start <= kHandleBlockSize); for (Object** p = start; p != end; p++) { diff --git a/src/handles.h b/src/handles.h index 0f619d572..05b0c5ed0 100644 --- a/src/handles.h +++ b/src/handles.h @@ -177,7 +177,7 @@ class HandleScope { // Extend the handle scope making room for more handles. static internal::Object** Extend(Isolate* isolate); -#ifdef ENABLE_EXTRA_CHECKS +#ifdef ENABLE_HANDLE_ZAPPING // Zaps the handles in the half-open interval [start, end). static void ZapRange(Object** start, Object** end); #endif