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

Side by Side Diff: src/bootstrapper.cc

Issue 11597007: Rename LookupSymbol calls to use Utf8 or OneByte in names. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years 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/debug.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 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 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 346
347 static Handle<JSFunction> InstallFunction(Handle<JSObject> target, 347 static Handle<JSFunction> InstallFunction(Handle<JSObject> target,
348 const char* name, 348 const char* name,
349 InstanceType type, 349 InstanceType type,
350 int instance_size, 350 int instance_size,
351 Handle<JSObject> prototype, 351 Handle<JSObject> prototype,
352 Builtins::Name call, 352 Builtins::Name call,
353 bool is_ecma_native) { 353 bool is_ecma_native) {
354 Isolate* isolate = target->GetIsolate(); 354 Isolate* isolate = target->GetIsolate();
355 Factory* factory = isolate->factory(); 355 Factory* factory = isolate->factory();
356 Handle<String> symbol = factory->LookupAsciiSymbol(name); 356 Handle<String> symbol = factory->LookupUtf8Symbol(name);
357 Handle<Code> call_code = Handle<Code>(isolate->builtins()->builtin(call)); 357 Handle<Code> call_code = Handle<Code>(isolate->builtins()->builtin(call));
358 Handle<JSFunction> function = prototype.is_null() ? 358 Handle<JSFunction> function = prototype.is_null() ?
359 factory->NewFunctionWithoutPrototype(symbol, call_code) : 359 factory->NewFunctionWithoutPrototype(symbol, call_code) :
360 factory->NewFunctionWithPrototype(symbol, 360 factory->NewFunctionWithPrototype(symbol,
361 type, 361 type,
362 instance_size, 362 instance_size,
363 prototype, 363 prototype,
364 call_code, 364 call_code,
365 is_ecma_native); 365 is_ecma_native);
366 PropertyAttributes attributes; 366 PropertyAttributes attributes;
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 Handle<JSObject> prototype = factory->NewJSObject( 481 Handle<JSObject> prototype = factory->NewJSObject(
482 isolate->object_function(), 482 isolate->object_function(),
483 TENURED); 483 TENURED);
484 484
485 native_context()->set_initial_object_prototype(*prototype); 485 native_context()->set_initial_object_prototype(*prototype);
486 SetPrototype(object_fun, prototype); 486 SetPrototype(object_fun, prototype);
487 } 487 }
488 488
489 // Allocate the empty function as the prototype for function ECMAScript 489 // Allocate the empty function as the prototype for function ECMAScript
490 // 262 15.3.4. 490 // 262 15.3.4.
491 Handle<String> symbol = factory->LookupAsciiSymbol("Empty"); 491 Handle<String> symbol =
492 factory->LookupOneByteSymbol(STATIC_ASCII_VECTOR("Empty"));
492 Handle<JSFunction> empty_function = 493 Handle<JSFunction> empty_function =
493 factory->NewFunctionWithoutPrototype(symbol, CLASSIC_MODE); 494 factory->NewFunctionWithoutPrototype(symbol, CLASSIC_MODE);
494 495
495 // --- E m p t y --- 496 // --- E m p t y ---
496 Handle<Code> code = 497 Handle<Code> code =
497 Handle<Code>(isolate->builtins()->builtin( 498 Handle<Code>(isolate->builtins()->builtin(
498 Builtins::kEmptyFunction)); 499 Builtins::kEmptyFunction));
499 empty_function->set_code(*code); 500 empty_function->set_code(*code);
500 empty_function->shared()->set_code(*code); 501 empty_function->shared()->set_code(*code);
501 Handle<String> source = factory->NewStringFromAscii(CStrVector("() {}")); 502 Handle<String> source = factory->NewStringFromAscii(CStrVector("() {}"));
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 } 564 }
564 CallbacksDescriptor d(*factory()->prototype_symbol(), *prototype, attribs); 565 CallbacksDescriptor d(*factory()->prototype_symbol(), *prototype, attribs);
565 map->AppendDescriptor(&d, witness); 566 map->AppendDescriptor(&d, witness);
566 } 567 }
567 } 568 }
568 569
569 570
570 // ECMAScript 5th Edition, 13.2.3 571 // ECMAScript 5th Edition, 13.2.3
571 Handle<JSFunction> Genesis::GetThrowTypeErrorFunction() { 572 Handle<JSFunction> Genesis::GetThrowTypeErrorFunction() {
572 if (throw_type_error_function.is_null()) { 573 if (throw_type_error_function.is_null()) {
573 Handle<String> name = factory()->LookupAsciiSymbol("ThrowTypeError"); 574 Handle<String> name = factory()->LookupOneByteSymbol(
575 STATIC_ASCII_VECTOR("ThrowTypeError"));
574 throw_type_error_function = 576 throw_type_error_function =
575 factory()->NewFunctionWithoutPrototype(name, CLASSIC_MODE); 577 factory()->NewFunctionWithoutPrototype(name, CLASSIC_MODE);
576 Handle<Code> code(isolate()->builtins()->builtin( 578 Handle<Code> code(isolate()->builtins()->builtin(
577 Builtins::kStrictModePoisonPill)); 579 Builtins::kStrictModePoisonPill));
578 throw_type_error_function->set_map( 580 throw_type_error_function->set_map(
579 native_context()->function_map()); 581 native_context()->function_map());
580 throw_type_error_function->set_code(*code); 582 throw_type_error_function->set_code(*code);
581 throw_type_error_function->shared()->set_code(*code); 583 throw_type_error_function->shared()->set_code(*code);
582 throw_type_error_function->shared()->DontAdaptArguments(); 584 throw_type_error_function->shared()->DontAdaptArguments();
583 585
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
764 } else { 766 } else {
765 Handle<ObjectTemplateInfo> data = 767 Handle<ObjectTemplateInfo> data =
766 v8::Utils::OpenHandle(*global_template); 768 v8::Utils::OpenHandle(*global_template);
767 Handle<FunctionTemplateInfo> global_constructor( 769 Handle<FunctionTemplateInfo> global_constructor(
768 FunctionTemplateInfo::cast(data->constructor())); 770 FunctionTemplateInfo::cast(data->constructor()));
769 global_proxy_function = 771 global_proxy_function =
770 factory()->CreateApiFunction(global_constructor, 772 factory()->CreateApiFunction(global_constructor,
771 factory()->OuterGlobalObject); 773 factory()->OuterGlobalObject);
772 } 774 }
773 775
774 Handle<String> global_name = factory()->LookupAsciiSymbol("global"); 776 Handle<String> global_name = factory()->LookupOneByteSymbol(
777 STATIC_ASCII_VECTOR("global"));
775 global_proxy_function->shared()->set_instance_class_name(*global_name); 778 global_proxy_function->shared()->set_instance_class_name(*global_name);
776 global_proxy_function->initial_map()->set_is_access_check_needed(true); 779 global_proxy_function->initial_map()->set_is_access_check_needed(true);
777 780
778 // Set global_proxy.__proto__ to js_global after ConfigureGlobalObjects 781 // Set global_proxy.__proto__ to js_global after ConfigureGlobalObjects
779 // Return the global proxy. 782 // Return the global proxy.
780 783
781 if (global_object.location() != NULL) { 784 if (global_object.location() != NULL) {
782 ASSERT(global_object->IsJSGlobalProxy()); 785 ASSERT(global_object->IsJSGlobalProxy());
783 return ReinitializeJSGlobalProxy( 786 return ReinitializeJSGlobalProxy(
784 global_proxy_function, 787 global_proxy_function,
(...skipping 19 matching lines...) Expand all
804 void Genesis::HookUpInnerGlobal(Handle<GlobalObject> inner_global) { 807 void Genesis::HookUpInnerGlobal(Handle<GlobalObject> inner_global) {
805 Handle<GlobalObject> inner_global_from_snapshot( 808 Handle<GlobalObject> inner_global_from_snapshot(
806 GlobalObject::cast(native_context_->extension())); 809 GlobalObject::cast(native_context_->extension()));
807 Handle<JSBuiltinsObject> builtins_global(native_context_->builtins()); 810 Handle<JSBuiltinsObject> builtins_global(native_context_->builtins());
808 native_context_->set_extension(*inner_global); 811 native_context_->set_extension(*inner_global);
809 native_context_->set_global_object(*inner_global); 812 native_context_->set_global_object(*inner_global);
810 native_context_->set_security_token(*inner_global); 813 native_context_->set_security_token(*inner_global);
811 static const PropertyAttributes attributes = 814 static const PropertyAttributes attributes =
812 static_cast<PropertyAttributes>(READ_ONLY | DONT_DELETE); 815 static_cast<PropertyAttributes>(READ_ONLY | DONT_DELETE);
813 ForceSetProperty(builtins_global, 816 ForceSetProperty(builtins_global,
814 factory()->LookupAsciiSymbol("global"), 817 factory()->LookupOneByteSymbol(
818 STATIC_ASCII_VECTOR("global")),
815 inner_global, 819 inner_global,
816 attributes); 820 attributes);
817 // Set up the reference from the global object to the builtins object. 821 // Set up the reference from the global object to the builtins object.
818 JSGlobalObject::cast(*inner_global)->set_builtins(*builtins_global); 822 JSGlobalObject::cast(*inner_global)->set_builtins(*builtins_global);
819 TransferNamedProperties(inner_global_from_snapshot, inner_global); 823 TransferNamedProperties(inner_global_from_snapshot, inner_global);
820 TransferIndexedProperties(inner_global_from_snapshot, inner_global); 824 TransferIndexedProperties(inner_global_from_snapshot, inner_global);
821 } 825 }
822 826
823 827
824 // This is only called if we are not using snapshots. The equivalent 828 // This is only called if we are not using snapshots. The equivalent
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
1042 CHECK_NOT_EMPTY_HANDLE(isolate, 1046 CHECK_NOT_EMPTY_HANDLE(isolate,
1043 JSObject::SetLocalPropertyIgnoreAttributes( 1047 JSObject::SetLocalPropertyIgnoreAttributes(
1044 global, name, json_object, DONT_ENUM)); 1048 global, name, json_object, DONT_ENUM));
1045 native_context()->set_json_object(*json_object); 1049 native_context()->set_json_object(*json_object);
1046 } 1050 }
1047 1051
1048 { // --- arguments_boilerplate_ 1052 { // --- arguments_boilerplate_
1049 // Make sure we can recognize argument objects at runtime. 1053 // Make sure we can recognize argument objects at runtime.
1050 // This is done by introducing an anonymous function with 1054 // This is done by introducing an anonymous function with
1051 // class_name equals 'Arguments'. 1055 // class_name equals 'Arguments'.
1052 Handle<String> symbol = factory->LookupAsciiSymbol("Arguments"); 1056 Handle<String> symbol = factory->LookupOneByteSymbol(
1057 STATIC_ASCII_VECTOR("Arguments"));
1053 Handle<Code> code = Handle<Code>( 1058 Handle<Code> code = Handle<Code>(
1054 isolate->builtins()->builtin(Builtins::kIllegal)); 1059 isolate->builtins()->builtin(Builtins::kIllegal));
1055 Handle<JSObject> prototype = 1060 Handle<JSObject> prototype =
1056 Handle<JSObject>( 1061 Handle<JSObject>(
1057 JSObject::cast(native_context()->object_function()->prototype())); 1062 JSObject::cast(native_context()->object_function()->prototype()));
1058 1063
1059 Handle<JSFunction> function = 1064 Handle<JSFunction> function =
1060 factory->NewFunctionWithPrototype(symbol, 1065 factory->NewFunctionWithPrototype(symbol,
1061 JS_OBJECT_TYPE, 1066 JS_OBJECT_TYPE,
1062 JSObject::kHeaderSize, 1067 JSObject::kHeaderSize,
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
1200 // Create a function for the context extension objects. 1205 // Create a function for the context extension objects.
1201 Handle<Code> code = Handle<Code>( 1206 Handle<Code> code = Handle<Code>(
1202 isolate->builtins()->builtin(Builtins::kIllegal)); 1207 isolate->builtins()->builtin(Builtins::kIllegal));
1203 Handle<JSFunction> context_extension_fun = 1208 Handle<JSFunction> context_extension_fun =
1204 factory->NewFunction(factory->empty_symbol(), 1209 factory->NewFunction(factory->empty_symbol(),
1205 JS_CONTEXT_EXTENSION_OBJECT_TYPE, 1210 JS_CONTEXT_EXTENSION_OBJECT_TYPE,
1206 JSObject::kHeaderSize, 1211 JSObject::kHeaderSize,
1207 code, 1212 code,
1208 true); 1213 true);
1209 1214
1210 Handle<String> name = factory->LookupAsciiSymbol("context_extension"); 1215 Handle<String> name =
1216 factory->LookupOneByteSymbol(STATIC_ASCII_VECTOR("context_extension"));
1211 context_extension_fun->shared()->set_instance_class_name(*name); 1217 context_extension_fun->shared()->set_instance_class_name(*name);
1212 native_context()->set_context_extension_function(*context_extension_fun); 1218 native_context()->set_context_extension_function(*context_extension_fun);
1213 } 1219 }
1214 1220
1215 1221
1216 { 1222 {
1217 // Set up the call-as-function delegate. 1223 // Set up the call-as-function delegate.
1218 Handle<Code> code = 1224 Handle<Code> code =
1219 Handle<Code>(isolate->builtins()->builtin( 1225 Handle<Code>(isolate->builtins()->builtin(
1220 Builtins::kHandleApiCallAsFunction)); 1226 Builtins::kHandleApiCallAsFunction));
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
1374 Handle<Object>(use_runtime_context 1380 Handle<Object>(use_runtime_context
1375 ? top_context->builtins() 1381 ? top_context->builtins()
1376 : top_context->global_object()); 1382 : top_context->global_object());
1377 bool has_pending_exception; 1383 bool has_pending_exception;
1378 Execution::Call(fun, receiver, 0, NULL, &has_pending_exception); 1384 Execution::Call(fun, receiver, 0, NULL, &has_pending_exception);
1379 if (has_pending_exception) return false; 1385 if (has_pending_exception) return false;
1380 return true; 1386 return true;
1381 } 1387 }
1382 1388
1383 1389
1384 #define INSTALL_NATIVE(Type, name, var) \ 1390 #define INSTALL_NATIVE(Type, name, var) \
1385 Handle<String> var##_name = factory()->LookupAsciiSymbol(name); \ 1391 Handle<String> var##_name = \
1386 Object* var##_native = \ 1392 factory()->LookupOneByteSymbol(STATIC_ASCII_VECTOR(name)); \
1387 native_context()->builtins()->GetPropertyNoExceptionThrown( \ 1393 Object* var##_native = \
1388 *var##_name); \ 1394 native_context()->builtins()->GetPropertyNoExceptionThrown( \
1395 *var##_name); \
1389 native_context()->set_##var(Type::cast(var##_native)); 1396 native_context()->set_##var(Type::cast(var##_native));
1390 1397
1391 1398
1392 void Genesis::InstallNativeFunctions() { 1399 void Genesis::InstallNativeFunctions() {
1393 HandleScope scope; 1400 HandleScope scope;
1394 INSTALL_NATIVE(JSFunction, "CreateDate", create_date_fun); 1401 INSTALL_NATIVE(JSFunction, "CreateDate", create_date_fun);
1395 INSTALL_NATIVE(JSFunction, "ToNumber", to_number_fun); 1402 INSTALL_NATIVE(JSFunction, "ToNumber", to_number_fun);
1396 INSTALL_NATIVE(JSFunction, "ToString", to_string_fun); 1403 INSTALL_NATIVE(JSFunction, "ToString", to_string_fun);
1397 INSTALL_NATIVE(JSFunction, "ToDetailString", to_detail_string_fun); 1404 INSTALL_NATIVE(JSFunction, "ToDetailString", to_detail_string_fun);
1398 INSTALL_NATIVE(JSFunction, "ToObject", to_object_fun); 1405 INSTALL_NATIVE(JSFunction, "ToObject", to_object_fun);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1432 // Create a function for the builtins object. Allocate space for the 1439 // Create a function for the builtins object. Allocate space for the
1433 // JavaScript builtins, a reference to the builtins object 1440 // JavaScript builtins, a reference to the builtins object
1434 // (itself) and a reference to the native_context directly in the object. 1441 // (itself) and a reference to the native_context directly in the object.
1435 Handle<Code> code = Handle<Code>( 1442 Handle<Code> code = Handle<Code>(
1436 isolate()->builtins()->builtin(Builtins::kIllegal)); 1443 isolate()->builtins()->builtin(Builtins::kIllegal));
1437 Handle<JSFunction> builtins_fun = 1444 Handle<JSFunction> builtins_fun =
1438 factory()->NewFunction(factory()->empty_symbol(), 1445 factory()->NewFunction(factory()->empty_symbol(),
1439 JS_BUILTINS_OBJECT_TYPE, 1446 JS_BUILTINS_OBJECT_TYPE,
1440 JSBuiltinsObject::kSize, code, true); 1447 JSBuiltinsObject::kSize, code, true);
1441 1448
1442 Handle<String> name = factory()->LookupAsciiSymbol("builtins"); 1449 Handle<String> name =
1450 factory()->LookupOneByteSymbol(STATIC_ASCII_VECTOR("builtins"));
1443 builtins_fun->shared()->set_instance_class_name(*name); 1451 builtins_fun->shared()->set_instance_class_name(*name);
1444 builtins_fun->initial_map()->set_dictionary_map(true); 1452 builtins_fun->initial_map()->set_dictionary_map(true);
1445 builtins_fun->initial_map()->set_prototype(heap()->null_value()); 1453 builtins_fun->initial_map()->set_prototype(heap()->null_value());
1446 1454
1447 // Allocate the builtins object. 1455 // Allocate the builtins object.
1448 Handle<JSBuiltinsObject> builtins = 1456 Handle<JSBuiltinsObject> builtins =
1449 Handle<JSBuiltinsObject>::cast(factory()->NewGlobalObject(builtins_fun)); 1457 Handle<JSBuiltinsObject>::cast(factory()->NewGlobalObject(builtins_fun));
1450 builtins->set_builtins(*builtins); 1458 builtins->set_builtins(*builtins);
1451 builtins->set_native_context(*native_context()); 1459 builtins->set_native_context(*native_context());
1452 builtins->set_global_context(*native_context()); 1460 builtins->set_global_context(*native_context());
1453 builtins->set_global_receiver(*builtins); 1461 builtins->set_global_receiver(*builtins);
1454 1462
1455 // Set up the 'global' properties of the builtins object. The 1463 // Set up the 'global' properties of the builtins object. The
1456 // 'global' property that refers to the global object is the only 1464 // 'global' property that refers to the global object is the only
1457 // way to get from code running in the builtins context to the 1465 // way to get from code running in the builtins context to the
1458 // global object. 1466 // global object.
1459 static const PropertyAttributes attributes = 1467 static const PropertyAttributes attributes =
1460 static_cast<PropertyAttributes>(READ_ONLY | DONT_DELETE); 1468 static_cast<PropertyAttributes>(READ_ONLY | DONT_DELETE);
1461 Handle<String> global_symbol = factory()->LookupAsciiSymbol("global"); 1469 Handle<String> global_symbol =
1470 factory()->LookupOneByteSymbol(STATIC_ASCII_VECTOR("global"));
1462 Handle<Object> global_obj(native_context()->global_object()); 1471 Handle<Object> global_obj(native_context()->global_object());
1463 CHECK_NOT_EMPTY_HANDLE(isolate(), 1472 CHECK_NOT_EMPTY_HANDLE(isolate(),
1464 JSObject::SetLocalPropertyIgnoreAttributes( 1473 JSObject::SetLocalPropertyIgnoreAttributes(
1465 builtins, global_symbol, global_obj, attributes)); 1474 builtins, global_symbol, global_obj, attributes));
1466 1475
1467 // Set up the reference from the global object to the builtins object. 1476 // Set up the reference from the global object to the builtins object.
1468 JSGlobalObject::cast(native_context()->global_object())-> 1477 JSGlobalObject::cast(native_context()->global_object())->
1469 set_builtins(*builtins); 1478 set_builtins(*builtins);
1470 1479
1471 // Create a bridge function that has context in the native context. 1480 // Create a bridge function that has context in the native context.
(...skipping 22 matching lines...) Expand all
1494 1503
1495 Handle<Map> script_map = Handle<Map>(script_fun->initial_map()); 1504 Handle<Map> script_map = Handle<Map>(script_fun->initial_map());
1496 1505
1497 Handle<DescriptorArray> script_descriptors( 1506 Handle<DescriptorArray> script_descriptors(
1498 factory()->NewDescriptorArray(0, 13)); 1507 factory()->NewDescriptorArray(0, 13));
1499 DescriptorArray::WhitenessWitness witness(*script_descriptors); 1508 DescriptorArray::WhitenessWitness witness(*script_descriptors);
1500 1509
1501 Handle<Foreign> script_source( 1510 Handle<Foreign> script_source(
1502 factory()->NewForeign(&Accessors::ScriptSource)); 1511 factory()->NewForeign(&Accessors::ScriptSource));
1503 Handle<Foreign> script_name(factory()->NewForeign(&Accessors::ScriptName)); 1512 Handle<Foreign> script_name(factory()->NewForeign(&Accessors::ScriptName));
1504 Handle<String> id_symbol(factory()->LookupAsciiSymbol("id")); 1513 Handle<String> id_symbol(factory()->LookupOneByteSymbol(
1514 STATIC_ASCII_VECTOR("id")));
1505 Handle<Foreign> script_id(factory()->NewForeign(&Accessors::ScriptId)); 1515 Handle<Foreign> script_id(factory()->NewForeign(&Accessors::ScriptId));
1506 Handle<String> line_offset_symbol( 1516 Handle<String> line_offset_symbol(
1507 factory()->LookupAsciiSymbol("line_offset")); 1517 factory()->LookupOneByteSymbol(STATIC_ASCII_VECTOR("line_offset")));
1508 Handle<Foreign> script_line_offset( 1518 Handle<Foreign> script_line_offset(
1509 factory()->NewForeign(&Accessors::ScriptLineOffset)); 1519 factory()->NewForeign(&Accessors::ScriptLineOffset));
1510 Handle<String> column_offset_symbol( 1520 Handle<String> column_offset_symbol(
1511 factory()->LookupAsciiSymbol("column_offset")); 1521 factory()->LookupOneByteSymbol(STATIC_ASCII_VECTOR("column_offset")));
1512 Handle<Foreign> script_column_offset( 1522 Handle<Foreign> script_column_offset(
1513 factory()->NewForeign(&Accessors::ScriptColumnOffset)); 1523 factory()->NewForeign(&Accessors::ScriptColumnOffset));
1514 Handle<String> data_symbol(factory()->LookupAsciiSymbol("data")); 1524 Handle<String> data_symbol(factory()->LookupOneByteSymbol(
1525 STATIC_ASCII_VECTOR("data")));
1515 Handle<Foreign> script_data(factory()->NewForeign(&Accessors::ScriptData)); 1526 Handle<Foreign> script_data(factory()->NewForeign(&Accessors::ScriptData));
1516 Handle<String> type_symbol(factory()->LookupAsciiSymbol("type")); 1527 Handle<String> type_symbol(factory()->LookupOneByteSymbol(
1528 STATIC_ASCII_VECTOR("type")));
1517 Handle<Foreign> script_type(factory()->NewForeign(&Accessors::ScriptType)); 1529 Handle<Foreign> script_type(factory()->NewForeign(&Accessors::ScriptType));
1518 Handle<String> compilation_type_symbol( 1530 Handle<String> compilation_type_symbol(
1519 factory()->LookupAsciiSymbol("compilation_type")); 1531 factory()->LookupOneByteSymbol(
1532 STATIC_ASCII_VECTOR("compilation_type")));
1520 Handle<Foreign> script_compilation_type( 1533 Handle<Foreign> script_compilation_type(
1521 factory()->NewForeign(&Accessors::ScriptCompilationType)); 1534 factory()->NewForeign(&Accessors::ScriptCompilationType));
1522 Handle<String> line_ends_symbol(factory()->LookupAsciiSymbol("line_ends")); 1535 Handle<String> line_ends_symbol(factory()->LookupOneByteSymbol(
1536 STATIC_ASCII_VECTOR("line_ends")));
1523 Handle<Foreign> script_line_ends( 1537 Handle<Foreign> script_line_ends(
1524 factory()->NewForeign(&Accessors::ScriptLineEnds)); 1538 factory()->NewForeign(&Accessors::ScriptLineEnds));
1525 Handle<String> context_data_symbol( 1539 Handle<String> context_data_symbol(
1526 factory()->LookupAsciiSymbol("context_data")); 1540 factory()->LookupOneByteSymbol(STATIC_ASCII_VECTOR("context_data")));
1527 Handle<Foreign> script_context_data( 1541 Handle<Foreign> script_context_data(
1528 factory()->NewForeign(&Accessors::ScriptContextData)); 1542 factory()->NewForeign(&Accessors::ScriptContextData));
1529 Handle<String> eval_from_script_symbol( 1543 Handle<String> eval_from_script_symbol(
1530 factory()->LookupAsciiSymbol("eval_from_script")); 1544 factory()->LookupOneByteSymbol(
1545 STATIC_ASCII_VECTOR("eval_from_script")));
1531 Handle<Foreign> script_eval_from_script( 1546 Handle<Foreign> script_eval_from_script(
1532 factory()->NewForeign(&Accessors::ScriptEvalFromScript)); 1547 factory()->NewForeign(&Accessors::ScriptEvalFromScript));
1533 Handle<String> eval_from_script_position_symbol( 1548 Handle<String> eval_from_script_position_symbol(
1534 factory()->LookupAsciiSymbol("eval_from_script_position")); 1549 factory()->LookupOneByteSymbol(
1550 STATIC_ASCII_VECTOR("eval_from_script_position")));
1535 Handle<Foreign> script_eval_from_script_position( 1551 Handle<Foreign> script_eval_from_script_position(
1536 factory()->NewForeign(&Accessors::ScriptEvalFromScriptPosition)); 1552 factory()->NewForeign(&Accessors::ScriptEvalFromScriptPosition));
1537 Handle<String> eval_from_function_name_symbol( 1553 Handle<String> eval_from_function_name_symbol(
1538 factory()->LookupAsciiSymbol("eval_from_function_name")); 1554 factory()->LookupOneByteSymbol(
1555 STATIC_ASCII_VECTOR("eval_from_function_name")));
1539 Handle<Foreign> script_eval_from_function_name( 1556 Handle<Foreign> script_eval_from_function_name(
1540 factory()->NewForeign(&Accessors::ScriptEvalFromFunctionName)); 1557 factory()->NewForeign(&Accessors::ScriptEvalFromFunctionName));
1541 PropertyAttributes attribs = 1558 PropertyAttributes attribs =
1542 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY); 1559 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY);
1543 script_map->set_instance_descriptors(*script_descriptors); 1560 script_map->set_instance_descriptors(*script_descriptors);
1544 1561
1545 { 1562 {
1546 CallbacksDescriptor d( 1563 CallbacksDescriptor d(
1547 *factory()->source_symbol(), *script_source, attribs); 1564 *factory()->source_symbol(), *script_source, attribs);
1548 script_map->AppendDescriptor(&d, witness); 1565 script_map->AppendDescriptor(&d, witness);
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
1848 1865
1849 1866
1850 static Handle<JSObject> ResolveBuiltinIdHolder( 1867 static Handle<JSObject> ResolveBuiltinIdHolder(
1851 Handle<Context> native_context, 1868 Handle<Context> native_context,
1852 const char* holder_expr) { 1869 const char* holder_expr) {
1853 Factory* factory = native_context->GetIsolate()->factory(); 1870 Factory* factory = native_context->GetIsolate()->factory();
1854 Handle<GlobalObject> global(native_context->global_object()); 1871 Handle<GlobalObject> global(native_context->global_object());
1855 const char* period_pos = strchr(holder_expr, '.'); 1872 const char* period_pos = strchr(holder_expr, '.');
1856 if (period_pos == NULL) { 1873 if (period_pos == NULL) {
1857 return Handle<JSObject>::cast( 1874 return Handle<JSObject>::cast(
1858 GetProperty(global, factory->LookupAsciiSymbol(holder_expr))); 1875 GetProperty(global, factory->LookupUtf8Symbol(holder_expr)));
1859 } 1876 }
1860 ASSERT_EQ(".prototype", period_pos); 1877 ASSERT_EQ(".prototype", period_pos);
1861 Vector<const char> property(holder_expr, 1878 Vector<const char> property(holder_expr,
1862 static_cast<int>(period_pos - holder_expr)); 1879 static_cast<int>(period_pos - holder_expr));
1863 Handle<JSFunction> function = Handle<JSFunction>::cast( 1880 Handle<JSFunction> function = Handle<JSFunction>::cast(
1864 GetProperty(global, factory->LookupSymbol(property))); 1881 GetProperty(global, factory->LookupUtf8Symbol(property)));
1865 return Handle<JSObject>(JSObject::cast(function->prototype())); 1882 return Handle<JSObject>(JSObject::cast(function->prototype()));
1866 } 1883 }
1867 1884
1868 1885
1869 static void InstallBuiltinFunctionId(Handle<JSObject> holder, 1886 static void InstallBuiltinFunctionId(Handle<JSObject> holder,
1870 const char* function_name, 1887 const char* function_name,
1871 BuiltinFunctionId id) { 1888 BuiltinFunctionId id) {
1872 Factory* factory = holder->GetIsolate()->factory(); 1889 Factory* factory = holder->GetIsolate()->factory();
1873 Handle<String> name = factory->LookupAsciiSymbol(function_name); 1890 Handle<String> name = factory->LookupUtf8Symbol(function_name);
1874 Object* function_object = holder->GetProperty(*name)->ToObjectUnchecked(); 1891 Object* function_object = holder->GetProperty(*name)->ToObjectUnchecked();
1875 Handle<JSFunction> function(JSFunction::cast(function_object)); 1892 Handle<JSFunction> function(JSFunction::cast(function_object));
1876 function->shared()->set_function_data(Smi::FromInt(id)); 1893 function->shared()->set_function_data(Smi::FromInt(id));
1877 } 1894 }
1878 1895
1879 1896
1880 void Genesis::InstallBuiltinFunctionIds() { 1897 void Genesis::InstallBuiltinFunctionIds() {
1881 HandleScope scope; 1898 HandleScope scope;
1882 #define INSTALL_BUILTIN_ID(holder_expr, fun_name, name) \ 1899 #define INSTALL_BUILTIN_ID(holder_expr, fun_name, name) \
1883 { \ 1900 { \
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
1954 1971
1955 1972
1956 void Genesis::InstallSpecialObjects(Handle<Context> native_context) { 1973 void Genesis::InstallSpecialObjects(Handle<Context> native_context) {
1957 Isolate* isolate = native_context->GetIsolate(); 1974 Isolate* isolate = native_context->GetIsolate();
1958 Factory* factory = isolate->factory(); 1975 Factory* factory = isolate->factory();
1959 HandleScope scope; 1976 HandleScope scope;
1960 Handle<JSGlobalObject> global(JSGlobalObject::cast( 1977 Handle<JSGlobalObject> global(JSGlobalObject::cast(
1961 native_context->global_object())); 1978 native_context->global_object()));
1962 // Expose the natives in global if a name for it is specified. 1979 // Expose the natives in global if a name for it is specified.
1963 if (FLAG_expose_natives_as != NULL && strlen(FLAG_expose_natives_as) != 0) { 1980 if (FLAG_expose_natives_as != NULL && strlen(FLAG_expose_natives_as) != 0) {
1964 Handle<String> natives = factory->LookupAsciiSymbol(FLAG_expose_natives_as); 1981 Handle<String> natives = factory->LookupUtf8Symbol(FLAG_expose_natives_as);
1965 CHECK_NOT_EMPTY_HANDLE(isolate, 1982 CHECK_NOT_EMPTY_HANDLE(isolate,
1966 JSObject::SetLocalPropertyIgnoreAttributes( 1983 JSObject::SetLocalPropertyIgnoreAttributes(
1967 global, natives, 1984 global, natives,
1968 Handle<JSObject>(global->builtins()), 1985 Handle<JSObject>(global->builtins()),
1969 DONT_ENUM)); 1986 DONT_ENUM));
1970 } 1987 }
1971 1988
1972 Handle<Object> Error = GetProperty(global, "Error"); 1989 Handle<Object> Error = GetProperty(global, "Error");
1973 if (Error->IsJSObject()) { 1990 if (Error->IsJSObject()) {
1974 Handle<String> name = factory->LookupAsciiSymbol("stackTraceLimit"); 1991 Handle<String> name =
1992 factory->LookupOneByteSymbol(STATIC_ASCII_VECTOR("stackTraceLimit"));
1975 Handle<Smi> stack_trace_limit(Smi::FromInt(FLAG_stack_trace_limit)); 1993 Handle<Smi> stack_trace_limit(Smi::FromInt(FLAG_stack_trace_limit));
1976 CHECK_NOT_EMPTY_HANDLE(isolate, 1994 CHECK_NOT_EMPTY_HANDLE(isolate,
1977 JSObject::SetLocalPropertyIgnoreAttributes( 1995 JSObject::SetLocalPropertyIgnoreAttributes(
1978 Handle<JSObject>::cast(Error), name, 1996 Handle<JSObject>::cast(Error), name,
1979 stack_trace_limit, NONE)); 1997 stack_trace_limit, NONE));
1980 } 1998 }
1981 1999
1982 #ifdef ENABLE_DEBUGGER_SUPPORT 2000 #ifdef ENABLE_DEBUGGER_SUPPORT
1983 // Expose the debug global object in global if a name for it is specified. 2001 // Expose the debug global object in global if a name for it is specified.
1984 if (FLAG_expose_debug_as != NULL && strlen(FLAG_expose_debug_as) != 0) { 2002 if (FLAG_expose_debug_as != NULL && strlen(FLAG_expose_debug_as) != 0) {
1985 Debug* debug = Isolate::Current()->debug(); 2003 Debug* debug = Isolate::Current()->debug();
1986 // If loading fails we just bail out without installing the 2004 // If loading fails we just bail out without installing the
1987 // debugger but without tanking the whole context. 2005 // debugger but without tanking the whole context.
1988 if (!debug->Load()) return; 2006 if (!debug->Load()) return;
1989 // Set the security token for the debugger context to the same as 2007 // Set the security token for the debugger context to the same as
1990 // the shell native context to allow calling between these (otherwise 2008 // the shell native context to allow calling between these (otherwise
1991 // exposing debug global object doesn't make much sense). 2009 // exposing debug global object doesn't make much sense).
1992 debug->debug_context()->set_security_token( 2010 debug->debug_context()->set_security_token(
1993 native_context->security_token()); 2011 native_context->security_token());
1994 2012
1995 Handle<String> debug_string = 2013 Handle<String> debug_string =
1996 factory->LookupAsciiSymbol(FLAG_expose_debug_as); 2014 factory->LookupUtf8Symbol(FLAG_expose_debug_as);
1997 Handle<Object> global_proxy(debug->debug_context()->global_proxy()); 2015 Handle<Object> global_proxy(debug->debug_context()->global_proxy());
1998 CHECK_NOT_EMPTY_HANDLE(isolate, 2016 CHECK_NOT_EMPTY_HANDLE(isolate,
1999 JSObject::SetLocalPropertyIgnoreAttributes( 2017 JSObject::SetLocalPropertyIgnoreAttributes(
2000 global, debug_string, global_proxy, DONT_ENUM)); 2018 global, debug_string, global_proxy, DONT_ENUM));
2001 } 2019 }
2002 #endif 2020 #endif
2003 } 2021 }
2004 2022
2005 static uint32_t Hash(RegisteredExtension* extension) { 2023 static uint32_t Hash(RegisteredExtension* extension) {
2006 return v8::internal::ComputePointerHash(extension); 2024 return v8::internal::ComputePointerHash(extension);
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
2130 isolate->NotifyExtensionInstalled(); 2148 isolate->NotifyExtensionInstalled();
2131 return result; 2149 return result;
2132 } 2150 }
2133 2151
2134 2152
2135 bool Genesis::InstallJSBuiltins(Handle<JSBuiltinsObject> builtins) { 2153 bool Genesis::InstallJSBuiltins(Handle<JSBuiltinsObject> builtins) {
2136 HandleScope scope; 2154 HandleScope scope;
2137 Factory* factory = builtins->GetIsolate()->factory(); 2155 Factory* factory = builtins->GetIsolate()->factory();
2138 for (int i = 0; i < Builtins::NumberOfJavaScriptBuiltins(); i++) { 2156 for (int i = 0; i < Builtins::NumberOfJavaScriptBuiltins(); i++) {
2139 Builtins::JavaScript id = static_cast<Builtins::JavaScript>(i); 2157 Builtins::JavaScript id = static_cast<Builtins::JavaScript>(i);
2140 Handle<String> name = factory->LookupAsciiSymbol(Builtins::GetName(id)); 2158 Handle<String> name = factory->LookupUtf8Symbol(Builtins::GetName(id));
2141 Object* function_object = builtins->GetPropertyNoExceptionThrown(*name); 2159 Object* function_object = builtins->GetPropertyNoExceptionThrown(*name);
2142 Handle<JSFunction> function 2160 Handle<JSFunction> function
2143 = Handle<JSFunction>(JSFunction::cast(function_object)); 2161 = Handle<JSFunction>(JSFunction::cast(function_object));
2144 builtins->set_javascript_builtin(id, *function); 2162 builtins->set_javascript_builtin(id, *function);
2145 if (!JSFunction::CompileLazy(function, CLEAR_EXCEPTION)) { 2163 if (!JSFunction::CompileLazy(function, CLEAR_EXCEPTION)) {
2146 return false; 2164 return false;
2147 } 2165 }
2148 builtins->set_javascript_builtin_code(id, function->shared()->code()); 2166 builtins->set_javascript_builtin_code(id, function->shared()->code());
2149 } 2167 }
2150 return true; 2168 return true;
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
2410 return from + sizeof(NestingCounterType); 2428 return from + sizeof(NestingCounterType);
2411 } 2429 }
2412 2430
2413 2431
2414 // Called when the top-level V8 mutex is destroyed. 2432 // Called when the top-level V8 mutex is destroyed.
2415 void Bootstrapper::FreeThreadResources() { 2433 void Bootstrapper::FreeThreadResources() {
2416 ASSERT(!IsActive()); 2434 ASSERT(!IsActive());
2417 } 2435 }
2418 2436
2419 } } // namespace v8::internal 2437 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/api.cc ('k') | src/debug.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698