blob: aa20ce67b42a3839e0cf1cfeaced79dec7a3a55f [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @author Intel, Pavel A. Ozhdikhin
* @version $
*
*/
#ifndef _IRBUILDERFLAGS_H_
#define _IRBUILDERFLAGS_H_
namespace Jitrino {
//
// flags that control how the IRBuilder expands and optimizes IR instructions
//
struct IRBuilderFlags {
IRBuilderFlags () {
expandMemAddrs = expandNullChecks = false;
expandCallAddrs = expandVirtualCallAddrs = false;
expandElemAddrs = expandElemTypeChecks = false;
doSimplify = doCSE = false;
insertMethodLabels = insertWriteBarriers = false;
suppressCheckBounds = false;
compressedReferences = false;
genMinMaxAbs = false;
genFMinMaxAbs = false;
useNewTypeSystem = false;
}
/* expansion flags */
bool expandMemAddrs : 1; // expand field/array element accesses
bool expandElemAddrs : 1; // expand array elem address computation
bool expandCallAddrs : 1; // expand fun address computation for direct calls
bool expandVirtualCallAddrs : 1; // expand fun address computation for virtual calls
bool expandNullChecks : 1; // explicit null checks
bool expandElemTypeChecks: 1; // explicit array elem type checks for stores
/* optimization flags */
bool doCSE : 1; // common subexpression elimination
bool doSimplify : 1; // simplification
/* label & debug insertion */
bool insertMethodLabels : 1; // insert method entry/exit labels
bool insertWriteBarriers : 1; // insert write barriers to mem stores
bool suppressCheckBounds : 1;
bool compressedReferences: 1; // are refs in heap compressed?
bool genMinMaxAbs : 1;
bool genFMinMaxAbs : 1;
// LBS Project flags
bool useNewTypeSystem : 1; // Use the new LBS type system rather than the old one
};
} //namespace
#endif // _IRBUILDERFLAGS_H_