Home | History | Annotate | Download | only in runtime

Lines Matching refs:method

31 void ClassHierarchyAnalysis::AddDependency(ArtMethod* method,
34 auto it = cha_dependency_map_.find(method);
36 cha_dependency_map_[method] =
38 it = cha_dependency_map_.find(method);
46 ClassHierarchyAnalysis::GetDependents(ArtMethod* method) {
47 auto it = cha_dependency_map_.find(method);
55 void ClassHierarchyAnalysis::RemoveDependencyFor(ArtMethod* method) {
56 auto it = cha_dependency_map_.find(method);
89 // This stack visitor walks the stack and for compiled code with certain method
103 ArtMethod* method = GetMethod();
104 // Avoid types of methods that do not have an oat quick method header.
105 if (method == nullptr ||
106 method->IsRuntimeMethod() ||
107 method->IsNative() ||
108 method->IsProxyMethod()) {
115 // Method may have multiple versions of compiled code. Check
116 // the method header to see if it has should_deoptimize flag.
125 // Not in the list of method headers that should be deoptimized.
151 // Set of method headers for compiled code that should be deoptimized.
182 // List of method headers for invalidated compiled code.
225 // If virtual_method doesn't come from a default interface method, it should
244 // method m and one non-abstract method mImpl that overrides method m.
264 // An abstract method should have made all methods in the same vtable
277 // the abstract method. Invoking method_in_super may throw AbstractMethodError.
283 // One abstract method overrides another abstract method. This is an uncommon
290 // A non-abstract method overrides an abstract method.
294 // going on that can check/modify the single-implementation flag/method
316 // An abstract method overrides a non-abstract method. This is an uncommon
327 // method_in_super might be the single-implementation of another abstract method,
339 // are cases that one abstract method overrides another method, we
340 // should have made that method having non-single-implementation already.
381 // interface_method. Invoking the interface method on the class will throw
389 // on that can check/modify the single-implementation flag/method of
408 // method, we need to check the declaring class for equality.
416 ArtMethod* method,
418 DCHECK(method->IsCopied() || method->GetDeclaringClass() == klass.Get());
419 if (klass->IsFinal() || method->IsFinal()) {
425 if (method->IsAbstract()) {
426 // single-implementation of abstract method shares the same field
427 // that's used for JNI function of native method. It's fine since a method
429 DCHECK(!method->IsNative()) << "Abstract method cannot be native";
431 if (method->GetDeclaringClass()->IsInstantiable()) {
434 method->SetHasSingleImplementation(false);
435 DCHECK(method->GetSingleImplementation(pointer_size) == nullptr);
437 // Abstract method starts with single-implementation flag set and null
438 // implementation method.
439 method->SetHasSingleImplementation(true);
440 DCHECK(method->GetSingleImplementation(pointer_size) == nullptr);
443 method->SetHasSingleImplementation(true);
444 // Single implementation of non-abstract method is itself.
445 DCHECK_EQ(method->GetSingleImplementation(pointer_size), method);
452 for (ArtMethod& method : klass->GetDeclaredVirtualMethods(image_pointer_size)) {
453 DCHECK(method.IsAbstract() || method.IsDefault());
454 InitSingleImplementationFlag(klass, &method, image_pointer_size);
470 ArtMethod* method = klass->GetVTableEntry(i, image_pointer_size);
472 if (method == method_in_super) {
474 if (method->IsAbstract() && klass->IsInstantiable()) {
475 // An instantiable class that inherits an abstract method is treated as
478 method,
485 InitSingleImplementationFlag(klass, method, image_pointer_size);
487 method,
494 ArtMethod* method = klass->GetVTableEntry(i, image_pointer_size);
495 InitSingleImplementationFlag(klass, method, image_pointer_size);
526 // Method headers for compiled code to be invalidated.
546 // Clear the single implementation method.
562 ArtMethod* method = dependent.first;;
564 VLOG(class_linker) << "CHA invalidated compiled code for " << method->PrettyMethod();
567 method, method_header);