diff options
| author | 2015-10-15 15:52:53 +0000 | |
|---|---|---|
| committer | 2015-10-15 15:52:53 +0000 | |
| commit | 4f55fd25111217e37001958b7069fe03292ff1a4 (patch) | |
| tree | bbf5555232c04d9dde9ad4198124247a6a767d2a /compiler/driver/compiler_driver.cc | |
| parent | bc6cb93b2607e584fccdfe4e05ae74aa94e9e463 (diff) | |
| parent | d57d454a11ac6f49eaa397ec14d6231e3a2727b7 (diff) | |
Merge "Allocate dex cache arrays in their class loader's linear alloc"
Diffstat (limited to 'compiler/driver/compiler_driver.cc')
| -rw-r--r-- | compiler/driver/compiler_driver.cc | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/compiler/driver/compiler_driver.cc b/compiler/driver/compiler_driver.cc index 74f19a1029..8324bf30d6 100644 --- a/compiler/driver/compiler_driver.cc +++ b/compiler/driver/compiler_driver.cc @@ -953,7 +953,9 @@ void CompilerDriver::LoadImageClasses(TimingLogger* timings) {        uint16_t exception_type_idx = exception_type.first;        const DexFile* dex_file = exception_type.second;        StackHandleScope<2> hs2(self); -      Handle<mirror::DexCache> dex_cache(hs2.NewHandle(class_linker->RegisterDexFile(*dex_file))); +      Handle<mirror::DexCache> dex_cache(hs2.NewHandle(class_linker->RegisterDexFile( +          *dex_file, +          Runtime::Current()->GetLinearAlloc())));        Handle<mirror::Class> klass(hs2.NewHandle(            class_linker->ResolveType(*dex_file, exception_type_idx, dex_cache,                                      NullHandle<mirror::ClassLoader>()))); @@ -2010,9 +2012,11 @@ class ResolveTypeVisitor : public CompilationVisitor {      ClassLinker* class_linker = manager_->GetClassLinker();      const DexFile& dex_file = *manager_->GetDexFile();      StackHandleScope<2> hs(soa.Self()); -    Handle<mirror::DexCache> dex_cache(hs.NewHandle(class_linker->RegisterDexFile(dex_file)));      Handle<mirror::ClassLoader> class_loader(          hs.NewHandle(soa.Decode<mirror::ClassLoader*>(manager_->GetClassLoader()))); +    Handle<mirror::DexCache> dex_cache(hs.NewHandle(class_linker->RegisterDexFile( +        dex_file, +        class_linker->GetOrCreateAllocatorForClassLoader(class_loader.Get()))));      mirror::Class* klass = class_linker->ResolveType(dex_file, type_idx, dex_cache, class_loader);      if (klass == nullptr) {  |