| Index: runtime/vm/profiler_test.cc | 
| diff --git a/runtime/vm/profiler_test.cc b/runtime/vm/profiler_test.cc | 
| index f24629ff7967c1dc371974f8b2ce73a215ca589d..9759876070cbab4c9d478e3e40404cc8b45f43f5 100644 | 
| --- a/runtime/vm/profiler_test.cc | 
| +++ b/runtime/vm/profiler_test.cc | 
| @@ -103,7 +103,7 @@ TEST_CASE(Profiler_AllocationSampleTest) { | 
|  | 
| static RawClass* GetClass(const Library& lib, const char* name) { | 
| const Class& cls = Class::Handle( | 
| -      lib.LookupClass(String::Handle(Symbols::New(name)))); | 
| +      lib.LookupClassAllowPrivate(String::Handle(Symbols::New(name)))); | 
| EXPECT(!cls.IsNull());  // No ambiguity error expected. | 
| return cls.raw(); | 
| } | 
| @@ -483,4 +483,62 @@ TEST_CASE(Profiler_ArrayAllocation) { | 
| } | 
| } | 
|  | 
| + | 
| +TEST_CASE(Profiler_TypedArrayAllocation) { | 
| +  const char* kScript = | 
| +      "import 'dart:typed_data';\n" | 
| +      "List foo() => new Float32List(4);\n"; | 
| +  Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); | 
| +  EXPECT_VALID(lib); | 
| +  Library& root_library = Library::Handle(); | 
| +  root_library ^= Api::UnwrapHandle(lib); | 
| +  Isolate* isolate = Isolate::Current(); | 
| + | 
| +  const Library& typed_data_library = | 
| +      Library::Handle(isolate->object_store()->typed_data_library()); | 
| + | 
| +  const Class& float32_list_class = | 
| +      Class::Handle(GetClass(typed_data_library, "_Float32Array")); | 
| +  EXPECT(!float32_list_class.IsNull()); | 
| + | 
| +  Dart_Handle result = Dart_Invoke(lib, NewString("foo"), 0, NULL); | 
| +  EXPECT_VALID(result); | 
| + | 
| +  { | 
| +    StackZone zone(isolate); | 
| +    HANDLESCOPE(isolate); | 
| +    Profile profile(isolate); | 
| +    AllocationFilter filter(isolate, float32_list_class.id()); | 
| +    profile.Build(&filter, Profile::kNoTags); | 
| +    // We should have no allocation samples. | 
| +    EXPECT_EQ(0, profile.sample_count()); | 
| +  } | 
| + | 
| +  float32_list_class.SetTraceAllocation(true); | 
| +  result = Dart_Invoke(lib, NewString("foo"), 0, NULL); | 
| +  EXPECT_VALID(result); | 
| + | 
| +  { | 
| +    StackZone zone(isolate); | 
| +    HANDLESCOPE(isolate); | 
| +    Profile profile(isolate); | 
| +    AllocationFilter filter(isolate, float32_list_class.id()); | 
| +    profile.Build(&filter, Profile::kNoTags); | 
| +    // We should have one allocation sample. | 
| +    EXPECT_EQ(1, profile.sample_count()); | 
| +    ProfileTrieWalker walker(&profile); | 
| + | 
| +    walker.Reset(Profile::kExclusiveCode); | 
| +    EXPECT(walker.Down()); | 
| +    EXPECT_STREQ("_Float32Array._new", walker.CurrentName()); | 
| +    EXPECT(walker.Down()); | 
| +    EXPECT_STREQ("_Float32Array._Float32Array", walker.CurrentName()); | 
| +    EXPECT(walker.Down()); | 
| +    EXPECT_STREQ("Float32List.Float32List", walker.CurrentName()); | 
| +    EXPECT(walker.Down()); | 
| +    EXPECT_STREQ("foo", walker.CurrentName()); | 
| +    EXPECT(!walker.Down()); | 
| +  } | 
| +} | 
| + | 
| }  // namespace dart | 
|  |