| 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); | 
|  |