diff options
-rw-r--r-- | compiler/optimizing/critical_native_abi_fixup_arm.cc | 3 | ||||
-rw-r--r-- | compiler/optimizing/inliner.cc | 6 | ||||
-rw-r--r-- | compiler/optimizing/instruction_builder.cc | 35 | ||||
-rw-r--r-- | compiler/optimizing/instruction_simplifier.cc | 2 | ||||
-rw-r--r-- | compiler/optimizing/load_store_analysis_test.cc | 30 | ||||
-rw-r--r-- | compiler/optimizing/nodes.cc | 4 | ||||
-rw-r--r-- | compiler/optimizing/nodes.h | 40 | ||||
-rw-r--r-- | compiler/optimizing/optimizing_unit_test.h | 3 | ||||
-rw-r--r-- | test/988-method-trace/expected-stdout.txt | 297 | ||||
-rw-r--r-- | test/988-method-trace/src/Main.java | 8 | ||||
-rw-r--r-- | test/988-method-trace/src/art/Test988.java | 14 | ||||
-rw-r--r-- | test/988-method-trace/src/art/Test988Intrinsics.java | 218 |
12 files changed, 157 insertions, 503 deletions
diff --git a/compiler/optimizing/critical_native_abi_fixup_arm.cc b/compiler/optimizing/critical_native_abi_fixup_arm.cc index 77e156608b..03fb26bf1e 100644 --- a/compiler/optimizing/critical_native_abi_fixup_arm.cc +++ b/compiler/optimizing/critical_native_abi_fixup_arm.cc @@ -74,8 +74,7 @@ static void FixUpArguments(HInvokeStaticOrDirect* invoke) { dispatch_info, kStatic, target_method, - HInvokeStaticOrDirect::ClinitCheckRequirement::kNone, - !block->GetGraph()->IsDebuggable()); + HInvokeStaticOrDirect::ClinitCheckRequirement::kNone); // The intrinsic has no side effects and does not need environment or dex cache on ARM. new_input->SetSideEffects(SideEffects::None()); IntrinsicOptimizations opt(new_input); diff --git a/compiler/optimizing/inliner.cc b/compiler/optimizing/inliner.cc index 4bf62f3c26..da498d4277 100644 --- a/compiler/optimizing/inliner.cc +++ b/compiler/optimizing/inliner.cc @@ -1321,8 +1321,7 @@ bool HInliner::TryDevirtualize(HInvoke* invoke_instruction, dispatch_info, kDirect, MethodReference(method->GetDexFile(), method->GetDexMethodIndex()), - HInvokeStaticOrDirect::ClinitCheckRequirement::kNone, - !graph_->IsDebuggable()); + HInvokeStaticOrDirect::ClinitCheckRequirement::kNone); HInputsRef inputs = invoke_instruction->GetInputs(); DCHECK_EQ(inputs.size(), invoke_instruction->GetNumberOfArguments()); for (size_t index = 0; index != inputs.size(); ++index) { @@ -1528,8 +1527,7 @@ bool HInliner::TryBuildAndInline(HInvoke* invoke_instruction, invoke_instruction->GetMethodReference(), // Use existing invoke's method's reference. method, MethodReference(method->GetDexFile(), method->GetDexMethodIndex()), - method->GetMethodIndex(), - !graph_->IsDebuggable()); + method->GetMethodIndex()); DCHECK_NE(new_invoke->GetIntrinsic(), Intrinsics::kNone); HInputsRef inputs = invoke_instruction->GetInputs(); for (size_t index = 0; index != inputs.size(); ++index) { diff --git a/compiler/optimizing/instruction_builder.cc b/compiler/optimizing/instruction_builder.cc index fee9091145..f9a513804c 100644 --- a/compiler/optimizing/instruction_builder.cc +++ b/compiler/optimizing/instruction_builder.cc @@ -469,9 +469,6 @@ void HInstructionBuilder::BuildIntrinsic(ArtMethod* method) { current_block_ = graph_->GetEntryBlock(); InitializeBlockLocals(); InitializeParameters(); - if (graph_->IsDebuggable() && code_generator_->GetCompilerOptions().IsJitCompiler()) { - AppendInstruction(new (allocator_) HMethodEntryHook(0u)); - } AppendInstruction(new (allocator_) HGoto(0u)); // Fill the body. @@ -507,21 +504,14 @@ void HInstructionBuilder::BuildIntrinsic(ArtMethod* method) { dispatch_info, invoke_type, target_method, - HInvokeStaticOrDirect::ClinitCheckRequirement::kNone, - !graph_->IsDebuggable()); + HInvokeStaticOrDirect::ClinitCheckRequirement::kNone); HandleInvoke(invoke, operands, shorty, /* is_unresolved= */ false); } // Add the return instruction. if (return_type_ == DataType::Type::kVoid) { - if (graph_->IsDebuggable() && code_generator_->GetCompilerOptions().IsJitCompiler()) { - AppendInstruction(new (allocator_) HMethodExitHook(graph_->GetNullConstant(), kNoDexPc)); - } AppendInstruction(new (allocator_) HReturnVoid()); } else { - if (graph_->IsDebuggable() && code_generator_->GetCompilerOptions().IsJitCompiler()) { - AppendInstruction(new (allocator_) HMethodExitHook(latest_result_, kNoDexPc)); - } AppendInstruction(new (allocator_) HReturn(latest_result_)); } @@ -1060,8 +1050,7 @@ bool HInstructionBuilder::BuildInvoke(const Instruction& instruction, dispatch_info, invoke_type, resolved_method_reference, - HInvokeStaticOrDirect::ClinitCheckRequirement::kImplicit, - !graph_->IsDebuggable()); + HInvokeStaticOrDirect::ClinitCheckRequirement::kImplicit); return HandleStringInit(invoke, operands, shorty); } @@ -1074,7 +1063,7 @@ bool HInstructionBuilder::BuildInvoke(const Instruction& instruction, } // Try to build an HIR replacement for the intrinsic. - if (UNLIKELY(resolved_method->IsIntrinsic()) && !graph_->IsDebuggable()) { + if (UNLIKELY(resolved_method->IsIntrinsic())) { // All intrinsics are in the primary boot image, so their class can always be referenced // and we do not need to rely on the implicit class initialization check. The class should // be initialized but we do not require that here. @@ -1125,8 +1114,7 @@ bool HInstructionBuilder::BuildInvoke(const Instruction& instruction, dispatch_info, invoke_type, resolved_method_reference, - clinit_check_requirement, - !graph_->IsDebuggable()); + clinit_check_requirement); if (clinit_check != nullptr) { // Add the class initialization check as last input of `invoke`. DCHECK_EQ(clinit_check_requirement, HInvokeStaticOrDirect::ClinitCheckRequirement::kExplicit); @@ -1142,8 +1130,7 @@ bool HInstructionBuilder::BuildInvoke(const Instruction& instruction, method_reference, resolved_method, resolved_method_reference, - /*vtable_index=*/ imt_or_vtable_index, - !graph_->IsDebuggable()); + /*vtable_index=*/ imt_or_vtable_index); } else { DCHECK_EQ(invoke_type, kInterface); if (kIsDebugBuild) { @@ -1164,8 +1151,7 @@ bool HInstructionBuilder::BuildInvoke(const Instruction& instruction, resolved_method, resolved_method_reference, /*imt_index=*/ imt_or_vtable_index, - load_kind, - !graph_->IsDebuggable()); + load_kind); } return HandleInvoke(invoke, operands, shorty, /* is_unresolved= */ false); } @@ -1364,14 +1350,12 @@ bool HInstructionBuilder::BuildInvokePolymorphic(uint32_t dex_pc, method_reference, resolved_method, resolved_method_reference, - proto_idx, - !graph_->IsDebuggable()); + proto_idx); if (!HandleInvoke(invoke, operands, shorty, /* is_unresolved= */ false)) { return false; } - if (invoke->GetIntrinsic() != Intrinsics::kNone && - invoke->GetIntrinsic() != Intrinsics::kMethodHandleInvoke && + if (invoke->GetIntrinsic() != Intrinsics::kMethodHandleInvoke && invoke->GetIntrinsic() != Intrinsics::kMethodHandleInvokeExact && VarHandleAccessorNeedsReturnTypeCheck(invoke, return_type)) { // Type check is needed because VarHandle intrinsics do not type check the retrieved reference. @@ -1404,8 +1388,7 @@ bool HInstructionBuilder::BuildInvokeCustom(uint32_t dex_pc, call_site_idx, return_type, dex_pc, - method_reference, - !graph_->IsDebuggable()); + method_reference); return HandleInvoke(invoke, operands, shorty, /* is_unresolved= */ false); } diff --git a/compiler/optimizing/instruction_simplifier.cc b/compiler/optimizing/instruction_simplifier.cc index 0c2fd5de56..bf51b5dcf4 100644 --- a/compiler/optimizing/instruction_simplifier.cc +++ b/compiler/optimizing/instruction_simplifier.cc @@ -2465,7 +2465,7 @@ void InstructionSimplifierVisitor::SimplifySystemArrayCopy(HInvoke* instruction) DCHECK(method != nullptr); DCHECK(method->IsStatic()); DCHECK(method->GetDeclaringClass() == system); - invoke->SetResolvedMethod(method, !codegen_->GetGraph()->IsDebuggable()); + invoke->SetResolvedMethod(method); // Sharpen the new invoke. Note that we do not update the dex method index of // the invoke, as we would need to look it up in the current dex file, and it // is unlikely that it exists. The most usual situation for such typed diff --git a/compiler/optimizing/load_store_analysis_test.cc b/compiler/optimizing/load_store_analysis_test.cc index 865febbd31..17e7f1fb15 100644 --- a/compiler/optimizing/load_store_analysis_test.cc +++ b/compiler/optimizing/load_store_analysis_test.cc @@ -894,8 +894,7 @@ TEST_F(LoadStoreAnalysisTest, PartialEscape) { {}, InvokeType::kStatic, { nullptr, 0 }, - HInvokeStaticOrDirect::ClinitCheckRequirement::kNone, - !graph_->IsDebuggable()); + HInvokeStaticOrDirect::ClinitCheckRequirement::kNone); HInstruction* goto_left = new (GetAllocator()) HGoto(); call_left->AsInvoke()->SetRawInputAt(0, new_inst); left->AddInstruction(call_left); @@ -1004,8 +1003,7 @@ TEST_F(LoadStoreAnalysisTest, PartialEscape2) { {}, InvokeType::kStatic, { nullptr, 0 }, - HInvokeStaticOrDirect::ClinitCheckRequirement::kNone, - !graph_->IsDebuggable()); + HInvokeStaticOrDirect::ClinitCheckRequirement::kNone); HInstruction* goto_left = new (GetAllocator()) HGoto(); call_left->AsInvoke()->SetRawInputAt(0, new_inst); left->AddInstruction(call_left); @@ -1128,8 +1126,7 @@ TEST_F(LoadStoreAnalysisTest, PartialEscape3) { {}, InvokeType::kStatic, { nullptr, 0 }, - HInvokeStaticOrDirect::ClinitCheckRequirement::kNone, - !graph_->IsDebuggable()); + HInvokeStaticOrDirect::ClinitCheckRequirement::kNone); HInstruction* goto_left = new (GetAllocator()) HGoto(); call_left->AsInvoke()->SetRawInputAt(0, new_inst); left->AddInstruction(call_left); @@ -1409,8 +1406,7 @@ TEST_F(LoadStoreAnalysisTest, TotalEscapeAdjacentNoPredicated) { {}, InvokeType::kStatic, {nullptr, 0}, - HInvokeStaticOrDirect::ClinitCheckRequirement::kNone, - !graph_->IsDebuggable()); + HInvokeStaticOrDirect::ClinitCheckRequirement::kNone); HInstruction* goto_left = new (GetAllocator()) HGoto(); call_left->AsInvoke()->SetRawInputAt(0, new_inst); left->AddInstruction(call_left); @@ -1511,8 +1507,7 @@ TEST_F(LoadStoreAnalysisTest, TotalEscapeAdjacent) { {}, InvokeType::kStatic, { nullptr, 0 }, - HInvokeStaticOrDirect::ClinitCheckRequirement::kNone, - !graph_->IsDebuggable()); + HInvokeStaticOrDirect::ClinitCheckRequirement::kNone); HInstruction* goto_left = new (GetAllocator()) HGoto(); call_left->AsInvoke()->SetRawInputAt(0, new_inst); left->AddInstruction(call_left); @@ -1623,8 +1618,7 @@ TEST_F(LoadStoreAnalysisTest, TotalEscape) { {}, InvokeType::kStatic, { nullptr, 0 }, - HInvokeStaticOrDirect::ClinitCheckRequirement::kNone, - !graph_->IsDebuggable()); + HInvokeStaticOrDirect::ClinitCheckRequirement::kNone); HInstruction* goto_left = new (GetAllocator()) HGoto(); call_left->AsInvoke()->SetRawInputAt(0, new_inst); left->AddInstruction(call_left); @@ -1640,8 +1634,7 @@ TEST_F(LoadStoreAnalysisTest, TotalEscape) { {}, InvokeType::kStatic, { nullptr, 0 }, - HInvokeStaticOrDirect::ClinitCheckRequirement::kNone, - !graph_->IsDebuggable()); + HInvokeStaticOrDirect::ClinitCheckRequirement::kNone); HInstruction* write_right = new (GetAllocator()) HInstanceFieldSet(new_inst, c0, nullptr, @@ -1810,8 +1803,7 @@ TEST_F(LoadStoreAnalysisTest, DoubleDiamondEscape) { {}, InvokeType::kStatic, { nullptr, 0 }, - HInvokeStaticOrDirect::ClinitCheckRequirement::kNone, - !graph_->IsDebuggable()); + HInvokeStaticOrDirect::ClinitCheckRequirement::kNone); HInstruction* goto_left = new (GetAllocator()) HGoto(); call_left->AsInvoke()->SetRawInputAt(0, new_inst); high_left->AddInstruction(call_left); @@ -1867,8 +1859,7 @@ TEST_F(LoadStoreAnalysisTest, DoubleDiamondEscape) { {}, InvokeType::kStatic, { nullptr, 0 }, - HInvokeStaticOrDirect::ClinitCheckRequirement::kNone, - !graph_->IsDebuggable()); + HInvokeStaticOrDirect::ClinitCheckRequirement::kNone); HInstruction* goto_low_left = new (GetAllocator()) HGoto(); call_low_left->AsInvoke()->SetRawInputAt(0, new_inst); low_left->AddInstruction(call_low_left); @@ -2025,8 +2016,7 @@ TEST_F(LoadStoreAnalysisTest, PartialPhiPropagation1) { {}, InvokeType::kStatic, {nullptr, 0}, - HInvokeStaticOrDirect::ClinitCheckRequirement::kNone, - !graph_->IsDebuggable()); + HInvokeStaticOrDirect::ClinitCheckRequirement::kNone); HInstruction* goto_left_merge = new (GetAllocator()) HGoto(); left_phi->SetRawInputAt(0, obj_param); left_phi->SetRawInputAt(1, new_inst); diff --git a/compiler/optimizing/nodes.cc b/compiler/optimizing/nodes.cc index 3790058879..c99cfab05f 100644 --- a/compiler/optimizing/nodes.cc +++ b/compiler/optimizing/nodes.cc @@ -3571,8 +3571,8 @@ static inline IntrinsicExceptions GetExceptionsIntrinsic(Intrinsics i) { return kCanThrow; } -void HInvoke::SetResolvedMethod(ArtMethod* method, bool enable_intrinsic_opt) { - if (method != nullptr && method->IsIntrinsic() && enable_intrinsic_opt) { +void HInvoke::SetResolvedMethod(ArtMethod* method) { + if (method != nullptr && method->IsIntrinsic()) { Intrinsics intrinsic = static_cast<Intrinsics>(method->GetIntrinsic()); SetIntrinsic(intrinsic, NeedsEnvironmentIntrinsic(intrinsic), diff --git a/compiler/optimizing/nodes.h b/compiler/optimizing/nodes.h index 28112d176a..fc5d2196da 100644 --- a/compiler/optimizing/nodes.h +++ b/compiler/optimizing/nodes.h @@ -4756,7 +4756,7 @@ class HInvoke : public HVariableInputSizeInstruction { bool IsIntrinsic() const { return intrinsic_ != Intrinsics::kNone; } ArtMethod* GetResolvedMethod() const { return resolved_method_; } - void SetResolvedMethod(ArtMethod* method, bool enable_intrinsic_opt); + void SetResolvedMethod(ArtMethod* method); MethodReference GetMethodReference() const { return method_reference_; } @@ -4785,8 +4785,7 @@ class HInvoke : public HVariableInputSizeInstruction { MethodReference method_reference, ArtMethod* resolved_method, MethodReference resolved_method_reference, - InvokeType invoke_type, - bool enable_intrinsic_opt) + InvokeType invoke_type) : HVariableInputSizeInstruction( kind, return_type, @@ -4802,7 +4801,7 @@ class HInvoke : public HVariableInputSizeInstruction { intrinsic_optimizations_(0) { SetPackedField<InvokeTypeField>(invoke_type); SetPackedFlag<kFlagCanThrow>(true); - SetResolvedMethod(resolved_method, enable_intrinsic_opt); + SetResolvedMethod(resolved_method); } DEFAULT_COPY_CONSTRUCTOR(Invoke); @@ -4835,8 +4834,7 @@ class HInvokeUnresolved final : public HInvoke { method_reference, nullptr, MethodReference(nullptr, 0u), - invoke_type, - /* enable_intrinsic_opt= */ false) { + invoke_type) { } bool IsClonable() const override { return true; } @@ -4859,8 +4857,7 @@ class HInvokePolymorphic final : public HInvoke { // to pass intrinsic information to the HInvokePolymorphic node. ArtMethod* resolved_method, MethodReference resolved_method_reference, - dex::ProtoIndex proto_idx, - bool enable_intrinsic_opt) + dex::ProtoIndex proto_idx) : HInvoke(kInvokePolymorphic, allocator, number_of_arguments, @@ -4870,8 +4867,7 @@ class HInvokePolymorphic final : public HInvoke { method_reference, resolved_method, resolved_method_reference, - kPolymorphic, - enable_intrinsic_opt), + kPolymorphic), proto_idx_(proto_idx) { } @@ -4893,8 +4889,7 @@ class HInvokeCustom final : public HInvoke { uint32_t call_site_index, DataType::Type return_type, uint32_t dex_pc, - MethodReference method_reference, - bool enable_intrinsic_opt) + MethodReference method_reference) : HInvoke(kInvokeCustom, allocator, number_of_arguments, @@ -4904,8 +4899,7 @@ class HInvokeCustom final : public HInvoke { method_reference, /* resolved_method= */ nullptr, MethodReference(nullptr, 0u), - kStatic, - enable_intrinsic_opt), + kStatic), call_site_index_(call_site_index) { } @@ -4952,8 +4946,7 @@ class HInvokeStaticOrDirect final : public HInvoke { DispatchInfo dispatch_info, InvokeType invoke_type, MethodReference resolved_method_reference, - ClinitCheckRequirement clinit_check_requirement, - bool enable_intrinsic_opt) + ClinitCheckRequirement clinit_check_requirement) : HInvoke(kInvokeStaticOrDirect, allocator, number_of_arguments, @@ -4966,8 +4959,7 @@ class HInvokeStaticOrDirect final : public HInvoke { method_reference, resolved_method, resolved_method_reference, - invoke_type, - enable_intrinsic_opt), + invoke_type), dispatch_info_(dispatch_info) { SetPackedField<ClinitCheckRequirementField>(clinit_check_requirement); } @@ -5179,8 +5171,7 @@ class HInvokeVirtual final : public HInvoke { MethodReference method_reference, ArtMethod* resolved_method, MethodReference resolved_method_reference, - uint32_t vtable_index, - bool enable_intrinsic_opt) + uint32_t vtable_index) : HInvoke(kInvokeVirtual, allocator, number_of_arguments, @@ -5190,8 +5181,7 @@ class HInvokeVirtual final : public HInvoke { method_reference, resolved_method, resolved_method_reference, - kVirtual, - enable_intrinsic_opt), + kVirtual), vtable_index_(vtable_index) { } @@ -5243,8 +5233,7 @@ class HInvokeInterface final : public HInvoke { ArtMethod* resolved_method, MethodReference resolved_method_reference, uint32_t imt_index, - MethodLoadKind load_kind, - bool enable_intrinsic_opt) + MethodLoadKind load_kind) : HInvoke(kInvokeInterface, allocator, number_of_arguments + (NeedsCurrentMethod(load_kind) ? 1 : 0), @@ -5254,8 +5243,7 @@ class HInvokeInterface final : public HInvoke { method_reference, resolved_method, resolved_method_reference, - kInterface, - enable_intrinsic_opt), + kInterface), imt_index_(imt_index), hidden_argument_load_kind_(load_kind) { } diff --git a/compiler/optimizing/optimizing_unit_test.h b/compiler/optimizing/optimizing_unit_test.h index 2e05c41f01..f18ffc7f83 100644 --- a/compiler/optimizing/optimizing_unit_test.h +++ b/compiler/optimizing/optimizing_unit_test.h @@ -461,8 +461,7 @@ class OptimizingUnitTestHelper { HInvokeStaticOrDirect::DispatchInfo{}, InvokeType::kStatic, /* resolved_method_reference= */ method_reference, - HInvokeStaticOrDirect::ClinitCheckRequirement::kNone, - !graph_->IsDebuggable()); + HInvokeStaticOrDirect::ClinitCheckRequirement::kNone); for (auto [ins, idx] : ZipCount(MakeIterationRange(args))) { res->SetRawInputAt(idx, ins); } diff --git a/test/988-method-trace/expected-stdout.txt b/test/988-method-trace/expected-stdout.txt index 7ab727bf8a..9460503286 100644 --- a/test/988-method-trace/expected-stdout.txt +++ b/test/988-method-trace/expected-stdout.txt @@ -195,7 +195,7 @@ fibonacci(5)=5 .....<= public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace() -> <class java.lang.Error: java.lang.Error: Bad argument: -19 < 0 art.Test988.iter_fibonacci(Test988.java:280) art.Test988$IterOp.applyAsInt(Test988.java:275) - art.Test988.doFibTest(Test988.java:425) + art.Test988.doFibTest(Test988.java:413) art.Test988.run(Test988.java:369) <additional hidden frames> > @@ -214,7 +214,7 @@ fibonacci(5)=5 fibonacci(-19) -> java.lang.Error: Bad argument: -19 < 0 art.Test988.iter_fibonacci(Test988.java:280) art.Test988$IterOp.applyAsInt(Test988.java:275) - art.Test988.doFibTest(Test988.java:425) + art.Test988.doFibTest(Test988.java:413) art.Test988.run(Test988.java:369) <additional hidden frames> @@ -323,7 +323,7 @@ fibonacci(-19) -> java.lang.Error: Bad argument: -19 < 0 .....<= public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace() -> <class java.lang.Error: java.lang.Error: Bad argument: -19 < 0 art.Test988.fibonacci(Test988.java:302) art.Test988$RecurOp.applyAsInt(Test988.java:297) - art.Test988.doFibTest(Test988.java:425) + art.Test988.doFibTest(Test988.java:413) art.Test988.run(Test988.java:370) <additional hidden frames> > @@ -342,7 +342,7 @@ fibonacci(-19) -> java.lang.Error: Bad argument: -19 < 0 fibonacci(-19) -> java.lang.Error: Bad argument: -19 < 0 art.Test988.fibonacci(Test988.java:302) art.Test988$RecurOp.applyAsInt(Test988.java:297) - art.Test988.doFibTest(Test988.java:425) + art.Test988.doFibTest(Test988.java:413) art.Test988.run(Test988.java:370) <additional hidden frames> @@ -369,7 +369,7 @@ fibonacci(-19) -> java.lang.Error: Bad argument: -19 < 0 .....<= public synchronized java.lang.Throwable java.lang.Throwable.fillInStackTrace() -> <class java.lang.Error: java.lang.Error: bad argument art.Test988.nativeFibonacci(Native Method) art.Test988$NativeOp.applyAsInt(Test988.java:312) - art.Test988.doFibTest(Test988.java:425) + art.Test988.doFibTest(Test988.java:413) art.Test988.run(Test988.java:371) <additional hidden frames> > @@ -388,7 +388,7 @@ fibonacci(-19) -> java.lang.Error: Bad argument: -19 < 0 fibonacci(-19) -> java.lang.Error: bad argument art.Test988.nativeFibonacci(Native Method) art.Test988$NativeOp.applyAsInt(Test988.java:312) - art.Test988.doFibTest(Test988.java:425) + art.Test988.doFibTest(Test988.java:413) art.Test988.run(Test988.java:371) <additional hidden frames> @@ -561,13 +561,13 @@ fibonacci(-19) -> java.lang.Error: bad argument ..=> public int java.lang.String.length() ..<= public int java.lang.String.length() -> <class java.lang.Integer: 17> ..=> public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(java.lang.String) -..<= public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(java.lang.String) -> <class java.lang.StringBuffer: some large string bufferhellohello> +..<= public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(java.lang.String) -> <class java.lang.StringBuffer: some large string bufferhello> ..=> public synchronized int java.lang.StringBuffer.length() ..<= public synchronized int java.lang.StringBuffer.length() -> <class java.lang.Integer: 29> ..=> public synchronized java.lang.String java.lang.StringBuffer.toString() ..<= public synchronized java.lang.String java.lang.StringBuffer.toString() -> <class java.lang.String: some large string bufferhello> ..=> public java.lang.StringBuilder java.lang.StringBuilder.append(java.lang.String) -..<= public java.lang.StringBuilder java.lang.StringBuilder.append(java.lang.String) -> <class java.lang.StringBuilder: some large string builderhellohello> +..<= public java.lang.StringBuilder java.lang.StringBuilder.append(java.lang.String) -> <class java.lang.StringBuilder: some large string builderhello> ..=> public int java.lang.StringBuilder.length() ..<= public int java.lang.StringBuilder.length() -> <class java.lang.Integer: 30> ..=> public java.lang.String java.lang.StringBuilder.toString() @@ -585,284 +585,3 @@ fibonacci(-19) -> java.lang.Error: bad argument => public static java.lang.Thread java.lang.Thread.currentThread() <= public static java.lang.Thread java.lang.Thread.currentThread() -> <<non-deterministic>: <non-deterministic>> => public static void art.Trace.disableTracing(java.lang.Thread) -<= public static void art.Trace.enableTracing(java.lang.Class,java.lang.reflect.Method,java.lang.reflect.Method,java.lang.reflect.Method,java.lang.reflect.Method,java.lang.reflect.Method,java.lang.Thread) -> <null: null> -<= public static void art.Trace.enableMethodTracing(java.lang.Class,java.lang.reflect.Method,java.lang.reflect.Method,java.lang.Thread) -> <null: null> -=> static void art.Test988$IntrinsicsTest.doTest() -=> static void art.Test988Intrinsics.test() -.=> public static long java.lang.Double.doubleToRawLongBits(double) -.<= public static long java.lang.Double.doubleToRawLongBits(double) -> <class java.lang.Long: 0> -.=> public static long java.lang.Double.doubleToLongBits(double) -..=> public static boolean java.lang.Double.isNaN(double) -..<= public static boolean java.lang.Double.isNaN(double) -> <class java.lang.Boolean: false> -..=> public static long java.lang.Double.doubleToRawLongBits(double) -..<= public static long java.lang.Double.doubleToRawLongBits(double) -> <class java.lang.Long: 0> -.<= public static long java.lang.Double.doubleToLongBits(double) -> <class java.lang.Long: 0> -.=> public static boolean java.lang.Double.isInfinite(double) -.<= public static boolean java.lang.Double.isInfinite(double) -> <class java.lang.Boolean: false> -.=> public static boolean java.lang.Double.isNaN(double) -.<= public static boolean java.lang.Double.isNaN(double) -> <class java.lang.Boolean: false> -.=> public static double java.lang.Double.longBitsToDouble(long) -.<= public static double java.lang.Double.longBitsToDouble(long) -> <class java.lang.Double: 0.0> -.=> public static int java.lang.Float.floatToRawIntBits(float) -.<= public static int java.lang.Float.floatToRawIntBits(float) -> <class java.lang.Integer: 0> -.=> public static int java.lang.Float.floatToIntBits(float) -..=> public static boolean java.lang.Float.isNaN(float) -..<= public static boolean java.lang.Float.isNaN(float) -> <class java.lang.Boolean: false> -..=> public static int java.lang.Float.floatToRawIntBits(float) -..<= public static int java.lang.Float.floatToRawIntBits(float) -> <class java.lang.Integer: 0> -.<= public static int java.lang.Float.floatToIntBits(float) -> <class java.lang.Integer: 0> -.=> public static boolean java.lang.Float.isInfinite(float) -.<= public static boolean java.lang.Float.isInfinite(float) -> <class java.lang.Boolean: false> -.=> public static boolean java.lang.Float.isNaN(float) -.<= public static boolean java.lang.Float.isNaN(float) -> <class java.lang.Boolean: false> -.=> public static float java.lang.Float.intBitsToFloat(int) -.<= public static float java.lang.Float.intBitsToFloat(int) -> <class java.lang.Float: 0.0> -.=> public static int java.lang.Integer.reverse(int) -..=> public static int java.lang.Integer.reverseBytes(int) -..<= public static int java.lang.Integer.reverseBytes(int) -> <class java.lang.Integer: 0> -.<= public static int java.lang.Integer.reverse(int) -> <class java.lang.Integer: 0> -.=> public static int java.lang.Integer.reverseBytes(int) -.<= public static int java.lang.Integer.reverseBytes(int) -> <class java.lang.Integer: 0> -.=> public static int java.lang.Integer.bitCount(int) -.<= public static int java.lang.Integer.bitCount(int) -> <class java.lang.Integer: 0> -.=> public static int java.lang.Integer.compare(int,int) -.<= public static int java.lang.Integer.compare(int,int) -> <class java.lang.Integer: 0> -.=> public static int java.lang.Integer.highestOneBit(int) -..=> public static int java.lang.Integer.numberOfLeadingZeros(int) -..<= public static int java.lang.Integer.numberOfLeadingZeros(int) -> <class java.lang.Integer: 32> -.<= public static int java.lang.Integer.highestOneBit(int) -> <class java.lang.Integer: 0> -.=> public static int java.lang.Integer.lowestOneBit(int) -.<= public static int java.lang.Integer.lowestOneBit(int) -> <class java.lang.Integer: 0> -.=> public static int java.lang.Integer.numberOfLeadingZeros(int) -.<= public static int java.lang.Integer.numberOfLeadingZeros(int) -> <class java.lang.Integer: 32> -.=> public static int java.lang.Integer.numberOfTrailingZeros(int) -.<= public static int java.lang.Integer.numberOfTrailingZeros(int) -> <class java.lang.Integer: 32> -.=> public static int java.lang.Integer.rotateRight(int,int) -.<= public static int java.lang.Integer.rotateRight(int,int) -> <class java.lang.Integer: 0> -.=> public static int java.lang.Integer.rotateLeft(int,int) -.<= public static int java.lang.Integer.rotateLeft(int,int) -> <class java.lang.Integer: 0> -.=> public static int java.lang.Integer.signum(int) -.<= public static int java.lang.Integer.signum(int) -> <class java.lang.Integer: 0> -.=> public static long java.lang.Long.reverse(long) -..=> public static long java.lang.Long.reverseBytes(long) -..<= public static long java.lang.Long.reverseBytes(long) -> <class java.lang.Long: 0> -.<= public static long java.lang.Long.reverse(long) -> <class java.lang.Long: 0> -.=> public static long java.lang.Long.reverseBytes(long) -.<= public static long java.lang.Long.reverseBytes(long) -> <class java.lang.Long: 0> -.=> public static int java.lang.Long.bitCount(long) -.<= public static int java.lang.Long.bitCount(long) -> <class java.lang.Integer: 0> -.=> public static int java.lang.Long.compare(long,long) -.<= public static int java.lang.Long.compare(long,long) -> <class java.lang.Integer: 0> -.=> public static long java.lang.Long.highestOneBit(long) -..=> public static int java.lang.Long.numberOfLeadingZeros(long) -..<= public static int java.lang.Long.numberOfLeadingZeros(long) -> <class java.lang.Integer: 64> -.<= public static long java.lang.Long.highestOneBit(long) -> <class java.lang.Long: 0> -.=> public static long java.lang.Long.lowestOneBit(long) -.<= public static long java.lang.Long.lowestOneBit(long) -> <class java.lang.Long: 0> -.=> public static int java.lang.Long.numberOfLeadingZeros(long) -..=> public static int java.lang.Integer.numberOfLeadingZeros(int) -..<= public static int java.lang.Integer.numberOfLeadingZeros(int) -> <class java.lang.Integer: 32> -.<= public static int java.lang.Long.numberOfLeadingZeros(long) -> <class java.lang.Integer: 64> -.=> public static int java.lang.Long.numberOfTrailingZeros(long) -..=> public static int java.lang.Integer.numberOfTrailingZeros(int) -..<= public static int java.lang.Integer.numberOfTrailingZeros(int) -> <class java.lang.Integer: 32> -.<= public static int java.lang.Long.numberOfTrailingZeros(long) -> <class java.lang.Integer: 64> -.=> public static long java.lang.Long.rotateRight(long,int) -.<= public static long java.lang.Long.rotateRight(long,int) -> <class java.lang.Long: 0> -.=> public static long java.lang.Long.rotateLeft(long,int) -.<= public static long java.lang.Long.rotateLeft(long,int) -> <class java.lang.Long: 0> -.=> public static int java.lang.Long.signum(long) -.<= public static int java.lang.Long.signum(long) -> <class java.lang.Integer: 0> -.=> public static short java.lang.Short.reverseBytes(short) -.<= public static short java.lang.Short.reverseBytes(short) -> <class java.lang.Short: 0> -.=> public static double java.lang.Math.abs(double) -..=> public static long java.lang.Double.doubleToRawLongBits(double) -..<= public static long java.lang.Double.doubleToRawLongBits(double) -> <class java.lang.Long: 0> -..=> public static double java.lang.Double.longBitsToDouble(long) -..<= public static double java.lang.Double.longBitsToDouble(long) -> <class java.lang.Double: 0.0> -.<= public static double java.lang.Math.abs(double) -> <class java.lang.Double: 0.0> -.=> public static float java.lang.Math.abs(float) -..=> public static int java.lang.Float.floatToRawIntBits(float) -..<= public static int java.lang.Float.floatToRawIntBits(float) -> <class java.lang.Integer: 0> -..=> public static float java.lang.Float.intBitsToFloat(int) -..<= public static float java.lang.Float.intBitsToFloat(int) -> <class java.lang.Float: 0.0> -.<= public static float java.lang.Math.abs(float) -> <class java.lang.Float: 0.0> -.=> public static long java.lang.Math.abs(long) -.<= public static long java.lang.Math.abs(long) -> <class java.lang.Long: 0> -.=> public static int java.lang.Math.abs(int) -.<= public static int java.lang.Math.abs(int) -> <class java.lang.Integer: 0> -.=> public static double java.lang.Math.min(double,double) -..=> public static long java.lang.Double.doubleToRawLongBits(double) -..<= public static long java.lang.Double.doubleToRawLongBits(double) -> <class java.lang.Long: 0> -.<= public static double java.lang.Math.min(double,double) -> <class java.lang.Double: 0.0> -.=> public static float java.lang.Math.min(float,float) -..=> public static int java.lang.Float.floatToRawIntBits(float) -..<= public static int java.lang.Float.floatToRawIntBits(float) -> <class java.lang.Integer: 0> -.<= public static float java.lang.Math.min(float,float) -> <class java.lang.Float: 0.0> -.=> public static long java.lang.Math.min(long,long) -.<= public static long java.lang.Math.min(long,long) -> <class java.lang.Long: 0> -.=> public static int java.lang.Math.min(int,int) -.<= public static int java.lang.Math.min(int,int) -> <class java.lang.Integer: 0> -.=> public static double java.lang.Math.max(double,double) -..=> public static long java.lang.Double.doubleToRawLongBits(double) -..<= public static long java.lang.Double.doubleToRawLongBits(double) -> <class java.lang.Long: 0> -.<= public static double java.lang.Math.max(double,double) -> <class java.lang.Double: 0.0> -.=> public static float java.lang.Math.max(float,float) -..=> public static int java.lang.Float.floatToRawIntBits(float) -..<= public static int java.lang.Float.floatToRawIntBits(float) -> <class java.lang.Integer: 0> -.<= public static float java.lang.Math.max(float,float) -> <class java.lang.Float: 0.0> -.=> public static long java.lang.Math.max(long,long) -.<= public static long java.lang.Math.max(long,long) -> <class java.lang.Long: 0> -.=> public static int java.lang.Math.max(int,int) -.<= public static int java.lang.Math.max(int,int) -> <class java.lang.Integer: 0> -.=> public static double java.lang.Math.cos(double) -.<= public static double java.lang.Math.cos(double) -> <class java.lang.Double: 1.0> -.=> public static double java.lang.Math.sin(double) -.<= public static double java.lang.Math.sin(double) -> <class java.lang.Double: 0.0> -.=> public static double java.lang.Math.acos(double) -.<= public static double java.lang.Math.acos(double) -> <class java.lang.Double: 1.5707963267948966> -.=> public static double java.lang.Math.asin(double) -.<= public static double java.lang.Math.asin(double) -> <class java.lang.Double: 0.0> -.=> public static double java.lang.Math.atan(double) -.<= public static double java.lang.Math.atan(double) -> <class java.lang.Double: 0.0> -.=> public static double java.lang.Math.atan2(double,double) -.<= public static double java.lang.Math.atan2(double,double) -> <class java.lang.Double: 0.0> -.=> public static double java.lang.Math.cbrt(double) -.<= public static double java.lang.Math.cbrt(double) -> <class java.lang.Double: 0.0> -.=> public static double java.lang.Math.cosh(double) -.<= public static double java.lang.Math.cosh(double) -> <class java.lang.Double: 1.0> -.=> public static double java.lang.Math.exp(double) -.<= public static double java.lang.Math.exp(double) -> <class java.lang.Double: 1.0> -.=> public static double java.lang.Math.expm1(double) -.<= public static double java.lang.Math.expm1(double) -> <class java.lang.Double: 0.0> -.=> public static double java.lang.Math.hypot(double,double) -.<= public static double java.lang.Math.hypot(double,double) -> <class java.lang.Double: 0.0> -.=> public static double java.lang.Math.log(double) -.<= public static double java.lang.Math.log(double) -> <class java.lang.Double: -Infinity> -.=> public static double java.lang.Math.log10(double) -.<= public static double java.lang.Math.log10(double) -> <class java.lang.Double: -Infinity> -.=> public static double java.lang.Math.nextAfter(double,double) -.<= public static double java.lang.Math.nextAfter(double,double) -> <class java.lang.Double: 0.0> -.=> public static double java.lang.Math.sinh(double) -.<= public static double java.lang.Math.sinh(double) -> <class java.lang.Double: 0.0> -.=> public static double java.lang.Math.tan(double) -.<= public static double java.lang.Math.tan(double) -> <class java.lang.Double: 0.0> -.=> public static double java.lang.Math.tanh(double) -.<= public static double java.lang.Math.tanh(double) -> <class java.lang.Double: 0.0> -.=> public static double java.lang.Math.sqrt(double) -.<= public static double java.lang.Math.sqrt(double) -> <class java.lang.Double: 0.0> -.=> public static double java.lang.Math.ceil(double) -.<= public static double java.lang.Math.ceil(double) -> <class java.lang.Double: 0.0> -.=> public static double java.lang.Math.floor(double) -.<= public static double java.lang.Math.floor(double) -> <class java.lang.Double: 0.0> -.=> public static double java.lang.Math.rint(double) -.<= public static double java.lang.Math.rint(double) -> <class java.lang.Double: 0.0> -.=> public static long java.lang.Math.round(double) -..=> public static long java.lang.Double.doubleToRawLongBits(double) -..<= public static long java.lang.Double.doubleToRawLongBits(double) -> <class java.lang.Long: 0> -.<= public static long java.lang.Math.round(double) -> <class java.lang.Long: 0> -.=> public static int java.lang.Math.round(float) -..=> public static int java.lang.Float.floatToRawIntBits(float) -..<= public static int java.lang.Float.floatToRawIntBits(float) -> <class java.lang.Integer: 0> -.<= public static int java.lang.Math.round(float) -> <class java.lang.Integer: 0> -.=> public static java.lang.Thread java.lang.Thread.currentThread() -.<= public static java.lang.Thread java.lang.Thread.currentThread() -> <<non-deterministic>: <non-deterministic>> -.=> public char java.lang.String.charAt(int) -.<= public char java.lang.String.charAt(int) -> <class java.lang.Character: s> -.=> public int java.lang.String.compareTo(java.lang.String) -.<= public int java.lang.String.compareTo(java.lang.String) -> <class java.lang.Integer: 11> -.=> public boolean java.lang.String.equals(java.lang.Object) -.<= public boolean java.lang.String.equals(java.lang.Object) -> <class java.lang.Boolean: false> -.=> public int java.lang.String.indexOf(int) -..=> public int java.lang.String.indexOf(int,int) -..<= public int java.lang.String.indexOf(int,int) -> <class java.lang.Integer: -1> -.<= public int java.lang.String.indexOf(int) -> <class java.lang.Integer: -1> -.=> public int java.lang.String.indexOf(int,int) -..=> public int java.lang.String.length() -..<= public int java.lang.String.length() -> <class java.lang.Integer: 17> -..=> public char java.lang.String.charAt(int) -..<= public char java.lang.String.charAt(int) -> <class java.lang.Character: s> -..=> public char java.lang.String.charAt(int) -..<= public char java.lang.String.charAt(int) -> <class java.lang.Character: o> -..=> public char java.lang.String.charAt(int) -..<= public char java.lang.String.charAt(int) -> <class java.lang.Character: m> -..=> public char java.lang.String.charAt(int) -..<= public char java.lang.String.charAt(int) -> <class java.lang.Character: e> -..=> public char java.lang.String.charAt(int) -..<= public char java.lang.String.charAt(int) -> <class java.lang.Character: > -..=> public char java.lang.String.charAt(int) -..<= public char java.lang.String.charAt(int) -> <class java.lang.Character: l> -..=> public char java.lang.String.charAt(int) -..<= public char java.lang.String.charAt(int) -> <class java.lang.Character: a> -..=> public char java.lang.String.charAt(int) -..<= public char java.lang.String.charAt(int) -> <class java.lang.Character: r> -..=> public char java.lang.String.charAt(int) -..<= public char java.lang.String.charAt(int) -> <class java.lang.Character: g> -..=> public char java.lang.String.charAt(int) -..<= public char java.lang.String.charAt(int) -> <class java.lang.Character: e> -..=> public char java.lang.String.charAt(int) -..<= public char java.lang.String.charAt(int) -> <class java.lang.Character: > -..=> public char java.lang.String.charAt(int) -..<= public char java.lang.String.charAt(int) -> <class java.lang.Character: s> -..=> public char java.lang.String.charAt(int) -..<= public char java.lang.String.charAt(int) -> <class java.lang.Character: t> -..=> public char java.lang.String.charAt(int) -..<= public char java.lang.String.charAt(int) -> <class java.lang.Character: r> -..=> public char java.lang.String.charAt(int) -..<= public char java.lang.String.charAt(int) -> <class java.lang.Character: i> -..=> public char java.lang.String.charAt(int) -..<= public char java.lang.String.charAt(int) -> <class java.lang.Character: n> -..=> public char java.lang.String.charAt(int) -..<= public char java.lang.String.charAt(int) -> <class java.lang.Character: g> -.<= public int java.lang.String.indexOf(int,int) -> <class java.lang.Integer: -1> -.=> public int java.lang.String.indexOf(java.lang.String) -..=> public int java.lang.String.indexOf(java.lang.String,int) -..<= public int java.lang.String.indexOf(java.lang.String,int) -> <class java.lang.Integer: -1> -.<= public int java.lang.String.indexOf(java.lang.String) -> <class java.lang.Integer: -1> -.=> public int java.lang.String.indexOf(java.lang.String,int) -..=> private static int java.lang.String.indexOf(java.lang.String,java.lang.String,int) -..<= private static int java.lang.String.indexOf(java.lang.String,java.lang.String,int) -> <class java.lang.Integer: -1> -.<= public int java.lang.String.indexOf(java.lang.String,int) -> <class java.lang.Integer: -1> -.=> public boolean java.lang.String.isEmpty() -.<= public boolean java.lang.String.isEmpty() -> <class java.lang.Boolean: false> -.=> public int java.lang.String.length() -.<= public int java.lang.String.length() -> <class java.lang.Integer: 17> -.=> public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(java.lang.String) -..=> public java.lang.AbstractStringBuilder java.lang.AbstractStringBuilder.append(java.lang.String) -..<= public java.lang.AbstractStringBuilder java.lang.AbstractStringBuilder.append(java.lang.String) -> <class java.lang.StringBuffer: some large string bufferhellohello> -.<= public synchronized java.lang.StringBuffer java.lang.StringBuffer.append(java.lang.String) -> <class java.lang.StringBuffer: some large string bufferhellohello> -.=> public synchronized int java.lang.StringBuffer.length() -.<= public synchronized int java.lang.StringBuffer.length() -> <class java.lang.Integer: 34> -.=> public synchronized java.lang.String java.lang.StringBuffer.toString() -..=> final boolean java.lang.AbstractStringBuilder.isLatin1() -..<= final boolean java.lang.AbstractStringBuilder.isLatin1() -> <class java.lang.Boolean: true> -..=> public static java.lang.String java.lang.StringLatin1.newString(byte[],int,int) -..<= public static java.lang.String java.lang.StringLatin1.newString(byte[],int,int) -> <class java.lang.String: some large string bufferhellohello> -.<= public synchronized java.lang.String java.lang.StringBuffer.toString() -> <class java.lang.String: some large string bufferhellohello> -.=> public java.lang.StringBuilder java.lang.StringBuilder.append(java.lang.String) -..=> public java.lang.AbstractStringBuilder java.lang.AbstractStringBuilder.append(java.lang.String) -..<= public java.lang.AbstractStringBuilder java.lang.AbstractStringBuilder.append(java.lang.String) -> <class java.lang.StringBuilder: some large string builderhellohello> -.<= public java.lang.StringBuilder java.lang.StringBuilder.append(java.lang.String) -> <class java.lang.StringBuilder: some large string builderhellohello> -.=> public int java.lang.StringBuilder.length() -..=> public int java.lang.AbstractStringBuilder.length() -..<= public int java.lang.AbstractStringBuilder.length() -> <class java.lang.Integer: 35> -.<= public int java.lang.StringBuilder.length() -> <class java.lang.Integer: 35> -.=> public java.lang.String java.lang.StringBuilder.toString() -..=> final boolean java.lang.AbstractStringBuilder.isLatin1() -..<= final boolean java.lang.AbstractStringBuilder.isLatin1() -> <class java.lang.Boolean: true> -..=> public static java.lang.String java.lang.StringLatin1.newString(byte[],int,int) -..<= public static java.lang.String java.lang.StringLatin1.newString(byte[],int,int) -> <class java.lang.String: some large string builderhellohello> -.<= public java.lang.String java.lang.StringBuilder.toString() -> <class java.lang.String: some large string builderhellohello> -.=> public static java.lang.Integer java.lang.Integer.valueOf(int) -.<= public static java.lang.Integer java.lang.Integer.valueOf(int) -> <class java.lang.Integer: 0> -.=> public static boolean java.lang.Thread.interrupted() -.<= public static boolean java.lang.Thread.interrupted() -> <class java.lang.Boolean: false> -<= static void art.Test988Intrinsics.test() -> <null: null> -=> public static void java.lang.System.arraycopy(java.lang.Object,int,java.lang.Object,int,int) -<= public static void java.lang.System.arraycopy(java.lang.Object,int,java.lang.Object,int,int) -> <null: null> -=> public static void java.lang.System.arraycopy(java.lang.Object,int,java.lang.Object,int,int) -<= public static void java.lang.System.arraycopy(java.lang.Object,int,java.lang.Object,int,int) -> <null: null> -<= static void art.Test988$IntrinsicsTest.doTest() -> <null: null> -=> public static java.lang.Thread java.lang.Thread.currentThread() -<= public static java.lang.Thread java.lang.Thread.currentThread() -> <<non-deterministic>: <non-deterministic>> -=> public static void art.Trace.disableTracing(java.lang.Thread) diff --git a/test/988-method-trace/src/Main.java b/test/988-method-trace/src/Main.java index 4797c712db..9dd1142bb6 100644 --- a/test/988-method-trace/src/Main.java +++ b/test/988-method-trace/src/Main.java @@ -17,13 +17,5 @@ public class Main { public static void main(String[] args) throws Exception { art.Test988.run(); - - // Test calls to intrinsics from JITed code. - ensureJitCompiled(art.Test988Intrinsics.class, "test"); - art.Test988.testJitIntrinsics(); - - art.Test988.printResults(); } - - public static native void ensureJitCompiled(Class<?> cls, String methodName); } diff --git a/test/988-method-trace/src/art/Test988.java b/test/988-method-trace/src/art/Test988.java index 4a6de6ecbd..227ce620c5 100644 --- a/test/988-method-trace/src/art/Test988.java +++ b/test/988-method-trace/src/art/Test988.java @@ -377,19 +377,7 @@ public class Test988 { sMethodTracingIgnore = false; // Turn off method tracing so we don't have to deal with print internals. Trace.disableTracing(Thread.currentThread()); - } - - public static void testJitIntrinsics() throws Exception { - Trace.enableMethodTracing( - Test988.class, - Test988.class.getDeclaredMethod("notifyMethodEntry", Executable.class), - Test988.class.getDeclaredMethod( - "notifyMethodExit", Executable.class, Boolean.TYPE, Object.class), - Thread.currentThread()); - sMethodTracingIgnore = true; - IntrinsicsTest.doTest(); - sMethodTracingIgnore = false; - Trace.disableTracing(Thread.currentThread()); + printResults(); } // This ensures that all classes we touch are loaded before we start recording traces. This diff --git a/test/988-method-trace/src/art/Test988Intrinsics.java b/test/988-method-trace/src/art/Test988Intrinsics.java index fe68d3ed75..3069f1a2c3 100644 --- a/test/988-method-trace/src/art/Test988Intrinsics.java +++ b/test/988-method-trace/src/art/Test988Intrinsics.java @@ -22,116 +22,114 @@ package art; -public class Test988Intrinsics { - // Pre-initialize *all* instance variables used so that their constructors are not in the trace. - static java.lang.String instance_java_lang_String = "some large string"; - static java.lang.StringBuffer instance_java_lang_StringBuffer = - new java.lang.StringBuffer("some large string buffer"); - static java.lang.StringBuilder instance_java_lang_StringBuilder = - new java.lang.StringBuilder("some large string builder"); +class Test988Intrinsics { + // Pre-initialize *all* instance variables used so that their constructors are not in the trace. + static java.lang.String instance_java_lang_String = "some large string"; + static java.lang.StringBuffer instance_java_lang_StringBuffer = new java.lang.StringBuffer("some large string buffer"); + static java.lang.StringBuilder instance_java_lang_StringBuilder = new java.lang.StringBuilder("some large string builder"); - static void initialize() { - // Ensure all static variables are initialized. - // In addition, pre-load classes here so that we don't see diverging class loading traces. - java.lang.Double.class.toString(); - java.lang.Float.class.toString(); - java.lang.Integer.class.toString(); - java.lang.Long.class.toString(); - java.lang.Short.class.toString(); - java.lang.Math.class.toString(); - java.lang.Thread.class.toString(); - java.lang.String.class.toString(); - java.lang.StringBuffer.class.toString(); - java.lang.StringBuilder.class.toString(); - } + static void initialize() { + // Ensure all static variables are initialized. + // In addition, pre-load classes here so that we don't see diverging class loading traces. + java.lang.Double.class.toString(); + java.lang.Float.class.toString(); + java.lang.Integer.class.toString(); + java.lang.Long.class.toString(); + java.lang.Short.class.toString(); + java.lang.Math.class.toString(); + java.lang.Thread.class.toString(); + java.lang.String.class.toString(); + java.lang.StringBuffer.class.toString(); + java.lang.StringBuilder.class.toString(); + } - static void test() { - // Call each intrinsic from art/runtime/intrinsics_list.h to make sure they are traced. - java.lang.Double.doubleToRawLongBits(0.0); - java.lang.Double.doubleToLongBits(0.0); - java.lang.Double.isInfinite(0.0); - java.lang.Double.isNaN(0.0); - java.lang.Double.longBitsToDouble(0L); - java.lang.Float.floatToRawIntBits(0.0f); - java.lang.Float.floatToIntBits(0.0f); - java.lang.Float.isInfinite(0.0f); - java.lang.Float.isNaN(0.0f); - java.lang.Float.intBitsToFloat(0); - java.lang.Integer.reverse(0); - java.lang.Integer.reverseBytes(0); - java.lang.Integer.bitCount(0); - java.lang.Integer.compare(0, 0); - java.lang.Integer.highestOneBit(0); - java.lang.Integer.lowestOneBit(0); - java.lang.Integer.numberOfLeadingZeros(0); - java.lang.Integer.numberOfTrailingZeros(0); - java.lang.Integer.rotateRight(0, 0); - java.lang.Integer.rotateLeft(0, 0); - java.lang.Integer.signum(0); - java.lang.Long.reverse(0L); - java.lang.Long.reverseBytes(0L); - java.lang.Long.bitCount(0L); - java.lang.Long.compare(0L, 0L); - java.lang.Long.highestOneBit(0L); - java.lang.Long.lowestOneBit(0L); - java.lang.Long.numberOfLeadingZeros(0L); - java.lang.Long.numberOfTrailingZeros(0L); - java.lang.Long.rotateRight(0L, 0); - java.lang.Long.rotateLeft(0L, 0); - java.lang.Long.signum(0L); - java.lang.Short.reverseBytes((short) 0); - java.lang.Math.abs(0.0); - java.lang.Math.abs(0.0f); - java.lang.Math.abs(0L); - java.lang.Math.abs(0); - java.lang.Math.min(0.0, 0.0); - java.lang.Math.min(0.0f, 0.0f); - java.lang.Math.min(0L, 0L); - java.lang.Math.min(0, 0); - java.lang.Math.max(0.0, 0.0); - java.lang.Math.max(0.0f, 0.0f); - java.lang.Math.max(0L, 0L); - java.lang.Math.max(0, 0); - java.lang.Math.cos(0.0); - java.lang.Math.sin(0.0); - java.lang.Math.acos(0.0); - java.lang.Math.asin(0.0); - java.lang.Math.atan(0.0); - java.lang.Math.atan2(0.0, 0.0); - java.lang.Math.cbrt(0.0); - java.lang.Math.cosh(0.0); - java.lang.Math.exp(0.0); - java.lang.Math.expm1(0.0); - java.lang.Math.hypot(0.0, 0.0); - java.lang.Math.log(0.0); - java.lang.Math.log10(0.0); - java.lang.Math.nextAfter(0.0, 0.0); - java.lang.Math.sinh(0.0); - java.lang.Math.tan(0.0); - java.lang.Math.tanh(0.0); - java.lang.Math.sqrt(0.0); - java.lang.Math.ceil(0.0); - java.lang.Math.floor(0.0); - java.lang.Math.rint(0.0); - java.lang.Math.round(0.0); - java.lang.Math.round(0.0f); - java.lang.Thread.currentThread(); - instance_java_lang_String.charAt(0); - instance_java_lang_String.compareTo("hello"); - instance_java_lang_String.equals((java.lang.Object) null); - instance_java_lang_String.indexOf(0); - instance_java_lang_String.indexOf(0, 0); - instance_java_lang_String.indexOf("hello"); - instance_java_lang_String.indexOf("hello", 0); - instance_java_lang_String.isEmpty(); - instance_java_lang_String.length(); - instance_java_lang_StringBuffer.append("hello"); - instance_java_lang_StringBuffer.length(); - instance_java_lang_StringBuffer.toString(); - instance_java_lang_StringBuilder.append("hello"); - instance_java_lang_StringBuilder.length(); - instance_java_lang_StringBuilder.toString(); - java.lang.Integer.valueOf(0); - java.lang.Thread.interrupted(); - } + static void test() { + // Call each intrinsic from art/runtime/intrinsics_list.h to make sure they are traced. + java.lang.Double.doubleToRawLongBits(0.0); + java.lang.Double.doubleToLongBits(0.0); + java.lang.Double.isInfinite(0.0); + java.lang.Double.isNaN(0.0); + java.lang.Double.longBitsToDouble(0L); + java.lang.Float.floatToRawIntBits(0.0f); + java.lang.Float.floatToIntBits(0.0f); + java.lang.Float.isInfinite(0.0f); + java.lang.Float.isNaN(0.0f); + java.lang.Float.intBitsToFloat(0); + java.lang.Integer.reverse(0); + java.lang.Integer.reverseBytes(0); + java.lang.Integer.bitCount(0); + java.lang.Integer.compare(0, 0); + java.lang.Integer.highestOneBit(0); + java.lang.Integer.lowestOneBit(0); + java.lang.Integer.numberOfLeadingZeros(0); + java.lang.Integer.numberOfTrailingZeros(0); + java.lang.Integer.rotateRight(0, 0); + java.lang.Integer.rotateLeft(0, 0); + java.lang.Integer.signum(0); + java.lang.Long.reverse(0L); + java.lang.Long.reverseBytes(0L); + java.lang.Long.bitCount(0L); + java.lang.Long.compare(0L, 0L); + java.lang.Long.highestOneBit(0L); + java.lang.Long.lowestOneBit(0L); + java.lang.Long.numberOfLeadingZeros(0L); + java.lang.Long.numberOfTrailingZeros(0L); + java.lang.Long.rotateRight(0L, 0); + java.lang.Long.rotateLeft(0L, 0); + java.lang.Long.signum(0L); + java.lang.Short.reverseBytes((short)0); + java.lang.Math.abs(0.0); + java.lang.Math.abs(0.0f); + java.lang.Math.abs(0L); + java.lang.Math.abs(0); + java.lang.Math.min(0.0, 0.0); + java.lang.Math.min(0.0f, 0.0f); + java.lang.Math.min(0L, 0L); + java.lang.Math.min(0, 0); + java.lang.Math.max(0.0, 0.0); + java.lang.Math.max(0.0f, 0.0f); + java.lang.Math.max(0L, 0L); + java.lang.Math.max(0, 0); + java.lang.Math.cos(0.0); + java.lang.Math.sin(0.0); + java.lang.Math.acos(0.0); + java.lang.Math.asin(0.0); + java.lang.Math.atan(0.0); + java.lang.Math.atan2(0.0, 0.0); + java.lang.Math.cbrt(0.0); + java.lang.Math.cosh(0.0); + java.lang.Math.exp(0.0); + java.lang.Math.expm1(0.0); + java.lang.Math.hypot(0.0, 0.0); + java.lang.Math.log(0.0); + java.lang.Math.log10(0.0); + java.lang.Math.nextAfter(0.0, 0.0); + java.lang.Math.sinh(0.0); + java.lang.Math.tan(0.0); + java.lang.Math.tanh(0.0); + java.lang.Math.sqrt(0.0); + java.lang.Math.ceil(0.0); + java.lang.Math.floor(0.0); + java.lang.Math.rint(0.0); + java.lang.Math.round(0.0); + java.lang.Math.round(0.0f); + java.lang.Thread.currentThread(); + instance_java_lang_String.charAt(0); + instance_java_lang_String.compareTo("hello"); + instance_java_lang_String.equals((java.lang.Object)null); + instance_java_lang_String.indexOf(0); + instance_java_lang_String.indexOf(0, 0); + instance_java_lang_String.indexOf("hello"); + instance_java_lang_String.indexOf("hello", 0); + instance_java_lang_String.isEmpty(); + instance_java_lang_String.length(); + instance_java_lang_StringBuffer.append("hello"); + instance_java_lang_StringBuffer.length(); + instance_java_lang_StringBuffer.toString(); + instance_java_lang_StringBuilder.append("hello"); + instance_java_lang_StringBuilder.length(); + instance_java_lang_StringBuilder.toString(); + java.lang.Integer.valueOf(0); + java.lang.Thread.interrupted(); + } } |