bounds_check_elimination.h revision 7c3952f423b8213083d60596a5f0bf4237ca3f7b
1f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang/*
2f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang * Copyright (C) 2014 The Android Open Source Project
3f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang *
4f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang * Licensed under the Apache License, Version 2.0 (the "License");
5f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang * you may not use this file except in compliance with the License.
6f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang * You may obtain a copy of the License at
7f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang *
8f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang *      http://www.apache.org/licenses/LICENSE-2.0
9f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang *
10f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang * Unless required by applicable law or agreed to in writing, software
11f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang * distributed under the License is distributed on an "AS IS" BASIS,
12f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang * See the License for the specific language governing permissions and
14f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang * limitations under the License.
15f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang */
16f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang
17f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang#ifndef ART_COMPILER_OPTIMIZING_BOUNDS_CHECK_ELIMINATION_H_
18f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang#define ART_COMPILER_OPTIMIZING_BOUNDS_CHECK_ELIMINATION_H_
19f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang
20f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang#include "optimization.h"
21f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang
22f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yangnamespace art {
23f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang
24f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yangclass BoundsCheckElimination : public HOptimization {
25f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang public:
267c3952f423b8213083d60596a5f0bf4237ca3f7bAndreas Gampe  explicit BoundsCheckElimination(HGraph* graph)
277c3952f423b8213083d60596a5f0bf4237ca3f7bAndreas Gampe      : HOptimization(graph, true, kBoundsCheckEliminiationPassName) {}
28f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang
29f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang  void Run() OVERRIDE;
30f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang
317c3952f423b8213083d60596a5f0bf4237ca3f7bAndreas Gampe  static constexpr const char* kBoundsCheckEliminiationPassName = "BCE";
327c3952f423b8213083d60596a5f0bf4237ca3f7bAndreas Gampe
33f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang private:
34f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang  DISALLOW_COPY_AND_ASSIGN(BoundsCheckElimination);
35f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang};
36f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang
37f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang}  // namespace art
38f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang
39f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang#endif  // ART_COMPILER_OPTIMIZING_BOUNDS_CHECK_ELIMINATION_H_
40