Index: src/liveedit.cc |
diff --git a/src/liveedit.cc b/src/liveedit.cc |
index aa906b297fa65ddcc72e6b5f4892776473306eca..a812b759da07e82a5d2b7cf95b2df614a9649f52 100644 |
--- a/src/liveedit.cc |
+++ b/src/liveedit.cc |
@@ -669,13 +669,13 @@ class JSArrayBasedStruct { |
field_position, |
Handle<Smi>(Smi::FromInt(value), isolate())); |
} |
- Object* GetField(int field_position) { |
- return array_->GetElementNoExceptionThrown(isolate(), field_position); |
+ Handle<Object> GetField(int field_position) { |
+ return Object::GetElementNoExceptionThrown( |
+ isolate(), array_, field_position); |
} |
int GetSmiValueField(int field_position) { |
- Object* res = GetField(field_position); |
- CHECK(res->IsSmi()); |
- return Smi::cast(res)->value(); |
+ Handle<Object> res = GetField(field_position); |
+ return Handle<Smi>::cast(res)->value(); |
} |
private: |
@@ -724,17 +724,15 @@ class FunctionInfoWrapper : public JSArrayBasedStruct<FunctionInfoWrapper> { |
return this->GetSmiValueField(kParentIndexOffset_); |
} |
Handle<Code> GetFunctionCode() { |
- Object* element = this->GetField(kCodeOffset_); |
- CHECK(element->IsJSValue()); |
- Handle<JSValue> value_wrapper(JSValue::cast(element)); |
+ Handle<Object> element = this->GetField(kCodeOffset_); |
+ Handle<JSValue> value_wrapper = Handle<JSValue>::cast(element); |
Handle<Object> raw_result = UnwrapJSValue(value_wrapper); |
CHECK(raw_result->IsCode()); |
return Handle<Code>::cast(raw_result); |
} |
Handle<Object> GetCodeScopeInfo() { |
- Object* element = this->GetField(kCodeScopeInfoOffset_); |
- CHECK(element->IsJSValue()); |
- return UnwrapJSValue(Handle<JSValue>(JSValue::cast(element))); |
+ Handle<Object> element = this->GetField(kCodeScopeInfoOffset_); |
+ return UnwrapJSValue(Handle<JSValue>::cast(element)); |
} |
int GetStartPosition() { |
return this->GetSmiValueField(kStartPositionOffset_); |
@@ -767,8 +765,8 @@ class SharedInfoWrapper : public JSArrayBasedStruct<SharedInfoWrapper> { |
public: |
static bool IsInstance(Handle<JSArray> array) { |
return array->length() == Smi::FromInt(kSize_) && |
- array->GetElementNoExceptionThrown( |
- array->GetIsolate(), kSharedInfoOffset_)->IsJSValue(); |
+ Object::GetElementNoExceptionThrown( |
+ array->GetIsolate(), array, kSharedInfoOffset_)->IsJSValue(); |
} |
explicit SharedInfoWrapper(Handle<JSArray> array) |
@@ -785,9 +783,8 @@ class SharedInfoWrapper : public JSArrayBasedStruct<SharedInfoWrapper> { |
this->SetSmiValueField(kEndPositionOffset_, end_position); |
} |
Handle<SharedFunctionInfo> GetInfo() { |
- Object* element = this->GetField(kSharedInfoOffset_); |
- CHECK(element->IsJSValue()); |
- Handle<JSValue> value_wrapper(JSValue::cast(element)); |
+ Handle<Object> element = this->GetField(kSharedInfoOffset_); |
+ Handle<JSValue> value_wrapper = Handle<JSValue>::cast(element); |
return UnwrapSharedFunctionInfoFromJSValue(value_wrapper); |
} |
@@ -826,8 +823,8 @@ class FunctionInfoListener { |
HandleScope scope(isolate()); |
FunctionInfoWrapper info = |
FunctionInfoWrapper::cast( |
- result_->GetElementNoExceptionThrown( |
- isolate(), current_parent_index_)); |
+ *Object::GetElementNoExceptionThrown( |
+ isolate(), result_, current_parent_index_)); |
current_parent_index_ = info.GetParentIndex(); |
} |
@@ -836,8 +833,8 @@ class FunctionInfoListener { |
void FunctionCode(Handle<Code> function_code) { |
FunctionInfoWrapper info = |
FunctionInfoWrapper::cast( |
- result_->GetElementNoExceptionThrown( |
- isolate(), current_parent_index_)); |
+ *Object::GetElementNoExceptionThrown( |
+ isolate(), result_, current_parent_index_)); |
info.SetFunctionCode(function_code, |
Handle<HeapObject>(isolate()->heap()->null_value())); |
} |
@@ -851,8 +848,8 @@ class FunctionInfoListener { |
} |
FunctionInfoWrapper info = |
FunctionInfoWrapper::cast( |
- result_->GetElementNoExceptionThrown( |
- isolate(), current_parent_index_)); |
+ *Object::GetElementNoExceptionThrown( |
+ isolate(), result_, current_parent_index_)); |
info.SetFunctionCode(Handle<Code>(shared->code()), |
Handle<HeapObject>(shared->scope_info())); |
info.SetSharedFunctionInfo(shared); |
@@ -987,7 +984,7 @@ void LiveEdit::WrapSharedFunctionInfos(Handle<JSArray> array) { |
for (int i = 0; i < len; i++) { |
Handle<SharedFunctionInfo> info( |
SharedFunctionInfo::cast( |
- array->GetElementNoExceptionThrown(isolate, i))); |
+ *Object::GetElementNoExceptionThrown(isolate, array, i))); |
SharedInfoWrapper info_wrapper = SharedInfoWrapper::Create(isolate); |
Handle<String> name_handle(String::cast(info->name())); |
info_wrapper.SetProperties(name_handle, info->start_position(), |
@@ -1361,23 +1358,24 @@ static int TranslatePosition(int original_position, |
Isolate* isolate = position_change_array->GetIsolate(); |
// TODO(635): binary search may be used here |
for (int i = 0; i < array_len; i += 3) { |
- Object* element = |
- position_change_array->GetElementNoExceptionThrown(isolate, i); |
+ HandleScope scope(isolate); |
+ Handle<Object> element = Object::GetElementNoExceptionThrown( |
+ isolate, position_change_array, i); |
CHECK(element->IsSmi()); |
- int chunk_start = Smi::cast(element)->value(); |
+ int chunk_start = Handle<Smi>::cast(element)->value(); |
if (original_position < chunk_start) { |
break; |
} |
- element = position_change_array->GetElementNoExceptionThrown(isolate, |
- i + 1); |
+ element = Object::GetElementNoExceptionThrown( |
+ isolate, position_change_array, i + 1); |
CHECK(element->IsSmi()); |
- int chunk_end = Smi::cast(element)->value(); |
+ int chunk_end = Handle<Smi>::cast(element)->value(); |
// Position mustn't be inside a chunk. |
ASSERT(original_position >= chunk_end); |
- element = position_change_array->GetElementNoExceptionThrown(isolate, |
- i + 2); |
+ element = Object::GetElementNoExceptionThrown( |
+ isolate, position_change_array, i + 2); |
CHECK(element->IsSmi()); |
- int chunk_changed_end = Smi::cast(element)->value(); |
+ int chunk_changed_end = Handle<Smi>::cast(element)->value(); |
position_diff = chunk_changed_end - chunk_end; |
} |
@@ -1472,7 +1470,6 @@ static Handle<Code> PatchPositionsInCode( |
code->instruction_start()); |
{ |
- DisallowHeapAllocation no_allocation; |
for (RelocIterator it(*code); !it.done(); it.next()) { |
RelocInfo* rinfo = it.rinfo(); |
if (RelocInfo::IsPosition(rinfo->rmode())) { |
@@ -1631,10 +1628,10 @@ static bool CheckActivation(Handle<JSArray> shared_info_array, |
Isolate* isolate = shared_info_array->GetIsolate(); |
int len = GetArrayLength(shared_info_array); |
for (int i = 0; i < len; i++) { |
- Object* element = |
- shared_info_array->GetElementNoExceptionThrown(isolate, i); |
- CHECK(element->IsJSValue()); |
- Handle<JSValue> jsvalue(JSValue::cast(element)); |
+ HandleScope scope(isolate); |
+ Handle<Object> element = |
+ Object::GetElementNoExceptionThrown(isolate, shared_info_array, i); |
+ Handle<JSValue> jsvalue = Handle<JSValue>::cast(element); |
Handle<SharedFunctionInfo> shared = |
UnwrapSharedFunctionInfoFromJSValue(jsvalue); |
@@ -1949,8 +1946,8 @@ static const char* DropActivationsInActiveThread( |
// Replace "blocked on active" with "replaced on active" status. |
for (int i = 0; i < array_len; i++) { |
- Handle<Object> obj = Object::GetElement(isolate, result, i); |
- CHECK_NOT_EMPTY_HANDLE(isolate, obj); |
+ Handle<Object> obj = |
+ Object::GetElementNoExceptionThrown(isolate, result, i); |
if (*obj == Smi::FromInt(LiveEdit::FUNCTION_BLOCKED_ON_ACTIVE_STACK)) { |
Handle<Object> replaced( |
Smi::FromInt(LiveEdit::FUNCTION_REPLACED_ON_ACTIVE_STACK), isolate); |