From 2f10a5fb8c236a6786928f0323bd312c3ee9a4cc Mon Sep 17 00:00:00 2001 From: Mark P Mendell Date: Mon, 25 Jan 2016 14:47:50 +0000 Subject: Revert "Revert "X86: Use the constant area for more operations."" This reverts commit cf8d1bb97e193e02b430d707d3b669565fababb4. Handle the case of an intrinsic where CurrentMethod is still an input. This will be the case when there are unresolved classes in the hierarchy. Add a test case to confirm that we don't crash when handling Math.abs, which wants to add a pointer to the constant area for the bitmask to be used to remove the sign bit. Enhance 565-checker-condition-liveness to check for the case of deeply nested EmitAtUseSite chains. Change-Id: I022e8b96a32f5bf464331d0c318c56b9d0ac3c9a --- compiler/optimizing/nodes_x86.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'compiler/optimizing/nodes_x86.h') diff --git a/compiler/optimizing/nodes_x86.h b/compiler/optimizing/nodes_x86.h index b1bf939b36..0b3a84d3d3 100644 --- a/compiler/optimizing/nodes_x86.h +++ b/compiler/optimizing/nodes_x86.h @@ -56,6 +56,25 @@ class HX86LoadFromConstantTable : public HExpression<2> { DISALLOW_COPY_AND_ASSIGN(HX86LoadFromConstantTable); }; +// Version of HNeg with access to the constant table for FP types. +class HX86FPNeg : public HExpression<2> { + public: + HX86FPNeg(Primitive::Type result_type, + HInstruction* input, + HX86ComputeBaseMethodAddress* method_base, + uint32_t dex_pc) + : HExpression(result_type, SideEffects::None(), dex_pc) { + DCHECK(Primitive::IsFloatingPointType(result_type)); + SetRawInputAt(0, input); + SetRawInputAt(1, method_base); + } + + DECLARE_INSTRUCTION(X86FPNeg); + + private: + DISALLOW_COPY_AND_ASSIGN(HX86FPNeg); +}; + // X86 version of HPackedSwitch that holds a pointer to the base method address. class HX86PackedSwitch : public HTemplateInstruction<2> { public: -- cgit v1.2.3-59-g8ed1b