| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |