5412 StackLimitCheck check(
isolate);
5414 if (check.HasOverflowed()) {
5416 return MaybeHandle<JSObject>();
5420 if (object->map()->is_deprecated()) {
5424 Handle<JSObject> copy;
5426 Handle<AllocationSite> site_to_pass;
5431 object, site_to_pass);
5440 FixedArray::cast(copy->elements())->map() ==
5449 if (copy->HasFastProperties()) {
5450 Handle<DescriptorArray> descriptors(copy->map()->instance_descriptors());
5451 int limit = copy->map()->NumberOfOwnDescriptors();
5452 for (
int i = 0;
i < limit;
i++) {
5453 PropertyDetails details = descriptors->GetDetails(
i);
5454 if (details.type() !=
FIELD)
continue;
5455 FieldIndex index = FieldIndex::ForDescriptor(copy->map(),
i);
5456 Handle<Object> value(object->RawFastPropertyAt(index),
isolate);
5457 if (value->IsJSObject()) {
5463 Representation representation = details.representation();
5467 copy->FastPropertyAtPut(index, *value);
5471 Handle<FixedArray> names =
5472 isolate->
factory()->NewFixedArray(copy->NumberOfOwnProperties());
5473 copy->GetOwnPropertyNames(*names, 0);
5474 for (
int i = 0;
i < names->length();
i++) {
5475 DCHECK(names->get(
i)->IsString());
5476 Handle<String> key_string(String::cast(names->get(
i)));
5477 Maybe<PropertyAttributes>
maybe =
5484 if (attributes !=
NONE)
continue;
5485 Handle<Object> value =
5487 if (value->IsJSObject()) {
5488 Handle<JSObject> result;
5503 DCHECK(!copy->HasExternalArrayElements());
5509 Handle<FixedArray> elements(FixedArray::cast(copy->elements()));
5510 if (elements->map() ==
isolate->
heap()->fixed_cow_array_map()) {
5512 for (
int i = 0;
i < elements->length();
i++) {
5513 DCHECK(!elements->get(
i)->IsJSObject());
5517 for (
int i = 0;
i < elements->length();
i++) {
5518 Handle<Object> value(elements->get(
i),
isolate);
5520 value->IsTheHole() ||
5522 if (value->IsJSObject()) {
5523 Handle<JSObject> result;
5529 elements->set(
i, *result);
5537 Handle<SeededNumberDictionary> element_dictionary(
5538 copy->element_dictionary());
5539 int capacity = element_dictionary->Capacity();
5540 for (
int i = 0;
i < capacity;
i++) {
5541 Object* k = element_dictionary->KeyAt(
i);
5542 if (element_dictionary->IsKey(k)) {
5543 Handle<Object> value(element_dictionary->ValueAt(
i),
isolate);
5544 if (value->IsJSObject()) {
5545 Handle<JSObject> result;
5551 element_dictionary->ValueAtPut(
i, *result);
5563 #define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size) \
5564 case EXTERNAL_##TYPE##_ELEMENTS: \
5565 case TYPE##_ELEMENTS: \
5568 #undef TYPED_ARRAY_CASE
static Handle< T > cast(Handle< S > that)
MUST_USE_RESULT MaybeHandle< JSObject > VisitElementOrProperty(Handle< JSObject > object, Handle< JSObject > value)
static void MigrateInstance(Handle< JSObject > instance)
static MUST_USE_RESULT Maybe< PropertyAttributes > GetOwnPropertyAttributes(Handle< JSReceiver > object, Handle< Name > name)
static MUST_USE_RESULT MaybeHandle< Object > GetProperty(LookupIterator *it)
static Handle< Object > NewStorageFor(Isolate *isolate, Handle< Object > object, Representation representation)
static MUST_USE_RESULT MaybeHandle< Object > SetProperty(Handle< Object > object, Handle< Name > key, Handle< Object > value, StrictMode strict_mode, StoreFromKeyed store_mode=MAY_BE_STORE_FROM_KEYED)
#define ASSIGN_RETURN_ON_EXCEPTION(isolate, dst, call, T)
#define DCHECK(condition)
bool IsFastSmiOrObjectElementsKind(ElementsKind kind)
kSerializedDataOffset Object
@ FAST_HOLEY_DOUBLE_ELEMENTS
@ SLOPPY_ARGUMENTS_ELEMENTS
@ FAST_HOLEY_SMI_ELEMENTS
bool IsFastObjectElementsKind(ElementsKind kind)
#define TYPED_ARRAY_CASE(Type, type, TYPE, ctype, size)