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