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

Side by Side Diff: vm/object.cc

Issue 10827367: 1. Fix an issue with VM class names being null (this is exposed when doing a heap profile) (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: Created 8 years, 4 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 | « vm/object.h ('k') | vm/symbols.h » ('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 (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/object.h" 5 #include "vm/object.h"
6 6
7 #include "include/dart_api.h" 7 #include "include/dart_api.h"
8 #include "platform/assert.h" 8 #include "platform/assert.h"
9 #include "vm/assembler.h" 9 #include "vm/assembler.h"
10 #include "vm/bigint_operations.h" 10 #include "vm/bigint_operations.h"
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 379
380 #define SET_CLASS_NAME(class_name, name) \ 380 #define SET_CLASS_NAME(class_name, name) \
381 cls = class_name##_class(); \ 381 cls = class_name##_class(); \
382 str = Symbols::name(); \ 382 str = Symbols::name(); \
383 cls.set_name(str); \ 383 cls.set_name(str); \
384 384
385 void Object::RegisterSingletonClassNames() { 385 void Object::RegisterSingletonClassNames() {
386 Class& cls = Class::Handle(); 386 Class& cls = Class::Handle();
387 String& str = String::Handle(); 387 String& str = String::Handle();
388 388
389 // Set up names for all VM singleton classes.
389 SET_CLASS_NAME(class, Class); 390 SET_CLASS_NAME(class, Class);
390 SET_CLASS_NAME(null, Null); 391 SET_CLASS_NAME(null, Null);
391 SET_CLASS_NAME(dynamic, Dynamic); 392 SET_CLASS_NAME(dynamic, Dynamic);
392 SET_CLASS_NAME(void, Void); 393 SET_CLASS_NAME(void, Void);
393 SET_CLASS_NAME(unresolved_class, UnresolvedClass); 394 SET_CLASS_NAME(unresolved_class, UnresolvedClass);
394 SET_CLASS_NAME(type, Type); 395 SET_CLASS_NAME(type, Type);
395 SET_CLASS_NAME(type_parameter, TypeParameter); 396 SET_CLASS_NAME(type_parameter, TypeParameter);
396 SET_CLASS_NAME(type_arguments, TypeArguments); 397 SET_CLASS_NAME(type_arguments, TypeArguments);
397 SET_CLASS_NAME(instantiated_type_arguments, InstantiatedTypeArguments); 398 SET_CLASS_NAME(instantiated_type_arguments, InstantiatedTypeArguments);
398 SET_CLASS_NAME(function, Function); 399 SET_CLASS_NAME(function, Function);
(...skipping 11 matching lines...) Expand all
410 SET_CLASS_NAME(exception_handlers, ExceptionHandlers); 411 SET_CLASS_NAME(exception_handlers, ExceptionHandlers);
411 SET_CLASS_NAME(deopt_info, DeoptInfo); 412 SET_CLASS_NAME(deopt_info, DeoptInfo);
412 SET_CLASS_NAME(context, Context); 413 SET_CLASS_NAME(context, Context);
413 SET_CLASS_NAME(context_scope, ContextScope); 414 SET_CLASS_NAME(context_scope, ContextScope);
414 SET_CLASS_NAME(icdata, ICData); 415 SET_CLASS_NAME(icdata, ICData);
415 SET_CLASS_NAME(subtypetestcache, SubtypeTestCache); 416 SET_CLASS_NAME(subtypetestcache, SubtypeTestCache);
416 SET_CLASS_NAME(api_error, ApiError); 417 SET_CLASS_NAME(api_error, ApiError);
417 SET_CLASS_NAME(language_error, LanguageError); 418 SET_CLASS_NAME(language_error, LanguageError);
418 SET_CLASS_NAME(unhandled_exception, UnhandledException); 419 SET_CLASS_NAME(unhandled_exception, UnhandledException);
419 SET_CLASS_NAME(unwind_error, UnwindError); 420 SET_CLASS_NAME(unwind_error, UnwindError);
421
422 // Set up names for object array and one byte string class which are
423 // pre-allocated in the vm isolate also.
424 cls = Dart::vm_isolate()->object_store()->array_class();
425 str = Symbols::ObjectArray();
426 cls.set_name(str);
427 cls = Dart::vm_isolate()->object_store()->one_byte_string_class();
428 str = Symbols::OneByteString();
429 cls.set_name(str);
420 } 430 }
421 431
422 432
423 RawClass* Object::CreateAndRegisterInterface(const char* cname, 433 RawClass* Object::CreateAndRegisterInterface(const char* cname,
424 const Script& script, 434 const Script& script,
425 const Library& lib) { 435 const Library& lib) {
426 const String& name = String::Handle(Symbols::New(cname)); 436 const String& name = String::Handle(Symbols::New(cname));
427 const Class& cls = Class::Handle( 437 const Class& cls = Class::Handle(
428 Class::NewInterface(name, script, Scanner::kDummyTokenIndex)); 438 Class::NewInterface(name, script, Scanner::kDummyTokenIndex));
429 lib.AddClass(cls); 439 lib.AddClass(cls);
430 return cls.raw(); 440 return cls.raw();
431 } 441 }
432 442
433 443
434 void Object::RegisterClass(const Class& cls, 444 void Object::RegisterClass(const Class& cls,
435 const char* cname, 445 const String& name,
436 const Library& lib) { 446 const Library& lib) {
437 const String& name = String::Handle(Symbols::New(cname));
438 cls.set_name(name); 447 cls.set_name(name);
439 lib.AddClass(cls); 448 lib.AddClass(cls);
440 } 449 }
441 450
442 451
443 void Object::RegisterPrivateClass(const Class& cls, 452 void Object::RegisterPrivateClass(const Class& cls,
444 const char* public_class_name, 453 const String& public_class_name,
445 const Library& lib) { 454 const Library& lib) {
446 String& str = String::Handle(); 455 String& str = String::Handle();
447 str = Symbols::New(public_class_name); 456 str = lib.PrivateName(public_class_name);
448 str = lib.PrivateName(str);
449 cls.set_name(str); 457 cls.set_name(str);
450 lib.AddClass(cls); 458 lib.AddClass(cls);
451 } 459 }
452 460
453 461
454 RawError* Object::Init(Isolate* isolate) { 462 RawError* Object::Init(Isolate* isolate) {
455 TIMERSCOPE(time_bootstrap); 463 TIMERSCOPE(time_bootstrap);
456 ObjectStore* object_store = isolate->object_store(); 464 ObjectStore* object_store = isolate->object_store();
457 465
458 Class& cls = Class::Handle(); 466 Class& cls = Class::Handle();
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
506 514
507 Context& context = Context::Handle(Context::New(0, Heap::kOld)); 515 Context& context = Context::Handle(Context::New(0, Heap::kOld));
508 object_store->set_empty_context(context); 516 object_store->set_empty_context(context);
509 517
510 // Now that the symbol table is initialized and that the core dictionary as 518 // Now that the symbol table is initialized and that the core dictionary as
511 // well as the core implementation dictionary have been setup, preallocate 519 // well as the core implementation dictionary have been setup, preallocate
512 // remaining classes and register them by name in the dictionaries. 520 // remaining classes and register them by name in the dictionaries.
513 const Script& impl_script = Script::Handle( 521 const Script& impl_script = Script::Handle(
514 Bootstrap::LoadCoreImplScript(false)); 522 Bootstrap::LoadCoreImplScript(false));
515 523
524 String& name = String::Handle();
516 cls = Class::New<Integer>(); 525 cls = Class::New<Integer>();
517 object_store->set_integer_implementation_class(cls); 526 object_store->set_integer_implementation_class(cls);
518 RegisterClass(cls, "IntegerImplementation", core_impl_lib); 527 name = Symbols::IntegerImplementation();
528 RegisterClass(cls, name, core_impl_lib);
519 pending_classes.Add(cls, Heap::kOld); 529 pending_classes.Add(cls, Heap::kOld);
520 530
521 cls = Class::New<Smi>(); 531 cls = Class::New<Smi>();
522 object_store->set_smi_class(cls); 532 object_store->set_smi_class(cls);
523 RegisterClass(cls, "Smi", core_impl_lib); 533 name = Symbols::Smi();
534 RegisterClass(cls, name, core_impl_lib);
524 pending_classes.Add(cls, Heap::kOld); 535 pending_classes.Add(cls, Heap::kOld);
525 536
526 cls = Class::New<Mint>(); 537 cls = Class::New<Mint>();
527 object_store->set_mint_class(cls); 538 object_store->set_mint_class(cls);
528 RegisterClass(cls, "Mint", core_impl_lib); 539 name = Symbols::Mint();
540 RegisterClass(cls, name, core_impl_lib);
529 pending_classes.Add(cls, Heap::kOld); 541 pending_classes.Add(cls, Heap::kOld);
530 542
531 cls = Class::New<Bigint>(); 543 cls = Class::New<Bigint>();
532 object_store->set_bigint_class(cls); 544 object_store->set_bigint_class(cls);
533 RegisterClass(cls, "Bigint", core_impl_lib); 545 name = Symbols::Bigint();
546 RegisterClass(cls, name, core_impl_lib);
534 pending_classes.Add(cls, Heap::kOld); 547 pending_classes.Add(cls, Heap::kOld);
535 548
536 cls = Class::New<Double>(); 549 cls = Class::New<Double>();
537 object_store->set_double_class(cls); 550 object_store->set_double_class(cls);
538 RegisterClass(cls, "Double", core_impl_lib); 551 name = Symbols::Double();
552 RegisterClass(cls, name, core_impl_lib);
539 pending_classes.Add(cls, Heap::kOld); 553 pending_classes.Add(cls, Heap::kOld);
540 554
541 cls = Class::New<Bool>(); 555 cls = Class::New<Bool>();
542 object_store->set_bool_class(cls); 556 object_store->set_bool_class(cls);
543 RegisterClass(cls, "Bool", core_impl_lib); 557 name = Symbols::Bool();
558 RegisterClass(cls, name, core_impl_lib);
544 pending_classes.Add(cls, Heap::kOld); 559 pending_classes.Add(cls, Heap::kOld);
545 560
546 cls = object_store->array_class(); // Was allocated above. 561 cls = object_store->array_class(); // Was allocated above.
547 RegisterClass(cls, "ObjectArray", core_impl_lib); 562 name = Symbols::ObjectArray();
563 RegisterClass(cls, name, core_impl_lib);
548 pending_classes.Add(cls, Heap::kOld); 564 pending_classes.Add(cls, Heap::kOld);
549 565
550 cls = object_store->growable_object_array_class(); // Was allocated above. 566 cls = object_store->growable_object_array_class(); // Was allocated above.
551 RegisterClass(cls, "GrowableObjectArray", core_impl_lib); 567 name = Symbols::GrowableObjectArray();
568 RegisterClass(cls, name, core_impl_lib);
552 pending_classes.Add(cls, Heap::kOld); 569 pending_classes.Add(cls, Heap::kOld);
553 570
554 cls = Class::New<ImmutableArray>(); 571 cls = Class::New<ImmutableArray>();
555 object_store->set_immutable_array_class(cls); 572 object_store->set_immutable_array_class(cls);
556 cls.set_type_arguments_instance_field_offset(Array::type_arguments_offset()); 573 cls.set_type_arguments_instance_field_offset(Array::type_arguments_offset());
557 ASSERT(object_store->immutable_array_class() != object_store->array_class()); 574 ASSERT(object_store->immutable_array_class() != object_store->array_class());
558 RegisterClass(cls, "ImmutableArray", core_impl_lib); 575 name = Symbols::ImmutableArray();
576 RegisterClass(cls, name, core_impl_lib);
559 pending_classes.Add(cls, Heap::kOld); 577 pending_classes.Add(cls, Heap::kOld);
560 578
561 cls = object_store->one_byte_string_class(); // Was allocated above. 579 cls = object_store->one_byte_string_class(); // Was allocated above.
562 RegisterClass(cls, "OneByteString", core_impl_lib); 580 name = Symbols::OneByteString();
581 RegisterClass(cls, name, core_impl_lib);
563 pending_classes.Add(cls, Heap::kOld); 582 pending_classes.Add(cls, Heap::kOld);
564 583
565 cls = Class::New<TwoByteString>(); 584 cls = Class::New<TwoByteString>();
566 object_store->set_two_byte_string_class(cls); 585 object_store->set_two_byte_string_class(cls);
567 RegisterClass(cls, "TwoByteString", core_impl_lib); 586 name = Symbols::TwoByteString();
587 RegisterClass(cls, name, core_impl_lib);
568 pending_classes.Add(cls, Heap::kOld); 588 pending_classes.Add(cls, Heap::kOld);
569 589
570 cls = Class::New<FourByteString>(); 590 cls = Class::New<FourByteString>();
571 object_store->set_four_byte_string_class(cls); 591 object_store->set_four_byte_string_class(cls);
572 RegisterClass(cls, "FourByteString", core_impl_lib); 592 name = Symbols::FourByteString();
593 RegisterClass(cls, name, core_impl_lib);
573 pending_classes.Add(cls, Heap::kOld); 594 pending_classes.Add(cls, Heap::kOld);
574 595
575 cls = Class::New<ExternalOneByteString>(); 596 cls = Class::New<ExternalOneByteString>();
576 object_store->set_external_one_byte_string_class(cls); 597 object_store->set_external_one_byte_string_class(cls);
577 RegisterClass(cls, "ExternalOneByteString", core_impl_lib); 598 name = Symbols::ExternalOneByteString();
599 RegisterClass(cls, name, core_impl_lib);
578 pending_classes.Add(cls, Heap::kOld); 600 pending_classes.Add(cls, Heap::kOld);
579 601
580 cls = Class::New<ExternalTwoByteString>(); 602 cls = Class::New<ExternalTwoByteString>();
581 object_store->set_external_two_byte_string_class(cls); 603 object_store->set_external_two_byte_string_class(cls);
582 RegisterClass(cls, "ExternalTwoByteString", core_impl_lib); 604 name = Symbols::ExternalTwoByteString();
605 RegisterClass(cls, name, core_impl_lib);
583 pending_classes.Add(cls, Heap::kOld); 606 pending_classes.Add(cls, Heap::kOld);
584 607
585 cls = Class::New<ExternalFourByteString>(); 608 cls = Class::New<ExternalFourByteString>();
586 object_store->set_external_four_byte_string_class(cls); 609 object_store->set_external_four_byte_string_class(cls);
587 RegisterClass(cls, "ExternalFourByteString", core_impl_lib); 610 name = Symbols::ExternalFourByteString();
611 RegisterClass(cls, name, core_impl_lib);
588 pending_classes.Add(cls, Heap::kOld); 612 pending_classes.Add(cls, Heap::kOld);
589 613
590 cls = Class::New<Stacktrace>(); 614 cls = Class::New<Stacktrace>();
591 object_store->set_stacktrace_class(cls); 615 object_store->set_stacktrace_class(cls);
592 RegisterClass(cls, "Stacktrace", core_impl_lib); 616 name = Symbols::Stacktrace();
617 RegisterClass(cls, name, core_impl_lib);
593 pending_classes.Add(cls, Heap::kOld); 618 pending_classes.Add(cls, Heap::kOld);
594 // Super type set below, after Object is allocated. 619 // Super type set below, after Object is allocated.
595 620
596 cls = Class::New<JSRegExp>(); 621 cls = Class::New<JSRegExp>();
597 object_store->set_jsregexp_class(cls); 622 object_store->set_jsregexp_class(cls);
598 RegisterClass(cls, "JSSyntaxRegExp", core_impl_lib); 623 name = Symbols::JSSyntaxRegExp();
624 RegisterClass(cls, name, core_impl_lib);
599 pending_classes.Add(cls, Heap::kOld); 625 pending_classes.Add(cls, Heap::kOld);
600 626
601 // Initialize the base interfaces used by the core VM classes. 627 // Initialize the base interfaces used by the core VM classes.
602 const Script& script = Script::Handle(Bootstrap::LoadCoreScript(false)); 628 const Script& script = Script::Handle(Bootstrap::LoadCoreScript(false));
603 629
604 // Allocate and initialize the Object class and type. The Object 630 // Allocate and initialize the Object class and type. The Object
605 // class and ByteArray subclasses are the only pre-allocated, 631 // class and ByteArray subclasses are the only pre-allocated,
606 // non-interface classes in the core library. 632 // non-interface classes in the core library.
607 cls = Class::New<Instance>(); 633 cls = Class::New<Instance>();
608 object_store->set_object_class(cls); 634 object_store->set_object_class(cls);
609 cls.set_name(String::Handle(Symbols::New("Object"))); 635 name = Symbols::Object();
636 cls.set_name(name);
610 cls.set_script(script); 637 cls.set_script(script);
611 cls.set_is_prefinalized(); 638 cls.set_is_prefinalized();
612 core_lib.AddClass(cls); 639 core_lib.AddClass(cls);
613 pending_classes.Add(cls, Heap::kOld); 640 pending_classes.Add(cls, Heap::kOld);
614 type = Type::NewNonParameterizedType(cls); 641 type = Type::NewNonParameterizedType(cls);
615 object_store->set_object_type(type); 642 object_store->set_object_type(type);
616 643
617 cls = Class::New<Int8Array>(); 644 cls = Class::New<Int8Array>();
618 object_store->set_int8_array_class(cls); 645 object_store->set_int8_array_class(cls);
619 RegisterPrivateClass(cls, "_Int8Array", core_lib); 646 name = Symbols::_Int8Array();
647 RegisterPrivateClass(cls, name, core_lib);
620 648
621 cls = Class::New<Uint8Array>(); 649 cls = Class::New<Uint8Array>();
622 object_store->set_uint8_array_class(cls); 650 object_store->set_uint8_array_class(cls);
623 RegisterPrivateClass(cls, "_Uint8Array", core_lib); 651 name = Symbols::_Uint8Array();
652 RegisterPrivateClass(cls, name, core_lib);
624 653
625 cls = Class::New<Int16Array>(); 654 cls = Class::New<Int16Array>();
626 object_store->set_int16_array_class(cls); 655 object_store->set_int16_array_class(cls);
627 RegisterPrivateClass(cls, "_Int16Array", core_lib); 656 name = Symbols::_Int16Array();
657 RegisterPrivateClass(cls, name, core_lib);
628 658
629 cls = Class::New<Uint16Array>(); 659 cls = Class::New<Uint16Array>();
630 object_store->set_uint16_array_class(cls); 660 object_store->set_uint16_array_class(cls);
631 RegisterPrivateClass(cls, "_Uint16Array", core_lib); 661 name = Symbols::_Uint16Array();
662 RegisterPrivateClass(cls, name, core_lib);
632 663
633 cls = Class::New<Int32Array>(); 664 cls = Class::New<Int32Array>();
634 object_store->set_int32_array_class(cls); 665 object_store->set_int32_array_class(cls);
635 RegisterPrivateClass(cls, "_Int32Array", core_lib); 666 name = Symbols::_Int32Array();
667 RegisterPrivateClass(cls, name, core_lib);
636 668
637 cls = Class::New<Uint32Array>(); 669 cls = Class::New<Uint32Array>();
638 object_store->set_uint32_array_class(cls); 670 object_store->set_uint32_array_class(cls);
639 RegisterPrivateClass(cls, "_Uint32Array", core_lib); 671 name = Symbols::_Uint32Array();
672 RegisterPrivateClass(cls, name, core_lib);
640 673
641 cls = Class::New<Int64Array>(); 674 cls = Class::New<Int64Array>();
642 object_store->set_int64_array_class(cls); 675 object_store->set_int64_array_class(cls);
643 RegisterPrivateClass(cls, "_Int64Array", core_lib); 676 name = Symbols::_Int64Array();
677 RegisterPrivateClass(cls, name, core_lib);
644 678
645 cls = Class::New<Uint64Array>(); 679 cls = Class::New<Uint64Array>();
646 object_store->set_uint64_array_class(cls); 680 object_store->set_uint64_array_class(cls);
647 RegisterPrivateClass(cls, "_Uint64Array", core_lib); 681 name = Symbols::_Uint64Array();
682 RegisterPrivateClass(cls, name, core_lib);
648 683
649 cls = Class::New<Float32Array>(); 684 cls = Class::New<Float32Array>();
650 object_store->set_float32_array_class(cls); 685 object_store->set_float32_array_class(cls);
651 RegisterPrivateClass(cls, "_Float32Array", core_lib); 686 name = Symbols::_Float32Array();
687 RegisterPrivateClass(cls, name, core_lib);
652 688
653 cls = Class::New<Float64Array>(); 689 cls = Class::New<Float64Array>();
654 object_store->set_float64_array_class(cls); 690 object_store->set_float64_array_class(cls);
655 RegisterPrivateClass(cls, "_Float64Array", core_lib); 691 name = Symbols::_Float64Array();
692 RegisterPrivateClass(cls, name, core_lib);
656 693
657 cls = Class::New<ExternalInt8Array>(); 694 cls = Class::New<ExternalInt8Array>();
658 object_store->set_external_int8_array_class(cls); 695 object_store->set_external_int8_array_class(cls);
659 RegisterPrivateClass(cls, "_ExternalInt8Array", core_lib); 696 name = Symbols::_ExternalInt8Array();
697 RegisterPrivateClass(cls, name, core_lib);
660 698
661 cls = Class::New<ExternalUint8Array>(); 699 cls = Class::New<ExternalUint8Array>();
662 object_store->set_external_uint8_array_class(cls); 700 object_store->set_external_uint8_array_class(cls);
663 RegisterPrivateClass(cls, "_ExternalUint8Array", core_lib); 701 name = Symbols::_ExternalUint8Array();
702 RegisterPrivateClass(cls, name, core_lib);
664 703
665 cls = Class::New<ExternalInt16Array>(); 704 cls = Class::New<ExternalInt16Array>();
666 object_store->set_external_int16_array_class(cls); 705 object_store->set_external_int16_array_class(cls);
667 RegisterPrivateClass(cls, "_ExternalInt16Array", core_lib); 706 name = Symbols::_ExternalInt16Array();
707 RegisterPrivateClass(cls, name, core_lib);
668 708
669 cls = Class::New<ExternalUint16Array>(); 709 cls = Class::New<ExternalUint16Array>();
670 object_store->set_external_uint16_array_class(cls); 710 object_store->set_external_uint16_array_class(cls);
671 RegisterPrivateClass(cls, "_ExternalUint16Array", core_lib); 711 name = Symbols::_ExternalUint16Array();
712 RegisterPrivateClass(cls, name, core_lib);
672 713
673 cls = Class::New<ExternalInt32Array>(); 714 cls = Class::New<ExternalInt32Array>();
674 object_store->set_external_int32_array_class(cls); 715 object_store->set_external_int32_array_class(cls);
675 RegisterPrivateClass(cls, "_ExternalInt32Array", core_lib); 716 name = Symbols::_ExternalInt32Array();
717 RegisterPrivateClass(cls, name, core_lib);
676 718
677 cls = Class::New<ExternalUint32Array>(); 719 cls = Class::New<ExternalUint32Array>();
678 object_store->set_external_uint32_array_class(cls); 720 object_store->set_external_uint32_array_class(cls);
679 RegisterPrivateClass(cls, "_ExternalUint32Array", core_lib); 721 name = Symbols::_ExternalUint32Array();
722 RegisterPrivateClass(cls, name, core_lib);
680 723
681 cls = Class::New<ExternalInt64Array>(); 724 cls = Class::New<ExternalInt64Array>();
682 object_store->set_external_int64_array_class(cls); 725 object_store->set_external_int64_array_class(cls);
683 RegisterPrivateClass(cls, "_ExternalInt64Array", core_lib); 726 name = Symbols::_ExternalInt64Array();
727 RegisterPrivateClass(cls, name, core_lib);
684 728
685 cls = Class::New<ExternalUint64Array>(); 729 cls = Class::New<ExternalUint64Array>();
686 object_store->set_external_uint64_array_class(cls); 730 object_store->set_external_uint64_array_class(cls);
687 RegisterPrivateClass(cls, "_ExternalUint64Array", core_lib); 731 name = Symbols::_ExternalUint64Array();
732 RegisterPrivateClass(cls, name, core_lib);
688 733
689 cls = Class::New<ExternalFloat32Array>(); 734 cls = Class::New<ExternalFloat32Array>();
690 object_store->set_external_float32_array_class(cls); 735 object_store->set_external_float32_array_class(cls);
691 RegisterPrivateClass(cls, "_ExternalFloat32Array", core_lib); 736 name = Symbols::_ExternalFloat32Array();
737 RegisterPrivateClass(cls, name, core_lib);
692 738
693 cls = Class::New<ExternalFloat64Array>(); 739 cls = Class::New<ExternalFloat64Array>();
694 object_store->set_external_float64_array_class(cls); 740 object_store->set_external_float64_array_class(cls);
695 RegisterPrivateClass(cls, "_ExternalFloat64Array", core_lib); 741 name = Symbols::_ExternalFloat64Array();
742 RegisterPrivateClass(cls, name, core_lib);
696 743
697 // Set the super type of class Stacktrace to Object type so that the 744 // Set the super type of class Stacktrace to Object type so that the
698 // 'toString' method is implemented. 745 // 'toString' method is implemented.
699 cls = object_store->stacktrace_class(); 746 cls = object_store->stacktrace_class();
700 cls.set_super_type(type); 747 cls.set_super_type(type);
701 748
702 cls = CreateAndRegisterInterface("Function", script, core_lib); 749 cls = CreateAndRegisterInterface("Function", script, core_lib);
703 pending_classes.Add(cls, Heap::kOld); 750 pending_classes.Add(cls, Heap::kOld);
704 type = Type::NewNonParameterizedType(cls); 751 type = Type::NewNonParameterizedType(cls);
705 object_store->set_function_interface(type); 752 object_store->set_function_interface(type);
(...skipping 10552 matching lines...) Expand 10 before | Expand all | Expand 10 after
11258 const char* JSRegExp::ToCString() const { 11305 const char* JSRegExp::ToCString() const {
11259 const String& str = String::Handle(pattern()); 11306 const String& str = String::Handle(pattern());
11260 const char* format = "JSRegExp: pattern=%s flags=%s"; 11307 const char* format = "JSRegExp: pattern=%s flags=%s";
11261 intptr_t len = OS::SNPrint(NULL, 0, format, str.ToCString(), Flags()); 11308 intptr_t len = OS::SNPrint(NULL, 0, format, str.ToCString(), Flags());
11262 char* chars = Isolate::Current()->current_zone()->Alloc<char>(len + 1); 11309 char* chars = Isolate::Current()->current_zone()->Alloc<char>(len + 1);
11263 OS::SNPrint(chars, (len + 1), format, str.ToCString(), Flags()); 11310 OS::SNPrint(chars, (len + 1), format, str.ToCString(), Flags());
11264 return chars; 11311 return chars;
11265 } 11312 }
11266 11313
11267 } // namespace dart 11314 } // namespace dart
OLDNEW
« no previous file with comments | « vm/object.h ('k') | vm/symbols.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698