Index: src/runtime.cc |
diff --git a/src/runtime.cc b/src/runtime.cc |
index 9e16bc435d2b665f06f036291b736649669c4b4d..f089d0f2ef2dd1ca7ada00c77f0ed0964a25c5c8 100644 |
--- a/src/runtime.cc |
+++ b/src/runtime.cc |
@@ -678,7 +678,8 @@ static Object* Runtime_GetOwnProperty(Arguments args) { |
// Elements that are stored as array elements always has: |
// writable: true, configurable: true, enumerable: true. |
elms->set(IS_ACCESSOR_INDEX, Heap::false_value()); |
- elms->set(VALUE_INDEX, obj->GetElement(index)); |
+ Object* element = obj->GetElement(index); |
+ elms->set(VALUE_INDEX, element); |
elms->set(WRITABLE_INDEX, Heap::true_value()); |
elms->set(ENUMERABLE_INDEX, Heap::true_value()); |
elms->set(CONFIGURABLE_INDEX, Heap::true_value()); |
@@ -2837,7 +2838,8 @@ static Object* Runtime_StringMatch(Arguments args) { |
for (int i = 0; i < matches ; i++) { |
int from = offsets.at(i * 2); |
int to = offsets.at(i * 2 + 1); |
- elements->set(i, *Factory::NewSubString(subject, from, to)); |
+ Handle<String> match = Factory::NewSubString(subject, from, to); |
+ elements->set(i, *match); |
} |
Handle<JSArray> result = Factory::NewJSArrayWithElements(elements); |
result->set_length(Smi::FromInt(matches)); |
@@ -3105,9 +3107,10 @@ static RegExpImpl::IrregexpResult SearchRegExpMultiple( |
// Arguments array to replace function is match, captures, index and |
// subject, i.e., 3 + capture count in total. |
Handle<FixedArray> elements = Factory::NewFixedArray(3 + capture_count); |
- elements->set(0, *Factory::NewSubString(subject, |
- match_start, |
- match_end)); |
+ Handle<String> match = Factory::NewSubString(subject, |
+ match_start, |
+ match_end); |
+ elements->set(0, *match); |
for (int i = 1; i <= capture_count; i++) { |
int start = register_vector[i * 2]; |
if (start >= 0) { |
@@ -4953,12 +4956,14 @@ static Object* Runtime_StringToArray(Arguments args) { |
length); |
for (int i = num_copied_from_cache; i < length; ++i) { |
- elements->set(i, *LookupSingleCharacterStringFromCode(chars[i])); |
+ Handle<Object> str = LookupSingleCharacterStringFromCode(chars[i]); |
+ elements->set(i, *str); |
} |
} else { |
elements = Factory::NewFixedArray(length); |
for (int i = 0; i < length; ++i) { |
- elements->set(i, *LookupSingleCharacterStringFromCode(s->Get(i))); |
+ Handle<Object> str = LookupSingleCharacterStringFromCode(s->Get(i)); |
+ elements->set(i, *str); |
} |
} |
@@ -7826,7 +7831,8 @@ static Object* Runtime_DebugGetPropertyDetails(Arguments args) { |
uint32_t index; |
if (name->AsArrayIndex(&index)) { |
Handle<FixedArray> details = Factory::NewFixedArray(2); |
- details->set(0, Runtime::GetElementOrCharAt(obj, index)); |
+ Object* element_or_char = Runtime::GetElementOrCharAt(obj, index); |
+ details->set(0, element_or_char); |
details->set(1, PropertyDetails(NONE, NORMAL).AsSmi()); |
return *Factory::NewJSArrayWithElements(details); |
} |
@@ -8628,7 +8634,8 @@ static Object* Runtime_GetScopeDetails(Arguments args) { |
// Fill in scope details. |
details->set(kScopeDetailsTypeIndex, Smi::FromInt(it.Type())); |
- details->set(kScopeDetailsObjectIndex, *it.ScopeObject()); |
+ Handle<JSObject> scope_object = it.ScopeObject(); |
+ details->set(kScopeDetailsObjectIndex, *scope_object); |
return *Factory::NewJSArrayWithElements(details); |
} |
@@ -8673,10 +8680,10 @@ static Object* Runtime_GetCFrames(Arguments args) { |
Handle<FixedArray> frames_array = Factory::NewFixedArray(frames_count); |
for (int i = 0; i < frames_count; i++) { |
Handle<JSObject> frame_value = Factory::NewJSObject(Top::object_function()); |
- frame_value->SetProperty( |
- *address_str, |
- *Factory::NewNumberFromInt(reinterpret_cast<int>(frames[i].address)), |
- NONE); |
+ Handle<Object> frame_address = |
+ Factory::NewNumberFromInt(reinterpret_cast<int>(frames[i].address)); |
+ |
+ frame_value->SetProperty(*address_str, *frame_address, NONE); |
// Get the stack walk text for this frame. |
Handle<String> frame_text; |