diff options
| author | 2020-05-19 19:30:35 +0100 | |
|---|---|---|
| committer | 2020-05-20 19:21:31 +0100 | |
| commit | d1a421ff5cf2ffae07cd6b892dd31d51b09d3e71 (patch) | |
| tree | ffe0d5d36c44de34ae1648b8af15d99d1622dcc9 | |
| parent | 2acd1ec12ab6b81a7e870ab11085c24ae51faf6d (diff) | |
Re-enable asan tests which we disabled due to huge stack frames.
The interpreter refactoring reduced the stack frames from
massive to just slightly bigger (mostly thanks to NO_INLINE).
Bug: 117341496
Test: art/test.py -r -t 059 -t 074 -t 911 -t 913 -t 980
Change-Id: Ic116019944c99eba81843936a5126b9a61f4b423
| -rw-r--r-- | runtime/interpreter/interpreter_switch_impl-inl.h | 6 | ||||
| -rw-r--r-- | test/074-gc-thrash/src/Main.java | 2 | ||||
| -rw-r--r-- | test/knownfailures.json | 41 |
3 files changed, 4 insertions, 45 deletions
diff --git a/runtime/interpreter/interpreter_switch_impl-inl.h b/runtime/interpreter/interpreter_switch_impl-inl.h index 0f15adffb8..8a83ede875 100644 --- a/runtime/interpreter/interpreter_switch_impl-inl.h +++ b/runtime/interpreter/interpreter_switch_impl-inl.h @@ -1957,18 +1957,18 @@ void ExecuteSwitchImplCpp(SwitchImplContext* ctx) { TraceExecution(shadow_frame, inst, dex_pc); uint16_t inst_data = inst->Fetch16(0); bool exit = false; + bool success; // Moved outside to keep frames small under asan. if (InstructionHandler<do_access_check, transaction_active, Instruction::kInvalidFormat>( ctx, instrumentation, self, shadow_frame, dex_pc, inst, inst_data, next, exit). Preamble()) { + DCHECK_EQ(self->IsExceptionPending(), inst->Opcode(inst_data) == Instruction::MOVE_EXCEPTION); switch (inst->Opcode(inst_data)) { #define OPCODE_CASE(OPCODE, OPCODE_NAME, NAME, FORMAT, i, a, e, v) \ case OPCODE: { \ - DCHECK_EQ(self->IsExceptionPending(), (OPCODE == Instruction::MOVE_EXCEPTION)); \ next = inst->RelativeAt(Instruction::SizeInCodeUnits(Instruction::FORMAT)); \ - bool success = OP_##OPCODE_NAME<do_access_check, transaction_active>( \ + success = OP_##OPCODE_NAME<do_access_check, transaction_active>( \ ctx, instrumentation, self, shadow_frame, dex_pc, inst, inst_data, next, exit); \ if (success && LIKELY(!interpret_one_instruction)) { \ - DCHECK(!exit) << NAME; \ continue; \ } \ if (exit) { \ diff --git a/test/074-gc-thrash/src/Main.java b/test/074-gc-thrash/src/Main.java index 5165df7bd3..828184e316 100644 --- a/test/074-gc-thrash/src/Main.java +++ b/test/074-gc-thrash/src/Main.java @@ -195,7 +195,7 @@ class Robin extends Thread { * Allocates useless objects in recursive calls. */ class Deep extends Thread { - private static final int MAX_DEPTH = 61; + private static final int MAX_DEPTH = 50; private static String strong[] = new String[MAX_DEPTH]; private static WeakReference weak[] = new WeakReference[MAX_DEPTH]; diff --git a/test/knownfailures.json b/test/knownfailures.json index 070df351ad..10c05f9910 100644 --- a/test/knownfailures.json +++ b/test/knownfailures.json @@ -694,47 +694,6 @@ "bug": "b/31098551" }, { - "tests": [ - "059-finalizer-throw", - "074-gc-thrash", - "911-get-stack-trace", - "913-heaps", - "980-redefine-object" - ], - "description": [ - "Interpreter with access checks stack frames are too large and result in", - "StackOverFlow errors being thrown." - ], - "variant": "interp-ac & host", - "env_vars": {"SANITIZE_HOST": "address"} - }, - { - "tests": [ - "059-finalizer-throw", - "074-gc-thrash", - "911-get-stack-trace", - "913-heaps", - "980-redefine-object" - ], - "description": [ - "Interpreter with access checks stack frames are too large and result in", - "StackOverFlow errors being thrown." - ], - "variant": "interp-ac & target", - "env_vars": {"SANITIZE_TARGET": "address"} - }, - { - "tests": [ - "074-gc-thrash" - ], - "description": [ - "Interpreter with access checks stack frames are too large and result in", - "StackOverFlow errors being thrown." - ], - "variant": "interp-ac & target", - "env_vars": {"SANITIZE_TARGET": "hwaddress"} - }, - { "tests": "071-dexfile-map-clean", "description": [ "We use prebuilt zipalign on master-art-host to avoid pulling in a lot", "of the framework. But a non-sanitized zipalign binary does not work with", |