Handle<Object> Factory::NewError(const char* maker, const char* type,
Vector< Handle<Object> > args) {
HandleScope scope;
- Handle<JSArray> array = NewJSArray(args.length());
- for (int i = 0; i < args.length(); i++)
- SetElement(array, i, args[i]);
- Handle<Object> result = NewError(maker, type, array);
+ Handle<FixedArray> array = Factory::NewFixedArray(args.length());
+ for (int i = 0; i < args.length(); i++) {
+ array->set(i, *args[i]);
+ }
+ Handle<JSArray> object = Factory::NewJSArrayWithElements(array);
+ Handle<Object> result = NewError(maker, type, object);
return result.EscapeFrom(&scope);
}
Handle<JSArray> GetKeysFor(Handle<JSObject> object) {
Counters::for_in.Increment();
-
- Handle<FixedArray> content = GetKeysInFixedArrayFor(object);
-
- // Allocate the JSArray with the result.
- Handle<JSArray> obj = Factory::NewJSArray(content->length());
- Handle<JSArray>::cast(obj)->SetContent(*content);
- return Handle<JSArray>::cast(obj);
+ Handle<FixedArray> elements = GetKeysInFixedArrayFor(object);
+ return Factory::NewJSArrayWithElements(elements);
}
LOG(RegExpExecEvent(re, start_index, subject));
int value = Runtime::StringMatch(subject, needle, start_index);
if (value == -1) return Factory::null_value();
- Handle<JSArray> result = Factory::NewJSArray(2);
- SetElement(result, 0, Handle<Smi>(Smi::FromInt(value)));
- SetElement(result, 1, Handle<Smi>(Smi::FromInt(value + needle->length())));
- return result;
+
+ Handle<FixedArray> array = Factory::NewFixedArray(2);
+ array->set(0, Smi::FromInt(value));
+ array->set(1, Smi::FromInt(value + needle->length()));
+ return Factory::NewJSArrayWithElements(array);
}
if (value == -1) break;
HandleScope scope;
int end = value + needle_length;
- Handle<JSArray> pair = Factory::NewJSArray(2);
- SetElement(pair, 0, Handle<Smi>(Smi::FromInt(value)));
- SetElement(pair, 1, Handle<Smi>(Smi::FromInt(end)));
+
+ Handle<FixedArray> array = Factory::NewFixedArray(2);
+ array->set(0, Smi::FromInt(value));
+ array->set(1, Smi::FromInt(end));
+ Handle<JSArray> pair = Factory::NewJSArrayWithElements(array);
SetElement(result, match_count, pair);
match_count++;
index = end;
- if (needle_length == 0)
- index++;
+ if (needle_length == 0) index++;
}
return result;
}
}
ASSERT(code != NULL);
-
// Convert the return address to a ByteArray pointer.
Handle<ByteArray> internal(
ByteArray::FromDataStartAddress(reinterpret_cast<Address>(code)));
return Handle<Object>(Top::Throw(*regexp_err));
}
- Handle<JSArray> result = Factory::NewJSArray(2 * (num_captures+1));
-
+ Handle<FixedArray> array = Factory::NewFixedArray(2 * (num_captures+1));
// The captures come in (start, end+1) pairs.
for (int i = 0; i < 2 * (num_captures+1); i += 2) {
- SetElement(result, i, Handle<Object>(Smi::FromInt(offsets_vector[i])));
- SetElement(result, i+1, Handle<Object>(Smi::FromInt(offsets_vector[i+1])));
+ array->set(i, Smi::FromInt(offsets_vector[i]));
+ array->set(i+1, Smi::FromInt(offsets_vector[i+1]));
}
- return result;
+ return Factory::NewJSArrayWithElements(array);
}
int previous_index = 0;
- Handle<JSArray> result = Factory::NewJSArray(0);
+ Handle<JSArray> result = Factory::NewJSArray(0);
int i = 0;
Handle<Object> matches;