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

Unified Diff: runtime/vm/object_test.cc

Issue 14820028: Delay Class parsing until the class is actually used. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 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 side-by-side diff with in-line comments
Download patch
Index: runtime/vm/object_test.cc
===================================================================
--- runtime/vm/object_test.cc (revision 22914)
+++ runtime/vm/object_test.cc (working copy)
@@ -15,12 +15,20 @@
namespace dart {
+static RawClass* CreateDummyClass(const String& class_name,
+ const Script& script) {
+ const Class& cls = Class::Handle(
+ Class::New(class_name, script, Scanner::kDummyTokenIndex));
+ cls.set_is_parsed(); // Dummy class for testing, mark as parsed.
+ return cls.raw();
+}
+
+
TEST_CASE(Class) {
// Allocate the class first.
const String& class_name = String::Handle(Symbols::New("MyClass"));
const Script& script = Script::Handle();
- const Class& cls = Class::Handle(
- Class::New(class_name, script, Scanner::kDummyTokenIndex));
+ const Class& cls = Class::Handle(CreateDummyClass(class_name, script));
// Class has no fields.
cls.SetFields(Object::empty_array());
@@ -106,10 +114,10 @@
Class& interface = Class::Handle();
String& interface_name = String::Handle();
interface_name = Symbols::New("Harley");
- interface = Class::New(interface_name, script, Scanner::kDummyTokenIndex);
+ interface = CreateDummyClass(interface_name, script);
interfaces.SetAt(0, Type::Handle(Type::NewNonParameterizedType(interface)));
interface_name = Symbols::New("Norton");
- interface = Class::New(interface_name, script, Scanner::kDummyTokenIndex);
+ interface = CreateDummyClass(interface_name, script);
interfaces.SetAt(1, Type::Handle(Type::NewNonParameterizedType(interface)));
cls.set_interfaces(interfaces);
cls.Finalize();
@@ -165,7 +173,7 @@
String& class_name = String::Handle(Symbols::New("EmptyClass"));
Script& script = Script::Handle();
const Class& empty_class =
- Class::Handle(Class::New(class_name, script, Scanner::kDummyTokenIndex));
+ Class::Handle(CreateDummyClass(class_name, script));
// No functions and no super class for the EmptyClass.
empty_class.SetFields(Object::empty_array());
@@ -176,7 +184,7 @@
class_name = Symbols::New("OneFieldClass");
const Class& one_field_class =
- Class::Handle(Class::New(class_name, script, Scanner::kDummyTokenIndex));
+ Class::Handle(CreateDummyClass(class_name, script));
// No functions and no super class for the OneFieldClass.
const Array& one_fields = Array::Handle(Array::New(1));
@@ -2173,8 +2181,7 @@
// Allocate the class first.
const String& class_name = String::Handle(Symbols::New("MyClass"));
const Script& script = Script::Handle();
- const Class& cls =
- Class::Handle(Class::New(class_name, script, Scanner::kDummyTokenIndex));
+ const Class& cls = Class::Handle(CreateDummyClass(class_name, script));
const Array& functions = Array::Handle(Array::New(1));
const Context& context = Context::Handle(Context::New(0));
@@ -2248,7 +2255,7 @@
const String& class_name = String::Handle(Symbols::New("ownerClass"));
const Script& script = Script::Handle();
const Class& owner_class =
- Class::Handle(Class::New(class_name, script, Scanner::kDummyTokenIndex));
+ Class::Handle(CreateDummyClass(class_name, script));
const String& function_name = String::ZoneHandle(Symbols::New(name));
Function& function = Function::ZoneHandle(
Function::New(function_name, RawFunction::kRegularFunction,
@@ -2420,7 +2427,7 @@
static RawClass* CreateTestClass(const char* name) {
const String& class_name = String::Handle(Symbols::New(name));
const Class& cls = Class::Handle(
- Class::New(class_name, Script::Handle(), Scanner::kDummyTokenIndex));
+ CreateDummyClass(class_name, Script::Handle()));
return cls.raw();
}
@@ -2460,7 +2467,7 @@
static RawFunction* GetDummyTarget(const char* name) {
const String& function_name = String::Handle(Symbols::New(name));
const Class& cls = Class::Handle(
- Class::New(function_name, Script::Handle(), Scanner::kDummyTokenIndex));
+ CreateDummyClass(function_name, Script::Handle()));
const bool is_static = false;
const bool is_const = false;
const bool is_abstract = false;
@@ -2533,7 +2540,7 @@
String& class_name = String::Handle(Symbols::New("EmptyClass"));
Script& script = Script::Handle();
const Class& empty_class =
- Class::Handle(Class::New(class_name, script, Scanner::kDummyTokenIndex));
+ Class::Handle(CreateDummyClass(class_name, script));
SubtypeTestCache& cache = SubtypeTestCache::Handle(SubtypeTestCache::New());
ASSERT(!cache.IsNull());
EXPECT_EQ(0, cache.NumberOfChecks());

Powered by Google App Engine
This is Rietveld 408576698