12469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler/*
22469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler * Copyright (C) 2014 The Android Open Source Project
32469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler *
42469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler * Licensed under the Apache License, Version 2.0 (the "License");
52469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler * you may not use this file except in compliance with the License.
62469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler * You may obtain a copy of the License at
72469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler *
82469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler *      http://www.apache.org/licenses/LICENSE-2.0
92469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler *
102469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler * Unless required by applicable law or agreed to in writing, software
112469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler * distributed under the License is distributed on an "AS IS" BASIS,
122469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler * See the License for the specific language governing permissions and
142469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler * limitations under the License.
152469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler */
162469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler
172469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler#ifndef ART_COMPILER_DEX_PASS_DRIVER_ME_OPTS_H_
182469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler#define ART_COMPILER_DEX_PASS_DRIVER_ME_OPTS_H_
192469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler
202469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler#include "pass_driver_me.h"
212469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler
222469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beylernamespace art {
232469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler
242469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler// Forward Declarations.
252469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beylerstruct CompilationUnit;
262469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beylerclass Pass;
272469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beylerclass PassDataHolder;
282469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler
292469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beylerclass PassDriverMEOpts : public PassDriverME<PassDriverMEOpts> {
302469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler public:
312469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler  explicit PassDriverMEOpts(CompilationUnit* cu):PassDriverME<PassDriverMEOpts>(cu) {
322469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler  }
332469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler
342469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler  ~PassDriverMEOpts() {
352469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler  }
362469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler
372469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler  /**
382469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler   * @brief Apply a patch: perform start/work/end functions.
392469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler   */
402469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler  virtual void ApplyPass(PassDataHolder* data, const Pass* pass);
412469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler};
422469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler
432469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler}  // namespace art
442469e60e6ff08c2a0b4cd1e209246c5d91027679Jean Christophe Beyler#endif  // ART_COMPILER_DEX_PASS_DRIVER_ME_OPTS_H_
45