| OLD | NEW | 
|---|
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. | 
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without | 
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are | 
| 4 // met: | 4 // met: | 
| 5 // | 5 // | 
| 6 //     * Redistributions of source code must retain the above copyright | 6 //     * Redistributions of source code must retain the above copyright | 
| 7 //       notice, this list of conditions and the following disclaimer. | 7 //       notice, this list of conditions and the following disclaimer. | 
| 8 //     * Redistributions in binary form must reproduce the above | 8 //     * Redistributions in binary form must reproduce the above | 
| 9 //       copyright notice, this list of conditions and the following | 9 //       copyright notice, this list of conditions and the following | 
| 10 //       disclaimer in the documentation and/or other materials provided | 10 //       disclaimer in the documentation and/or other materials provided | 
| (...skipping 2221 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2232 void Genesis::TransferNamedProperties(Handle<JSObject> from, | 2232 void Genesis::TransferNamedProperties(Handle<JSObject> from, | 
| 2233                                       Handle<JSObject> to) { | 2233                                       Handle<JSObject> to) { | 
| 2234   if (from->HasFastProperties()) { | 2234   if (from->HasFastProperties()) { | 
| 2235     Handle<DescriptorArray> descs = | 2235     Handle<DescriptorArray> descs = | 
| 2236         Handle<DescriptorArray>(from->map()->instance_descriptors()); | 2236         Handle<DescriptorArray>(from->map()->instance_descriptors()); | 
| 2237     for (int i = 0; i < descs->number_of_descriptors(); i++) { | 2237     for (int i = 0; i < descs->number_of_descriptors(); i++) { | 
| 2238       PropertyDetails details = descs->GetDetails(i); | 2238       PropertyDetails details = descs->GetDetails(i); | 
| 2239       switch (details.type()) { | 2239       switch (details.type()) { | 
| 2240         case FIELD: { | 2240         case FIELD: { | 
| 2241           HandleScope inner; | 2241           HandleScope inner; | 
| 2242           Handle<String> key = Handle<String>(descs->GetKey(i)); | 2242           Handle<Name> key = Handle<Name>(descs->GetKey(i)); | 
| 2243           int index = descs->GetFieldIndex(i); | 2243           int index = descs->GetFieldIndex(i); | 
| 2244           Handle<Object> value = Handle<Object>(from->FastPropertyAt(index)); | 2244           Handle<Object> value = Handle<Object>(from->FastPropertyAt(index)); | 
| 2245           CHECK_NOT_EMPTY_HANDLE(to->GetIsolate(), | 2245           CHECK_NOT_EMPTY_HANDLE(to->GetIsolate(), | 
| 2246                                  JSObject::SetLocalPropertyIgnoreAttributes( | 2246                                  JSObject::SetLocalPropertyIgnoreAttributes( | 
| 2247                                      to, key, value, details.attributes())); | 2247                                      to, key, value, details.attributes())); | 
| 2248           break; | 2248           break; | 
| 2249         } | 2249         } | 
| 2250         case CONSTANT_FUNCTION: { | 2250         case CONSTANT_FUNCTION: { | 
| 2251           HandleScope inner; | 2251           HandleScope inner; | 
| 2252           Handle<String> key = Handle<String>(descs->GetKey(i)); | 2252           Handle<Name> key = Handle<Name>(descs->GetKey(i)); | 
| 2253           Handle<JSFunction> fun = | 2253           Handle<JSFunction> fun = | 
| 2254               Handle<JSFunction>(descs->GetConstantFunction(i)); | 2254               Handle<JSFunction>(descs->GetConstantFunction(i)); | 
| 2255           CHECK_NOT_EMPTY_HANDLE(to->GetIsolate(), | 2255           CHECK_NOT_EMPTY_HANDLE(to->GetIsolate(), | 
| 2256                                  JSObject::SetLocalPropertyIgnoreAttributes( | 2256                                  JSObject::SetLocalPropertyIgnoreAttributes( | 
| 2257                                      to, key, fun, details.attributes())); | 2257                                      to, key, fun, details.attributes())); | 
| 2258           break; | 2258           break; | 
| 2259         } | 2259         } | 
| 2260         case CALLBACKS: { | 2260         case CALLBACKS: { | 
| 2261           LookupResult result(isolate()); | 2261           LookupResult result(isolate()); | 
| 2262           to->LocalLookup(descs->GetKey(i), &result); | 2262           to->LocalLookup(descs->GetKey(i), &result); | 
| 2263           // If the property is already there we skip it | 2263           // If the property is already there we skip it | 
| 2264           if (result.IsFound()) continue; | 2264           if (result.IsFound()) continue; | 
| 2265           HandleScope inner; | 2265           HandleScope inner; | 
| 2266           ASSERT(!to->HasFastProperties()); | 2266           ASSERT(!to->HasFastProperties()); | 
| 2267           // Add to dictionary. | 2267           // Add to dictionary. | 
| 2268           Handle<String> key = Handle<String>(descs->GetKey(i)); | 2268           Handle<Name> key = Handle<Name>(descs->GetKey(i)); | 
| 2269           Handle<Object> callbacks(descs->GetCallbacksObject(i)); | 2269           Handle<Object> callbacks(descs->GetCallbacksObject(i)); | 
| 2270           PropertyDetails d = PropertyDetails(details.attributes(), | 2270           PropertyDetails d = PropertyDetails(details.attributes(), | 
| 2271                                               CALLBACKS, | 2271                                               CALLBACKS, | 
| 2272                                               details.descriptor_index()); | 2272                                               details.descriptor_index()); | 
| 2273           JSObject::SetNormalizedProperty(to, key, callbacks, d); | 2273           JSObject::SetNormalizedProperty(to, key, callbacks, d); | 
| 2274           break; | 2274           break; | 
| 2275         } | 2275         } | 
| 2276         case NORMAL: | 2276         case NORMAL: | 
| 2277           // Do not occur since the from object has fast properties. | 2277           // Do not occur since the from object has fast properties. | 
| 2278         case HANDLER: | 2278         case HANDLER: | 
| 2279         case INTERCEPTOR: | 2279         case INTERCEPTOR: | 
| 2280         case TRANSITION: | 2280         case TRANSITION: | 
| 2281         case NONEXISTENT: | 2281         case NONEXISTENT: | 
| 2282           // No element in instance descriptors have proxy or interceptor type. | 2282           // No element in instance descriptors have proxy or interceptor type. | 
| 2283           UNREACHABLE(); | 2283           UNREACHABLE(); | 
| 2284           break; | 2284           break; | 
| 2285       } | 2285       } | 
| 2286     } | 2286     } | 
| 2287   } else { | 2287   } else { | 
| 2288     Handle<StringDictionary> properties = | 2288     Handle<NameDictionary> properties = | 
| 2289         Handle<StringDictionary>(from->property_dictionary()); | 2289         Handle<NameDictionary>(from->property_dictionary()); | 
| 2290     int capacity = properties->Capacity(); | 2290     int capacity = properties->Capacity(); | 
| 2291     for (int i = 0; i < capacity; i++) { | 2291     for (int i = 0; i < capacity; i++) { | 
| 2292       Object* raw_key(properties->KeyAt(i)); | 2292       Object* raw_key(properties->KeyAt(i)); | 
| 2293       if (properties->IsKey(raw_key)) { | 2293       if (properties->IsKey(raw_key)) { | 
| 2294         ASSERT(raw_key->IsString()); | 2294         ASSERT(raw_key->IsName()); | 
| 2295         // If the property is already there we skip it. | 2295         // If the property is already there we skip it. | 
| 2296         LookupResult result(isolate()); | 2296         LookupResult result(isolate()); | 
| 2297         to->LocalLookup(String::cast(raw_key), &result); | 2297         to->LocalLookup(Name::cast(raw_key), &result); | 
| 2298         if (result.IsFound()) continue; | 2298         if (result.IsFound()) continue; | 
| 2299         // Set the property. | 2299         // Set the property. | 
| 2300         Handle<String> key = Handle<String>(String::cast(raw_key)); | 2300         Handle<Name> key = Handle<Name>(Name::cast(raw_key)); | 
| 2301         Handle<Object> value = Handle<Object>(properties->ValueAt(i)); | 2301         Handle<Object> value = Handle<Object>(properties->ValueAt(i)); | 
| 2302         if (value->IsJSGlobalPropertyCell()) { | 2302         if (value->IsJSGlobalPropertyCell()) { | 
| 2303           value = Handle<Object>(JSGlobalPropertyCell::cast(*value)->value()); | 2303           value = Handle<Object>(JSGlobalPropertyCell::cast(*value)->value()); | 
| 2304         } | 2304         } | 
| 2305         PropertyDetails details = properties->DetailsAt(i); | 2305         PropertyDetails details = properties->DetailsAt(i); | 
| 2306         CHECK_NOT_EMPTY_HANDLE(to->GetIsolate(), | 2306         CHECK_NOT_EMPTY_HANDLE(to->GetIsolate(), | 
| 2307                                JSObject::SetLocalPropertyIgnoreAttributes( | 2307                                JSObject::SetLocalPropertyIgnoreAttributes( | 
| 2308                                    to, key, value, details.attributes())); | 2308                                    to, key, value, details.attributes())); | 
| 2309       } | 2309       } | 
| 2310     } | 2310     } | 
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2441   return from + sizeof(NestingCounterType); | 2441   return from + sizeof(NestingCounterType); | 
| 2442 } | 2442 } | 
| 2443 | 2443 | 
| 2444 | 2444 | 
| 2445 // Called when the top-level V8 mutex is destroyed. | 2445 // Called when the top-level V8 mutex is destroyed. | 
| 2446 void Bootstrapper::FreeThreadResources() { | 2446 void Bootstrapper::FreeThreadResources() { | 
| 2447   ASSERT(!IsActive()); | 2447   ASSERT(!IsActive()); | 
| 2448 } | 2448 } | 
| 2449 | 2449 | 
| 2450 } }  // namespace v8::internal | 2450 } }  // namespace v8::internal | 
| OLD | NEW | 
|---|