summaryrefslogtreecommitdiffstats
path: root/compiler/optimizing/code_generator_x86.h
diff options
context:
space:
mode:
authorCalin Juravle <calin@google.com>2014-10-07 20:23:36 +0100
committerCalin Juravle <calin@google.com>2014-10-17 11:46:45 +0100
commit34bacdf7eb46c0ffbf24ba7aa14a904bc9176fb2 (patch)
treee8ed8e40c5f7896a9ac01bf7dcc2e56f40cfc804 /compiler/optimizing/code_generator_x86.h
parent7f758228f7904d2f65f06bfbd2b8ecbb8e8c6a9d (diff)
downloadart-34bacdf7eb46c0ffbf24ba7aa14a904bc9176fb2.tar.gz
art-34bacdf7eb46c0ffbf24ba7aa14a904bc9176fb2.tar.bz2
art-34bacdf7eb46c0ffbf24ba7aa14a904bc9176fb2.zip
Add multiplication for integral types
This also fixes an issue where we could allocate a pair register even if one of its parts was already blocked. Change-Id: I4869175933409add2a56f1ccfb369c3d3dd3cb01
Diffstat (limited to 'compiler/optimizing/code_generator_x86.h')
-rw-r--r--compiler/optimizing/code_generator_x86.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/compiler/optimizing/code_generator_x86.h b/compiler/optimizing/code_generator_x86.h
index aa5fee00e0..db8b9abd91 100644
--- a/compiler/optimizing/code_generator_x86.h
+++ b/compiler/optimizing/code_generator_x86.h
@@ -166,6 +166,7 @@ class CodeGeneratorX86 : public CodeGenerator {
}
virtual void SetupBlockedRegisters() const OVERRIDE;
+
virtual Location AllocateFreeRegister(Primitive::Type type) const OVERRIDE;
virtual Location GetStackLocation(HLoadLocal* load) const OVERRIDE;
@@ -173,6 +174,9 @@ class CodeGeneratorX86 : public CodeGenerator {
virtual void DumpCoreRegister(std::ostream& stream, int reg) const OVERRIDE;
virtual void DumpFloatingPointRegister(std::ostream& stream, int reg) const OVERRIDE;
+ // Blocks all register pairs made out of blocked core registers.
+ void UpdateBlockedPairRegisters() const;
+
ParallelMoveResolverX86* GetMoveResolver() {
return &move_resolver_;
}