Reviewers: danno,
Message:
ptal
Description:
remove this == null
[email protected]
BUG=chromium:381910
Please review this at https://codereview.chromium.org/336483002/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+49, -38 lines):
M src/api.cc
M src/factory.cc
M src/heap.cc
M src/hydrogen-load-elimination.cc
M src/spaces.h
M src/spaces.cc
M src/x64/assembler-x64-inl.h
M test/cctest/test-spaces.cc
Index: src/api.cc
diff --git a/src/api.cc b/src/api.cc
index
cc9cd3ae9f60820190948cf403fda7f349a9d9cb..ac9a4894ff5a5da445fb22fac9cce1f826e22466
100644
--- a/src/api.cc
+++ b/src/api.cc
@@ -1192,14 +1192,14 @@ static i::Handle<i::AccessorInfo> MakeAccessorInfo(
Local<ObjectTemplate> FunctionTemplate::InstanceTemplate() {
- i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
- if (!Utils::ApiCheck(this != NULL,
+ i::Handle<i::FunctionTemplateInfo> handle = Utils::OpenHandle(this,
true);
+ if (!Utils::ApiCheck(!handle.is_null(),
"v8::FunctionTemplate::InstanceTemplate()",
"Reading from empty handle")) {
return Local<ObjectTemplate>();
}
+ i::Isolate* isolate = handle->GetIsolate();
ENTER_V8(isolate);
- i::Handle<i::FunctionTemplateInfo> handle = Utils::OpenHandle(this);
if (handle->instance_template()->IsUndefined()) {
Local<ObjectTemplate> templ =
ObjectTemplate::New(isolate,
ToApiHandle<FunctionTemplate>(handle));
@@ -1616,11 +1616,11 @@ Handle<Value> UnboundScript::GetScriptName() {
Local<Value> Script::Run() {
+ i::Handle<i::HeapObject> obj =
+ i::Handle<i::HeapObject>::cast(Utils::OpenHandle(this, true));
// If execution is terminating, Compile(..)->Run() requires this
// check.
- if (this == NULL) return Local<Value>();
- i::Handle<i::HeapObject> obj =
- i::Handle<i::HeapObject>::cast(Utils::OpenHandle(this));
+ if (obj.is_null()) return Local<Value>();
i::Isolate* isolate = obj->GetIsolate();
ON_BAILOUT(isolate, "v8::Script::Run()", return Local<Value>());
LOG_API(isolate, "Script::Run");
@@ -2912,14 +2912,14 @@ int32_t Value::Int32Value() const {
bool Value::Equals(Handle<Value> that) const {
i::Isolate* isolate = i::Isolate::Current();
- if (!Utils::ApiCheck(this != NULL && !that.IsEmpty(),
+ i::Handle<i::Object> obj = Utils::OpenHandle(this, true);
+ if (!Utils::ApiCheck(!obj.is_null() && !that.IsEmpty(),
"v8::Value::Equals()",
"Reading from empty handle")) {
return false;
}
LOG_API(isolate, "Equals");
ENTER_V8(isolate);
- i::Handle<i::Object> obj = Utils::OpenHandle(this);
i::Handle<i::Object> other = Utils::OpenHandle(*that);
// If both obj and other are JSObjects, we'd better compare by identity
// immediately when going into JS builtin. The reason is Invoke
@@ -2939,13 +2939,13 @@ bool Value::Equals(Handle<Value> that) const {
bool Value::StrictEquals(Handle<Value> that) const {
i::Isolate* isolate = i::Isolate::Current();
- if (!Utils::ApiCheck(this != NULL && !that.IsEmpty(),
+ i::Handle<i::Object> obj = Utils::OpenHandle(this, true);
+ if (!Utils::ApiCheck(!obj.is_null() && !that.IsEmpty(),
"v8::Value::StrictEquals()",
"Reading from empty handle")) {
return false;
}
LOG_API(isolate, "StrictEquals");
- i::Handle<i::Object> obj = Utils::OpenHandle(this);
i::Handle<i::Object> other = Utils::OpenHandle(*that);
// Must check HeapNumber first, since NaN !== NaN.
if (obj->IsHeapNumber()) {
@@ -2971,12 +2971,12 @@ bool Value::StrictEquals(Handle<Value> that) const {
bool Value::SameValue(Handle<Value> that) const {
- if (!Utils::ApiCheck(this != NULL && !that.IsEmpty(),
+ i::Handle<i::Object> obj = Utils::OpenHandle(this, true);
+ if (!Utils::ApiCheck(!obj.is_null() && !that.IsEmpty(),
"v8::Value::SameValue()",
"Reading from empty handle")) {
return false;
}
- i::Handle<i::Object> obj = Utils::OpenHandle(this);
i::Handle<i::Object> other = Utils::OpenHandle(*that);
return obj->SameValue(*other);
}
Index: src/factory.cc
diff --git a/src/factory.cc b/src/factory.cc
index
33d856f387e5a1c77a4b02db6bca3bc0711a3a2a..1b91cf0cc5047d91d55ccd11e64e0651840d8fcd
100644
--- a/src/factory.cc
+++ b/src/factory.cc
@@ -1411,7 +1411,8 @@ Handle<Code> Factory::NewCode(const CodeDesc& desc,
int obj_size = Code::SizeFor(body_size);
Handle<Code> code = NewCodeRaw(obj_size, immovable);
- ASSERT(!isolate()->code_range()->exists() ||
+ ASSERT(isolate()->code_range() == NULL ||
+ !isolate()->code_range()->valid() ||
isolate()->code_range()->contains(code->address()));
// The code object has not been fully initialized yet. We rely on the
Index: src/heap.cc
diff --git a/src/heap.cc b/src/heap.cc
index
9e28d012fb71b28a93606ad1e6d08c596f323f18..21a509429efb92e9ff58cac3a8ad26f7f5be0256
100644
--- a/src/heap.cc
+++ b/src/heap.cc
@@ -3365,8 +3365,9 @@ AllocationResult Heap::AllocateCode(int object_size,
result->set_map_no_write_barrier(code_map());
Code* code = Code::cast(result);
- ASSERT(!isolate_->code_range()->exists() ||
- isolate_->code_range()->contains(code->address()));
+ ASSERT(isolate_->code_range() == NULL ||
+ !isolate_->code_range()->valid() ||
+ isolate_->code_range()->contains(code->address()));
code->set_gc_metadata(Smi::FromInt(0));
code->set_ic_age(global_ic_age_);
return code;
@@ -3407,8 +3408,9 @@ AllocationResult Heap::CopyCode(Code* code) {
new_code->set_constant_pool(new_constant_pool);
// Relocate the copy.
- ASSERT(!isolate_->code_range()->exists() ||
- isolate_->code_range()->contains(code->address()));
+ ASSERT(isolate_->code_range() == NULL ||
+ !isolate_->code_range()->valid() ||
+ isolate_->code_range()->contains(code->address()));
new_code->Relocate(new_addr - old_addr);
return new_code;
}
@@ -3471,8 +3473,9 @@ AllocationResult Heap::CopyCode(Code* code,
Vector<byte> reloc_info) {
static_cast<size_t>(reloc_info.length()));
// Relocate the copy.
- ASSERT(!isolate_->code_range()->exists() ||
- isolate_->code_range()->contains(code->address()));
+ ASSERT(isolate_->code_range() == NULL ||
+ !isolate_->code_range()->valid() ||
+ isolate_->code_range()->contains(code->address()));
new_code->Relocate(new_addr - old_addr);
#ifdef VERIFY_HEAP
Index: src/hydrogen-load-elimination.cc
diff --git a/src/hydrogen-load-elimination.cc
b/src/hydrogen-load-elimination.cc
index
bc6707828cae8f3ff4ebfe02560edbf25211d5c5..5cefcf75258ae4128111d9ad7ef1cb01c772e8f6
100644
--- a/src/hydrogen-load-elimination.cc
+++ b/src/hydrogen-load-elimination.cc
@@ -25,11 +25,10 @@ class HFieldApproximation : public ZoneObject {
// Recursively copy the entire linked list of field approximations.
HFieldApproximation* Copy(Zone* zone) {
- if (this == NULL) return NULL;
HFieldApproximation* copy = new(zone) HFieldApproximation();
copy->object_ = this->object_;
copy->last_value_ = this->last_value_;
- copy->next_ = this->next_->Copy(zone);
+ copy->next_ = this->next_ == NULL ? NULL : this->next_->Copy(zone);
return copy;
}
};
@@ -148,7 +147,7 @@ class HLoadEliminationTable : public ZoneObject {
new(zone) HLoadEliminationTable(zone, aliasing_);
copy->EnsureFields(fields_.length());
for (int i = 0; i < fields_.length(); i++) {
- copy->fields_[i] = fields_[i]->Copy(zone);
+ copy->fields_[i] = fields_[i] == NULL ? NULL :
fields_[i]->Copy(zone);
}
if (FLAG_trace_load_elimination) {
TRACE((" copy-to B%d\n", succ->block_id()));
Index: src/spaces.cc
diff --git a/src/spaces.cc b/src/spaces.cc
index
7966a04728c6291e83142eeeda1acf2039c68c77..ab7f41e417f1ead116ac6fa15377a27486d00eb1
100644
--- a/src/spaces.cc
+++ b/src/spaces.cc
@@ -322,9 +322,12 @@ void MemoryAllocator::FreeMemory(VirtualMemory*
reservation,
size_executable_ -= size;
}
// Code which is part of the code-range does not have its own
VirtualMemory.
- ASSERT(!isolate_->code_range()->contains(
- static_cast<Address>(reservation->address())));
- ASSERT(executable == NOT_EXECUTABLE |
| !isolate_->code_range()->exists());
+ ASSERT(isolate_->code_range() == NULL ||
+ !isolate_->code_range()->contains(
+ static_cast<Address>(reservation->address())));
+ ASSERT(executable == NOT_EXECUTABLE ||
+ isolate_->code_range() == NULL ||
+ !isolate_->code_range()->valid());
reservation->Release();
}
@@ -342,11 +345,14 @@ void MemoryAllocator::FreeMemory(Address base,
ASSERT(size_executable_ >= size);
size_executable_ -= size;
}
- if (isolate_->code_range()->contains(static_cast<Address>(base))) {
+ if (isolate_->code_range() != NULL &&
+ isolate_->code_range()->contains(static_cast<Address>(base))) {
ASSERT(executable == EXECUTABLE);
isolate_->code_range()->FreeRawMemory(base, size);
} else {
- ASSERT(executable == NOT_EXECUTABLE |
| !isolate_->code_range()->exists());
+ ASSERT(executable == NOT_EXECUTABLE ||
+ isolate_->code_range() == NULL ||
+ !isolate_->code_range()->valid());
bool result = VirtualMemory::ReleaseRegion(base, size);
USE(result);
ASSERT(result);
@@ -522,7 +528,8 @@ bool MemoryChunk::CommitArea(size_t requested) {
}
} else {
CodeRange* code_range = heap_->isolate()->code_range();
- ASSERT(code_range->exists() && IsFlagSet(IS_EXECUTABLE));
+ ASSERT(code_range != NULL && code_range->valid() &&
+ IsFlagSet(IS_EXECUTABLE));
if (!code_range->CommitRawMemory(start, length)) return false;
}
@@ -538,7 +545,8 @@ bool MemoryChunk::CommitArea(size_t requested) {
if (!reservation_.Uncommit(start, length)) return false;
} else {
CodeRange* code_range = heap_->isolate()->code_range();
- ASSERT(code_range->exists() && IsFlagSet(IS_EXECUTABLE));
+ ASSERT(code_range != NULL && code_range->valid() &&
+ IsFlagSet(IS_EXECUTABLE));
if (!code_range->UncommitRawMemory(start, length)) return false;
}
}
@@ -628,7 +636,7 @@ MemoryChunk* MemoryAllocator::AllocateChunk(intptr_t
reserve_area_size,
OS::CommitPageSize());
// Allocate executable memory either from code range or from the
// OS.
- if (isolate_->code_range()->exists()) {
+ if (isolate_->code_range() != NULL && isolate_->code_range()->valid())
{
base = isolate_->code_range()->AllocateRawMemory(chunk_size,
commit_size,
&chunk_size);
@@ -1050,8 +1058,9 @@ intptr_t PagedSpace::SizeOfFirstPage() {
case PROPERTY_CELL_SPACE:
size = 8 * kPointerSize * KB;
break;
- case CODE_SPACE:
- if (heap()->isolate()->code_range()->exists()) {
+ case CODE_SPACE: {
+ CodeRange* code_range = heap()->isolate()->code_range();
+ if (code_range != NULL && code_range->valid()) {
// When code range exists, code pages are allocated in a special
way
// (from the reserved code range). That part of the code is not yet
// upgraded to handle small pages.
@@ -1062,6 +1071,7 @@ intptr_t PagedSpace::SizeOfFirstPage() {
kPointerSize);
}
break;
+ }
default:
UNREACHABLE();
}
Index: src/spaces.h
diff --git a/src/spaces.h b/src/spaces.h
index
a73daaf93209e39a6d695707658d45f7940fb66d..b11bc1e22d1f8ccb8698e2bde39e440ccab120b3
100644
--- a/src/spaces.h
+++ b/src/spaces.h
@@ -929,13 +929,13 @@ class CodeRange {
// manage it.
void TearDown();
- bool exists() { return this != NULL && code_range_ != NULL; }
+ bool valid() { return code_range_ != NULL; }
Address start() {
- if (this == NULL || code_range_ == NULL) return NULL;
+ ASSERT(valid());
return static_cast<Address>(code_range_->address());
}
bool contains(Address address) {
- if (this == NULL || code_range_ == NULL) return false;
+ if (!valid()) return false;
Address start = static_cast<Address>(code_range_->address());
return start <= address && address < start + code_range_->size();
}
Index: src/x64/assembler-x64-inl.h
diff --git a/src/x64/assembler-x64-inl.h b/src/x64/assembler-x64-inl.h
index
5b508ac8876ed4c5eab862d7dabb46dbedefd813..f1731af34b6b05b9531755e490771420ef2e1f66
100644
--- a/src/x64/assembler-x64-inl.h
+++ b/src/x64/assembler-x64-inl.h
@@ -77,7 +77,6 @@ void Assembler::emit_code_target(Handle<Code> target,
void Assembler::emit_runtime_entry(Address entry, RelocInfo::Mode rmode) {
ASSERT(RelocInfo::IsRuntimeEntry(rmode));
- ASSERT(isolate()->code_range()->exists());
RecordRelocInfo(rmode);
emitl(static_cast<uint32_t>(entry - isolate()->code_range()->start()));
}
@@ -213,7 +212,6 @@ Handle<Object>
Assembler::code_target_object_handle_at(Address pc) {
Address Assembler::runtime_entry_at(Address pc) {
- ASSERT(isolate()->code_range()->exists());
return Memory::int32_at(pc) + isolate()->code_range()->start();
}
Index: test/cctest/test-spaces.cc
diff --git a/test/cctest/test-spaces.cc b/test/cctest/test-spaces.cc
index
16ba98f2fba1bc77ab32cc8f1388476357b60f94..ec5d70404d8398bba26cdd681fd6312d345e5db8
100644
--- a/test/cctest/test-spaces.cc
+++ b/test/cctest/test-spaces.cc
@@ -169,7 +169,7 @@ static void VerifyMemoryChunk(Isolate* isolate,
commit_area_size,
executable,
NULL);
- size_t alignment = code_range->exists() ?
+ size_t alignment = code_range != NULL && code_range->valid() ?
MemoryChunk::kAlignment : OS::CommitPageSize();
size_t reserved_size = ((executable == EXECUTABLE))
? RoundUp(header_size + guard_size + reserve_area_size + guard_size,
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.