diff options
| -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", |