diff options
| author | 2015-05-31 14:29:23 -0700 | |
|---|---|---|
| committer | 2015-05-31 17:36:10 -0700 | |
| commit | e3b034a6f6f0d80d519ab08bdd18be4de2a4a2db (patch) | |
| tree | 660cc713e0ad2d71ccd1e0af1399c92665b626c7 /compiler/optimizing | |
| parent | 119a8025bbc1c6f4a2d537e9a6d22f33ef31e552 (diff) | |
Fix some ArtMethod related bugs
Added root visiting for runtime methods, not currently required
since the GcRoots in these methods are null.
Added missing GetInterfaceMethodIfProxy in GetMethodLine, fixes
--trace run-tests 005, 044.
Fixed optimizing compiler bug where we used a normal stack location
instead of double on ARM64, this fixes the debuggable tests.
TODO: Fix JDWP tests.
Bug: 19264997
Change-Id: I7c55f69c61d1b45351fd0dc7185ffe5efad82bd3
Diffstat (limited to 'compiler/optimizing')
| -rw-r--r-- | compiler/optimizing/code_generator.cc | 3 | ||||
| -rw-r--r-- | compiler/optimizing/code_generator_arm64.cc | 2 | ||||
| -rw-r--r-- | compiler/optimizing/code_generator_x86_64.cc | 2 |
3 files changed, 4 insertions, 3 deletions
diff --git a/compiler/optimizing/code_generator.cc b/compiler/optimizing/code_generator.cc index c106d3064c..0cd63a679c 100644 --- a/compiler/optimizing/code_generator.cc +++ b/compiler/optimizing/code_generator.cc @@ -124,13 +124,14 @@ void CodeGenerator::CompileBaseline(CodeAllocator* allocator, bool is_leaf) { if (!is_leaf) { MarkNotLeaf(); } + const bool is_64_bit = Is64BitInstructionSet(GetInstructionSet()); InitializeCodeGeneration(GetGraph()->GetNumberOfLocalVRegs() + GetGraph()->GetTemporariesVRegSlots() + 1 /* filler */, 0, /* the baseline compiler does not have live registers at slow path */ 0, /* the baseline compiler does not have live registers at slow path */ GetGraph()->GetMaximumNumberOfOutVRegs() - + 1 /* current method */, + + (is_64_bit ? 2 : 1) /* current method */, GetGraph()->GetBlocks()); CompileInternal(allocator, /* is_baseline */ true); } diff --git a/compiler/optimizing/code_generator_arm64.cc b/compiler/optimizing/code_generator_arm64.cc index fbe26b02ec..40432e43d3 100644 --- a/compiler/optimizing/code_generator_arm64.cc +++ b/compiler/optimizing/code_generator_arm64.cc @@ -637,7 +637,7 @@ void CodeGeneratorARM64::Move(HInstruction* instruction, DCHECK_NE(type, Primitive::kPrimVoid); if (instruction->IsCurrentMethod()) { - MoveLocation(location, Location::StackSlot(kCurrentMethodStackOffset)); + MoveLocation(location, Location::DoubleStackSlot(kCurrentMethodStackOffset)); } else if (locations != nullptr && locations->Out().Equals(location)) { return; } else if (instruction->IsIntConstant() diff --git a/compiler/optimizing/code_generator_x86_64.cc b/compiler/optimizing/code_generator_x86_64.cc index 59a956515c..78d585115a 100644 --- a/compiler/optimizing/code_generator_x86_64.cc +++ b/compiler/optimizing/code_generator_x86_64.cc @@ -692,7 +692,7 @@ void CodeGeneratorX86_64::Move(HInstruction* instruction, HInstruction* move_for) { LocationSummary* locations = instruction->GetLocations(); if (instruction->IsCurrentMethod()) { - Move(location, Location::StackSlot(kCurrentMethodStackOffset)); + Move(location, Location::DoubleStackSlot(kCurrentMethodStackOffset)); } else if (locations != nullptr && locations->Out().Equals(location)) { return; } else if (locations != nullptr && locations->Out().IsConstant()) { |