-class MachineCodeForMethod: public NonCopyable, private Annotation {
-private:
- static AnnotationID AID;
-private:
- const Method* method;
- bool compiledAsLeaf;
- unsigned staticStackSize;
- unsigned automaticVarsSize;
- unsigned regSpillsSize;
- unsigned currentOptionalArgsSize;
- unsigned maxOptionalArgsSize;
- unsigned currentTmpValuesSize;
- hash_set<const Constant*> constantsForConstPool;
- hash_map<const Value*, int> offsets;
- // hash_map<const Value*, int> offsetsFromSP;
-
-public:
- /*ctor*/ MachineCodeForMethod(const Method* method,
- const TargetMachine& target);
-
- // The next two methods are used to construct and to retrieve
- // the MachineCodeForMethod object for the given method.
- // construct() -- Allocates and initializes for a given method and target
- // get() -- Returns a handle to the object.
- // This should not be called before "construct()"
- // for a given Method.
- //
- inline static MachineCodeForMethod& construct(const Method* method,
- const TargetMachine& target)
- {
- assert(method->getAnnotation(MachineCodeForMethod::AID) == NULL &&
- "Object already exists for this method!");
- MachineCodeForMethod* mcInfo = new MachineCodeForMethod(method, target);
- method->addAnnotation(mcInfo);
- return *mcInfo;
- }
+
+ unsigned substituteValue(const Value* oldVal, Value* newVal,
+ bool defsOnly, bool notDefsAndUses,
+ bool& someArgsWereIgnored);
+
+ void setOperandHi32(unsigned i) { operands[i].markHi32(); }
+ void setOperandLo32(unsigned i) { operands[i].markLo32(); }
+ void setOperandHi64(unsigned i) { operands[i].markHi64(); }
+ void setOperandLo64(unsigned i) { operands[i].markLo64(); }