soot.options.LockAllocator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of robovm-soot Show documentation
Show all versions of robovm-soot Show documentation
RoboVM fork of Soot - A Java optimization framework
/* Soot - a J*va Optimization Framework
* Copyright (C) 2003 Ondrej Lhotak
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
/* THIS FILE IS AUTO-GENERATED FROM soot_options.xml. DO NOT MODIFY. */
package soot.options;
import java.util.*;
/** Option parser for Lock Allocator. */
public class LockAllocator
{
private Map options;
public LockAllocator( Map options ) {
this.options = options;
}
/** Enabled --
* .
*
*/
public boolean enabled() {
return soot.PhaseOptions.getBoolean( options, "enabled" );
}
/** Perform Deadlock Avoidance --
* Perform Deadlock Avoidance.
* Perform Deadlock Avoidance by enforcing a lock ordering where
* necessary.
*/
public boolean avoid_deadlock() {
return soot.PhaseOptions.getBoolean( options, "avoid-deadlock" );
}
/** Use Open Nesting --
* Use an open nesting model.
* Use an open nesting model, where inner transactions are allowed
* to commit independently of any outer transaction.
*/
public boolean open_nesting() {
return soot.PhaseOptions.getBoolean( options, "open-nesting" );
}
/** Perform May-Happen-in-Parallel Analysis --
* Perform a May-Happen-in-Parallel analysis.
* Perform a May-Happen-in-Parallel analysis to assist in
* allocating locks.
*/
public boolean do_mhp() {
return soot.PhaseOptions.getBoolean( options, "do-mhp" );
}
/** Perform Local Objects Analysis --
* Perform a Local-Objects analysis.
* Perform a Local-Objects analysis to assist in allocating locks.
*
*/
public boolean do_tlo() {
return soot.PhaseOptions.getBoolean( options, "do-tlo" );
}
/** Print Topological Graph --
* Print topological graph of transactions.
* Print a topological graph of the program's transactions in the
* format used by the graphviz package.
*/
public boolean print_graph() {
return soot.PhaseOptions.getBoolean( options, "print-graph" );
}
/** Print Table --
* Print table of transactions.
* Print a table of information about the program's transactions.
*/
public boolean print_table() {
return soot.PhaseOptions.getBoolean( options, "print-table" );
}
/** Print Debugging Info --
* Print debugging info.
* Print debugging info, including every statement visited.
*/
public boolean print_debug() {
return soot.PhaseOptions.getBoolean( options, "print-debug" );
}
public static final int locking_scheme_medium_grained = 1;
public static final int locking_scheme_coarse_grained = 2;
public static final int locking_scheme_single_static = 3;
public static final int locking_scheme_leave_original = 4;
/** Locking Scheme --
* Selects the granularity of the generated lock allocation.
* Selects the granularity of the generated lock allocation
*/
public int locking_scheme() {
String s = soot.PhaseOptions.getString( options, "locking-scheme" );
if( s.equalsIgnoreCase( "medium-grained" ) )
return locking_scheme_medium_grained;
if( s.equalsIgnoreCase( "coarse-grained" ) )
return locking_scheme_coarse_grained;
if( s.equalsIgnoreCase( "single-static" ) )
return locking_scheme_single_static;
if( s.equalsIgnoreCase( "leave-original" ) )
return locking_scheme_leave_original;
throw new RuntimeException( "Invalid value "+s+" of phase option locking-scheme" );
}
}