Index: src/objects.cc |
diff --git a/src/objects.cc b/src/objects.cc |
index bed3834246b20b0b928e82bc5bee623c505b0dcb..56f267a676cbb8e6bb0c021138ed11c11c9c4713 100644 |
--- a/src/objects.cc |
+++ b/src/objects.cc |
@@ -6584,7 +6584,7 @@ MaybeObject* Map::ShareDescriptor(DescriptorArray* descriptors, |
} else { |
// Descriptor arrays grow by 50%. |
MaybeObject* maybe_descriptors = DescriptorArray::Allocate( |
- old_size, old_size < 4 ? 1 : old_size / 2); |
+ GetIsolate(), old_size, old_size < 4 ? 1 : old_size / 2); |
if (!maybe_descriptors->To(&new_descriptors)) return maybe_descriptors; |
DescriptorArray::WhitenessWitness witness(new_descriptors); |
@@ -6834,7 +6834,8 @@ MaybeObject* Map::CopyAddDescriptor(Descriptor* descriptor, |
} |
DescriptorArray* new_descriptors; |
- MaybeObject* maybe_descriptors = DescriptorArray::Allocate(old_size, 1); |
+ MaybeObject* maybe_descriptors = |
+ DescriptorArray::Allocate(GetIsolate(), old_size, 1); |
if (!maybe_descriptors->To(&new_descriptors)) return maybe_descriptors; |
DescriptorArray::WhitenessWitness witness(new_descriptors); |
@@ -6881,7 +6882,7 @@ MaybeObject* DescriptorArray::CopyUpToAddAttributes( |
int size = enumeration_index; |
DescriptorArray* descriptors; |
- MaybeObject* maybe_descriptors = Allocate(size); |
+ MaybeObject* maybe_descriptors = Allocate(GetIsolate(), size); |
if (!maybe_descriptors->To(&descriptors)) return maybe_descriptors; |
DescriptorArray::WhitenessWitness witness(descriptors); |
@@ -6928,7 +6929,8 @@ MaybeObject* Map::CopyReplaceDescriptor(DescriptorArray* descriptors, |
ASSERT_LT(insertion_index, new_size); |
DescriptorArray* new_descriptors; |
- MaybeObject* maybe_descriptors = DescriptorArray::Allocate(new_size); |
+ MaybeObject* maybe_descriptors = |
+ DescriptorArray::Allocate(GetIsolate(), new_size); |
if (!maybe_descriptors->To(&new_descriptors)) return maybe_descriptors; |
DescriptorArray::WhitenessWitness witness(new_descriptors); |
@@ -7718,8 +7720,10 @@ bool FixedArray::IsEqualTo(FixedArray* other) { |
#endif |
-MaybeObject* DescriptorArray::Allocate(int number_of_descriptors, int slack) { |
- Heap* heap = Isolate::Current()->heap(); |
+MaybeObject* DescriptorArray::Allocate(Isolate* isolate, |
+ int number_of_descriptors, |
+ int slack) { |
+ Heap* heap = isolate->heap(); |
// Do not use DescriptorArray::cast on incomplete object. |
int size = number_of_descriptors + slack; |
if (size == 0) return heap->empty_descriptor_array(); |
@@ -7787,7 +7791,8 @@ MaybeObject* DescriptorArray::Merge(int verbatim, |
// Allocate a new descriptor array large enough to hold the required |
// descriptors, with minimally the exact same size as this descriptor array. |
MaybeObject* maybe_descriptors = DescriptorArray::Allocate( |
- new_size, Max(new_size, other->number_of_descriptors()) - new_size); |
+ GetIsolate(), new_size, |
+ Max(new_size, other->number_of_descriptors()) - new_size); |
if (!maybe_descriptors->To(&result)) return maybe_descriptors; |
ASSERT(result->length() > length() || |
result->NumberOfSlackDescriptors() > 0 || |
@@ -8003,7 +8008,7 @@ bool Name::IsCacheable(Isolate* isolate) { |
bool String::LooksValid() { |
- if (!Isolate::Current()->heap()->Contains(this)) return false; |
+ if (!GetIsolate()->heap()->Contains(this)) return false; |
return true; |
} |
@@ -8163,8 +8168,7 @@ const uc16* SeqTwoByteString::SeqTwoByteStringGetData(unsigned start) { |
} |
-void Relocatable::PostGarbageCollectionProcessing() { |
- Isolate* isolate = Isolate::Current(); |
+void Relocatable::PostGarbageCollectionProcessing(Isolate* isolate) { |
Relocatable* current = isolate->relocatable_top(); |
while (current != NULL) { |
current->PostGarbageCollection(); |
@@ -8174,8 +8178,8 @@ void Relocatable::PostGarbageCollectionProcessing() { |
// Reserve space for statics needing saving and restoring. |
-int Relocatable::ArchiveSpacePerThread() { |
- return sizeof(Isolate::Current()->relocatable_top()); |
+int Relocatable::ArchiveSpacePerThread(Isolate* isolate) { |
+ return sizeof(isolate->relocatable_top()); |
} |
@@ -8183,26 +8187,26 @@ int Relocatable::ArchiveSpacePerThread() { |
char* Relocatable::ArchiveState(Isolate* isolate, char* to) { |
*reinterpret_cast<Relocatable**>(to) = isolate->relocatable_top(); |
isolate->set_relocatable_top(NULL); |
- return to + ArchiveSpacePerThread(); |
+ return to + ArchiveSpacePerThread(isolate); |
} |
// Restore statics that are thread local. |
char* Relocatable::RestoreState(Isolate* isolate, char* from) { |
isolate->set_relocatable_top(*reinterpret_cast<Relocatable**>(from)); |
- return from + ArchiveSpacePerThread(); |
+ return from + ArchiveSpacePerThread(isolate); |
} |
-char* Relocatable::Iterate(ObjectVisitor* v, char* thread_storage) { |
+char* Relocatable::Iterate( |
+ Isolate* isolate, ObjectVisitor* v, char* thread_storage) { |
Relocatable* top = *reinterpret_cast<Relocatable**>(thread_storage); |
Iterate(v, top); |
- return thread_storage + ArchiveSpacePerThread(); |
+ return thread_storage + ArchiveSpacePerThread(isolate); |
} |
-void Relocatable::Iterate(ObjectVisitor* v) { |
- Isolate* isolate = Isolate::Current(); |
+void Relocatable::Iterate(Isolate* isolate, ObjectVisitor* v) { |
Iterate(v, isolate->relocatable_top()); |
} |
@@ -9316,7 +9320,7 @@ static bool CompileLazyHelper(CompilationInfo* info, |
ASSERT(info->IsOptimizing() || !info->shared_info()->is_compiled()); |
ASSERT(!info->isolate()->has_pending_exception()); |
bool result = Compiler::CompileLazy(info); |
- ASSERT(result != Isolate::Current()->has_pending_exception()); |
+ ASSERT(result != info->isolate()->has_pending_exception()); |
if (!result && flag == CLEAR_EXCEPTION) { |
info->isolate()->clear_pending_exception(); |
} |
@@ -9706,12 +9710,13 @@ bool JSFunction::PassesFilter(const char* raw_filter) { |
} |
-MaybeObject* Oddball::Initialize(const char* to_string, |
+MaybeObject* Oddball::Initialize(Heap* heap, |
+ const char* to_string, |
Object* to_number, |
byte kind) { |
String* internalized_to_string; |
{ MaybeObject* maybe_string = |
- Isolate::Current()->heap()->InternalizeUtf8String( |
+ heap->InternalizeUtf8String( |
CStrVector(to_string)); |
if (!maybe_string->To(&internalized_to_string)) return maybe_string; |
} |
@@ -10432,7 +10437,7 @@ int Code::GetAge() { |
void Code::GetCodeAgeAndParity(Code* code, Age* age, |
MarkingParity* parity) { |
- Isolate* isolate = Isolate::Current(); |
+ Isolate* isolate = code->GetIsolate(); |
Builtins* builtins = isolate->builtins(); |
Code* stub = NULL; |
#define HANDLE_CODE_AGE(AGE) \ |
@@ -15263,7 +15268,7 @@ MaybeObject* NameDictionary::TransformPropertiesToFastFor( |
// Allocate the instance descriptor. |
DescriptorArray* descriptors; |
MaybeObject* maybe_descriptors = |
- DescriptorArray::Allocate(instance_descriptor_length); |
+ DescriptorArray::Allocate(GetIsolate(), instance_descriptor_length); |
if (!maybe_descriptors->To(&descriptors)) { |
return maybe_descriptors; |
} |
@@ -15556,7 +15561,7 @@ void DebugInfo::ClearBreakPoint(Handle<DebugInfo> debug_info, |
int code_position, |
Handle<Object> break_point_object) { |
Handle<Object> break_point_info(debug_info->GetBreakPointInfo(code_position), |
- Isolate::Current()); |
+ debug_info->GetIsolate()); |
if (break_point_info->IsUndefined()) return; |
BreakPointInfo::ClearBreakPoint( |
Handle<BreakPointInfo>::cast(break_point_info), |
@@ -15569,7 +15574,7 @@ void DebugInfo::SetBreakPoint(Handle<DebugInfo> debug_info, |
int source_position, |
int statement_position, |
Handle<Object> break_point_object) { |
- Isolate* isolate = Isolate::Current(); |
+ Isolate* isolate = debug_info->GetIsolate(); |
Handle<Object> break_point_info(debug_info->GetBreakPointInfo(code_position), |
isolate); |
if (!break_point_info->IsUndefined()) { |
@@ -15683,7 +15688,7 @@ int DebugInfo::GetBreakPointInfoIndex(int code_position) { |
// Remove the specified break point object. |
void BreakPointInfo::ClearBreakPoint(Handle<BreakPointInfo> break_point_info, |
Handle<Object> break_point_object) { |
- Isolate* isolate = Isolate::Current(); |
+ Isolate* isolate = break_point_info->GetIsolate(); |
// If there are no break points just ignore. |
if (break_point_info->break_point_objects()->IsUndefined()) return; |
// If there is a single break point clear it if it is the same. |