bounds_check_elimination.h revision 22af3bee34d0ab1a4bd186c71ccab00366882259
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 2422af3bee34d0ab1a4bd186c71ccab00366882259Aart Bikclass HInductionVarAnalysis; 2522af3bee34d0ab1a4bd186c71ccab00366882259Aart Bik 26f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yangclass BoundsCheckElimination : public HOptimization { 27f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang public: 2822af3bee34d0ab1a4bd186c71ccab00366882259Aart Bik BoundsCheckElimination(HGraph* graph, HInductionVarAnalysis* induction_analysis) 2922af3bee34d0ab1a4bd186c71ccab00366882259Aart Bik : HOptimization(graph, kBoundsCheckEliminiationPassName), 3022af3bee34d0ab1a4bd186c71ccab00366882259Aart Bik induction_analysis_(induction_analysis) {} 31f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang 32f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang void Run() OVERRIDE; 33f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang 347c3952f423b8213083d60596a5f0bf4237ca3f7bAndreas Gampe static constexpr const char* kBoundsCheckEliminiationPassName = "BCE"; 357c3952f423b8213083d60596a5f0bf4237ca3f7bAndreas Gampe 36f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang private: 3722af3bee34d0ab1a4bd186c71ccab00366882259Aart Bik HInductionVarAnalysis* induction_analysis_; 3822af3bee34d0ab1a4bd186c71ccab00366882259Aart Bik 39f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang DISALLOW_COPY_AND_ASSIGN(BoundsCheckElimination); 40f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang}; 41f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang 42f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang} // namespace art 43f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang 44f384f88d4d1e89df82f47fbc7245a8acc9c2d49cMingyao Yang#endif // ART_COMPILER_OPTIMIZING_BOUNDS_CHECK_ELIMINATION_H_ 45