diff options
Diffstat (limited to 'compiler/optimizing/code_generator.h')
| -rw-r--r-- | compiler/optimizing/code_generator.h | 21 | 
1 files changed, 20 insertions, 1 deletions
| diff --git a/compiler/optimizing/code_generator.h b/compiler/optimizing/code_generator.h index 82a54d2ed1..81c1a7fe16 100644 --- a/compiler/optimizing/code_generator.h +++ b/compiler/optimizing/code_generator.h @@ -449,10 +449,15 @@ class CodeGenerator : public DeletableArenaObject<kArenaAllocCodeGenerator> {                               SlowPathCode* slow_path) = 0;    // Check if the desired_string_load_kind is supported. If it is, return it, -  // otherwise return a fall-back info that should be used instead. +  // otherwise return a fall-back kind that should be used instead.    virtual HLoadString::LoadKind GetSupportedLoadStringKind(        HLoadString::LoadKind desired_string_load_kind) = 0; +  // Check if the desired_class_load_kind is supported. If it is, return it, +  // otherwise return a fall-back kind that should be used instead. +  virtual HLoadClass::LoadKind GetSupportedLoadClassKind( +      HLoadClass::LoadKind desired_class_load_kind) = 0; +    // Check if the desired_dispatch_info is supported. If it is, return it,    // otherwise return a fall-back info that should be used instead.    virtual HInvokeStaticOrDirect::DispatchInfo GetSupportedInvokeStaticOrDirectDispatch( @@ -496,6 +501,20 @@ class CodeGenerator : public DeletableArenaObject<kArenaAllocCodeGenerator> {      LabelType label;    }; +  // Type patch info used for recording locations of required linker patches and +  // target types. The actual type address can be absolute or PC-relative. +  // TODO: Consider merging with MethodPatchInfo and StringPatchInfo - all these +  // classes contain the dex file, some index and the label. +  template <typename LabelType> +  struct TypePatchInfo { +    TypePatchInfo(const DexFile& df, uint32_t index) +        : dex_file(df), type_index(index), label() { } + +    const DexFile& dex_file; +    uint32_t type_index; +    LabelType label; +  }; +    CodeGenerator(HGraph* graph,                  size_t number_of_core_registers,                  size_t number_of_fpu_registers, |