Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(63)

Side by Side Diff: src/bootstrapper.cc

Issue 253843006: Object::Lookup(), JSObject::*Lookup*() and JSReceiver::*Lookup*() handlified. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Addressing review comments Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/api.cc ('k') | src/heap-snapshot-generator.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "bootstrapper.h" 5 #include "bootstrapper.h"
6 6
7 #include "accessors.h" 7 #include "accessors.h"
8 #include "isolate-inl.h" 8 #include "isolate-inl.h"
9 #include "natives.h" 9 #include "natives.h"
10 #include "snapshot.h" 10 #include "snapshot.h"
(...skipping 1093 matching lines...) Expand 10 before | Expand all | Expand 10 after
1104 result, factory->length_string(), 1104 result, factory->length_string(),
1105 factory->undefined_value(), DONT_ENUM, 1105 factory->undefined_value(), DONT_ENUM,
1106 Object::FORCE_TAGGED, FORCE_FIELD).Check(); 1106 Object::FORCE_TAGGED, FORCE_FIELD).Check();
1107 JSObject::SetLocalPropertyIgnoreAttributes( 1107 JSObject::SetLocalPropertyIgnoreAttributes(
1108 result, factory->callee_string(), 1108 result, factory->callee_string(),
1109 factory->undefined_value(), DONT_ENUM, 1109 factory->undefined_value(), DONT_ENUM,
1110 Object::FORCE_TAGGED, FORCE_FIELD).Check(); 1110 Object::FORCE_TAGGED, FORCE_FIELD).Check();
1111 1111
1112 #ifdef DEBUG 1112 #ifdef DEBUG
1113 LookupResult lookup(isolate); 1113 LookupResult lookup(isolate);
1114 result->LocalLookup(heap->callee_string(), &lookup); 1114 result->LocalLookup(factory->callee_string(), &lookup);
1115 ASSERT(lookup.IsField()); 1115 ASSERT(lookup.IsField());
1116 ASSERT(lookup.GetFieldIndex().field_index() == Heap::kArgumentsCalleeIndex); 1116 ASSERT(lookup.GetFieldIndex().field_index() == Heap::kArgumentsCalleeIndex);
1117 1117
1118 result->LocalLookup(heap->length_string(), &lookup); 1118 result->LocalLookup(factory->length_string(), &lookup);
1119 ASSERT(lookup.IsField()); 1119 ASSERT(lookup.IsField());
1120 ASSERT(lookup.GetFieldIndex().field_index() == Heap::kArgumentsLengthIndex); 1120 ASSERT(lookup.GetFieldIndex().field_index() == Heap::kArgumentsLengthIndex);
1121 1121
1122 ASSERT(result->map()->inobject_properties() > Heap::kArgumentsCalleeIndex); 1122 ASSERT(result->map()->inobject_properties() > Heap::kArgumentsCalleeIndex);
1123 ASSERT(result->map()->inobject_properties() > Heap::kArgumentsLengthIndex); 1123 ASSERT(result->map()->inobject_properties() > Heap::kArgumentsLengthIndex);
1124 1124
1125 // Check the state of the object. 1125 // Check the state of the object.
1126 ASSERT(result->HasFastProperties()); 1126 ASSERT(result->HasFastProperties());
1127 ASSERT(result->HasFastObjectElements()); 1127 ASSERT(result->HasFastObjectElements());
1128 #endif 1128 #endif
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
1205 Handle<JSObject> result = factory->NewJSObjectFromMap(map); 1205 Handle<JSObject> result = factory->NewJSObjectFromMap(map);
1206 native_context()->set_strict_arguments_boilerplate(*result); 1206 native_context()->set_strict_arguments_boilerplate(*result);
1207 1207
1208 // Add length property only for strict mode boilerplate. 1208 // Add length property only for strict mode boilerplate.
1209 JSObject::SetLocalPropertyIgnoreAttributes( 1209 JSObject::SetLocalPropertyIgnoreAttributes(
1210 result, factory->length_string(), 1210 result, factory->length_string(),
1211 factory->undefined_value(), DONT_ENUM).Check(); 1211 factory->undefined_value(), DONT_ENUM).Check();
1212 1212
1213 #ifdef DEBUG 1213 #ifdef DEBUG
1214 LookupResult lookup(isolate); 1214 LookupResult lookup(isolate);
1215 result->LocalLookup(heap->length_string(), &lookup); 1215 result->LocalLookup(factory->length_string(), &lookup);
1216 ASSERT(lookup.IsField()); 1216 ASSERT(lookup.IsField());
1217 ASSERT(lookup.GetFieldIndex().field_index() == Heap::kArgumentsLengthIndex); 1217 ASSERT(lookup.GetFieldIndex().field_index() == Heap::kArgumentsLengthIndex);
1218 1218
1219 ASSERT(result->map()->inobject_properties() > Heap::kArgumentsLengthIndex); 1219 ASSERT(result->map()->inobject_properties() > Heap::kArgumentsLengthIndex);
1220 1220
1221 // Check the state of the object. 1221 // Check the state of the object.
1222 ASSERT(result->HasFastProperties()); 1222 ASSERT(result->HasFastProperties());
1223 ASSERT(result->HasFastObjectElements()); 1223 ASSERT(result->HasFastObjectElements());
1224 #endif 1224 #endif
1225 } 1225 }
(...skipping 1180 matching lines...) Expand 10 before | Expand all | Expand 10 after
2406 case CONSTANT: { 2406 case CONSTANT: {
2407 HandleScope inner(isolate()); 2407 HandleScope inner(isolate());
2408 Handle<Name> key = Handle<Name>(descs->GetKey(i)); 2408 Handle<Name> key = Handle<Name>(descs->GetKey(i));
2409 Handle<Object> constant(descs->GetConstant(i), isolate()); 2409 Handle<Object> constant(descs->GetConstant(i), isolate());
2410 JSObject::SetLocalPropertyIgnoreAttributes( 2410 JSObject::SetLocalPropertyIgnoreAttributes(
2411 to, key, constant, details.attributes()).Check(); 2411 to, key, constant, details.attributes()).Check();
2412 break; 2412 break;
2413 } 2413 }
2414 case CALLBACKS: { 2414 case CALLBACKS: {
2415 LookupResult result(isolate()); 2415 LookupResult result(isolate());
2416 to->LocalLookup(descs->GetKey(i), &result); 2416 Handle<Name> key(Name::cast(descs->GetKey(i)), isolate());
2417 to->LocalLookup(key, &result);
2417 // If the property is already there we skip it 2418 // If the property is already there we skip it
2418 if (result.IsFound()) continue; 2419 if (result.IsFound()) continue;
2419 HandleScope inner(isolate()); 2420 HandleScope inner(isolate());
2420 ASSERT(!to->HasFastProperties()); 2421 ASSERT(!to->HasFastProperties());
2421 // Add to dictionary. 2422 // Add to dictionary.
2422 Handle<Name> key = Handle<Name>(descs->GetKey(i));
2423 Handle<Object> callbacks(descs->GetCallbacksObject(i), isolate()); 2423 Handle<Object> callbacks(descs->GetCallbacksObject(i), isolate());
2424 PropertyDetails d = PropertyDetails( 2424 PropertyDetails d = PropertyDetails(
2425 details.attributes(), CALLBACKS, i + 1); 2425 details.attributes(), CALLBACKS, i + 1);
2426 JSObject::SetNormalizedProperty(to, key, callbacks, d); 2426 JSObject::SetNormalizedProperty(to, key, callbacks, d);
2427 break; 2427 break;
2428 } 2428 }
2429 case NORMAL: 2429 case NORMAL:
2430 // Do not occur since the from object has fast properties. 2430 // Do not occur since the from object has fast properties.
2431 case HANDLER: 2431 case HANDLER:
2432 case INTERCEPTOR: 2432 case INTERCEPTOR:
2433 case NONEXISTENT: 2433 case NONEXISTENT:
2434 // No element in instance descriptors have proxy or interceptor type. 2434 // No element in instance descriptors have proxy or interceptor type.
2435 UNREACHABLE(); 2435 UNREACHABLE();
2436 break; 2436 break;
2437 } 2437 }
2438 } 2438 }
2439 } else { 2439 } else {
2440 Handle<NameDictionary> properties = 2440 Handle<NameDictionary> properties =
2441 Handle<NameDictionary>(from->property_dictionary()); 2441 Handle<NameDictionary>(from->property_dictionary());
2442 int capacity = properties->Capacity(); 2442 int capacity = properties->Capacity();
2443 for (int i = 0; i < capacity; i++) { 2443 for (int i = 0; i < capacity; i++) {
2444 Object* raw_key(properties->KeyAt(i)); 2444 Object* raw_key(properties->KeyAt(i));
2445 if (properties->IsKey(raw_key)) { 2445 if (properties->IsKey(raw_key)) {
2446 ASSERT(raw_key->IsName()); 2446 ASSERT(raw_key->IsName());
2447 // If the property is already there we skip it. 2447 // If the property is already there we skip it.
2448 LookupResult result(isolate()); 2448 LookupResult result(isolate());
2449 to->LocalLookup(Name::cast(raw_key), &result); 2449 Handle<Name> key(Name::cast(raw_key));
2450 to->LocalLookup(key, &result);
2450 if (result.IsFound()) continue; 2451 if (result.IsFound()) continue;
2451 // Set the property. 2452 // Set the property.
2452 Handle<Name> key = Handle<Name>(Name::cast(raw_key));
2453 Handle<Object> value = Handle<Object>(properties->ValueAt(i), 2453 Handle<Object> value = Handle<Object>(properties->ValueAt(i),
2454 isolate()); 2454 isolate());
2455 ASSERT(!value->IsCell()); 2455 ASSERT(!value->IsCell());
2456 if (value->IsPropertyCell()) { 2456 if (value->IsPropertyCell()) {
2457 value = Handle<Object>(PropertyCell::cast(*value)->value(), 2457 value = Handle<Object>(PropertyCell::cast(*value)->value(),
2458 isolate()); 2458 isolate());
2459 } 2459 }
2460 PropertyDetails details = properties->DetailsAt(i); 2460 PropertyDetails details = properties->DetailsAt(i);
2461 JSObject::SetLocalPropertyIgnoreAttributes( 2461 JSObject::SetLocalPropertyIgnoreAttributes(
2462 to, key, value, details.attributes()).Check(); 2462 to, key, value, details.attributes()).Check();
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
2691 return from + sizeof(NestingCounterType); 2691 return from + sizeof(NestingCounterType);
2692 } 2692 }
2693 2693
2694 2694
2695 // Called when the top-level V8 mutex is destroyed. 2695 // Called when the top-level V8 mutex is destroyed.
2696 void Bootstrapper::FreeThreadResources() { 2696 void Bootstrapper::FreeThreadResources() {
2697 ASSERT(!IsActive()); 2697 ASSERT(!IsActive());
2698 } 2698 }
2699 2699
2700 } } // namespace v8::internal 2700 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/api.cc ('k') | src/heap-snapshot-generator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698