runtime/class_linker.cc (29 lines): - line 1263: // TODO: We could get around this by having a dedicated forwarding slot. It should be an - line 1619: // TODO: Only store qualified paths. - line 1640: // TODO: Store image class loaders as image roots. - line 1970: // TODO: it may be possible to avoid secondary storage if we iterate over dex caches. The problem - line 2346: // TODO: Is it really right to break here, and not check the other dex files? - line 2410: // TODO: We handle the boot classpath loader in FindClassInPathClassLoader. Try to unify this - line 2411: // and the branch above. TODO: throw the right exception here. - line 2555: // TODO: Use fast jobjects? - line 2927: // TODO: this doesn't handle all the cases where trampolines may be installed. - line 3113: // TODO These should really use the iterators. - line 3626: // TODO This should really be in mirror::Class. - line 3858: // TODO: assert that the monitor on the Class is held - line 4124: // TODO: when the verifier doesn't rely on Class-es failing to resolve/load the type hierarchy - line 4249: // TODO These should really use the iterators. - line 4790: // TODO This should be done in a better way - line 5468: // TODO: This is a cheap check to detect the straightforward case - line 5510: // TODO: the RI seemed to ignore this in my testing. - line 5806: // (j < super_vtable_length) to avoid redundant checks. (TODO maybe use this info for reducing - line 5886: // TODO Refactor this add default methods to virtuals here and not in - line 6694: // TODO This method needs to be split up into several smaller methods. - line 6797: // TODO Cleanup Needed: In the presence of default methods this optimization is rather dirty - line 6858: // TODO This should be much cleaner. - line 6892: // TODO This is rather dirty but it is faster than searching through the entire vtable - line 6965: // TODO It might be worthwhile to copy default methods on interfaces anyway since it - line 7037: // TODO don't extend virtuals of interface unless necessary (when is it?). - line 7061: // TODO We should maybe move some of this into mirror::Class or at least into another method. - line 7114: // TODO This is rather arbitrary. We should maybe support classes where only some of its - line 7611: // TODO: we used to throw here if resolved's class loader was not the - line 8215: // TODO: Should we scan the image? compiler/optimizing/code_generator_mips64.cc (28 lines): - line 93: // TODO: review - line 95: // TODO: shouldn't we use a whole machine word per argument on the stack? - line 531: // TODO: anything related to T9/GP/GOT/PIC/.so's? - line 547: // TODO: increment/decrement SP in one step instead of two or remove this comment. - line 583: // TODO: anything related to T9/GP/GOT/PIC/.so's? - line 594: // TODO: increment/decrement SP in one step instead of two or remove this comment. - line 672: // TODO: use load_type = kLoadUnsignedWord when type == Primitive::kPrimNot. - line 834: // TODO: use load_type = kLoadUnsignedWord when type == Primitive::kPrimNot. - line 917: // TODO: review; anything else? - line 919: // TODO: remove once all the issues with register saving/restoring are sorted out. - line 972: // TODO: anything related to T9/GP/GOT/PIC/.so's? - line 984: // TODO: barrier needed? - line 1634: // TODO: avoid this check if we know obj is not null. - line 1824: // TODO: don't use branches. - line 2777: // TODO: memory barrier? - line 2832: // TODO: memory barriers? - line 2876: // TODO: Avoid this check if we know `obj` is not null. - line 2942: // TODO: b/18116999, our IMTs can miss an IncompatibleClassChangeError. - line 2999: // TODO: remove this once all the issues with register saving/restoring are - line 3021: // TODO: Implement other kinds. - line 3031: // TODO: Implement these types. For the moment, we fall back to kDexCacheViaMethod. - line 3044: // TODO: Implement these types. For the moment, we fall back to kCallArtMethod. - line 3076: // TODO: Implement these types. - line 3087: // TODO: use the appropriate DCHECK() here if possible. - line 3123: // TODO: Implement these types. - line 3227: // TODO: We will need a read barrier here. - line 3289: // TODO: We will need a read barrier here. - line 3965: // TODO: simplify this when the emulator correctly implements NAN2008=1 behavior of the runtime/gc/heap.cc (23 lines): - line 451: // TODO: Place bump-pointer spaces somewhere to minimize size of card table. - line 515: // TODO: Avoid needing to do this. - line 522: // cover the whole low_4gb. TODO: Extend the card table in AddSpace. - line 550: // TODO: Count objects in the image space here? - line 590: // TODO: Clean this up. - line 1032: // TODO: Switch to standard begin and end to use ranged a based loop. - line 1051: // TODO: Generalize this to n bitmaps? - line 1644: // TODO: Do this concurrently. - line 1766: // TODO: Run finalization, but this may cause more allocations to occur. - line 1980: // TODO: Fix lock analysis to not use NO_THREAD_SAFETY_ANALYSIS, requires support for - line 2126: // TODO: Not hard code in semi-space collector? - line 2249: // TODO: Only do this with all mutators suspended to avoid races. - line 2662: // TODO: Clean this up. - line 2696: gc_type = collector::kGcTypeFull; // TODO: Not hard code this in. - line 2903: // TODO: Fix the no thread safety analysis. - line 3044: // TODO: Add handle VerifyObject. - line 3062: // TODO: Add handle VerifyObject. - line 3126: // TODO: Fix lock analysis to not use NO_THREAD_SAFETY_ANALYSIS, requires support for - line 3141: // TODO: Check mod-union tables. - line 3312: // TODO: Need to use atomic for the case where aged(cleaning thread) -> dirty(other thread) - line 3374: // TODO: Add a new runtime option for this? - line 3513: // TODO: Check large object? - line 3522: // TODO: Tune the native heap utilization to be a value other than the java heap utilization. compiler/optimizing/code_generator_mips.cc (23 lines): - line 670: // TODO: mapping of floating-point registers to DWARF. - line 698: // TODO: increment/decrement SP in one step instead of two or remove this comment. - line 718: // TODO: Change the frame to avoid unaligned accesses for fpu registers. - line 731: // TODO: __ cfi().RelOffset(DWARFReg(reg), ofs); - line 757: // TODO: increment/decrement SP in one step instead of two or remove this comment. - line 779: // TODO: __ cfi().Restore(DWARFReg(reg)); - line 2011: // TODO: avoid this check if we know obj is not null. - line 2099: // TODO: more efficient (direct) comparison with a constant. - line 2234: // TODO: don't use branches. - line 2240: // TODO: don't use branches. - line 2799: // TODO: more efficient comparison with 16-bit constants without loading them into TMP. - line 2894: // TODO: more efficient comparison with constants without loading them into TMP/AT. - line 3638: // TODO: memory barriers? - line 3686: // TODO: Avoid this check if we know `obj` is not null. - line 3740: // TODO: b/18116999, our IMTs can miss an IncompatibleClassChangeError. - line 3806: // TODO: Implement other kinds. - line 3816: // TODO: Implement these types. For the moment, we fall back to kDexCacheViaMethod. - line 3829: // TODO: Implement these types. For the moment, we fall back to kCallArtMethod. - line 3861: // TODO: Implement these types. - line 3872: // TODO: use the appropriate DCHECK() here if possible. - line 3908: // TODO: Implement these types. - line 4888: // TODO: simplify this when the emulator correctly implements NAN2008=1 behavior of the - line 4952: // TODO: simplify this when the emulator correctly implements NAN2008=1 behavior of the runtime/parsed_options.cc (21 lines): - line 309: // TODO: Move Usage information into this DSL. - line 324: // TODO: Move the below loop into JNI - line 328: // TODO: support -Djava.class.path - line 408: // gLogVerbosity.class_linker = true; // TODO: don't check this in! - line 409: // gLogVerbosity.collector = true; // TODO: don't check this in! - line 410: // gLogVerbosity.compiler = true; // TODO: don't check this in! - line 411: // gLogVerbosity.deopt = true; // TODO: don't check this in! - line 412: // gLogVerbosity.gc = true; // TODO: don't check this in! - line 413: // gLogVerbosity.heap = true; // TODO: don't check this in! - line 414: // gLogVerbosity.jdwp = true; // TODO: don't check this in! - line 415: // gLogVerbosity.jit = true; // TODO: don't check this in! - line 416: // gLogVerbosity.jni = true; // TODO: don't check this in! - line 417: // gLogVerbosity.monitor = true; // TODO: don't check this in! - line 418: // gLogVerbosity.oat = true; // TODO: don't check this in! - line 419: // gLogVerbosity.profiler = true; // TODO: don't check this in! - line 420: // gLogVerbosity.signals = true; // TODO: don't check this in! - line 421: // gLogVerbosity.simulator = true; // TODO: don't check this in! - line 422: // gLogVerbosity.startup = true; // TODO: don't check this in! - line 423: // gLogVerbosity.third_party_jni = true; // TODO: don't check this in! - line 424: // gLogVerbosity.threads = true; // TODO: don't check this in! - line 425: // gLogVerbosity.verifier = true; // TODO: don't check this in! runtime/debugger.cc (19 lines): - line 146: // TODO: post location events is a suspension point and native method entry stubs aren't. - line 172: // TODO: post location events is a suspension point and native method entry stubs aren't. - line 605: // TODO: dalvik only warned if there were breakpoints left over. clear in Dbg::Disconnected? - line 833: // TODO: Enable annotalysis. We know lock is held in constructor, but abstraction confuses - line 1212: // TODO: fix when annotalysis correctly handles non-member functions. - line 1772: // TODO: should we give up now if receiver_class is null? - line 1785: // TODO: should we change the tests and check both? - line 1906: // TODO: should we change the tests and check both? - line 2271: // TODO: if we identified threads to the debugger by their Thread* - line 2288: // TODO: Enable annotalysis. We know lock is held in constructor, but abstraction confuses - line 2451: // TODO: Enable annotalysis. We know lock is held in constructor, but abstraction confuses - line 2493: // TODO: Enable annotalysis. We know lock is held in constructor, but abstraction confuses - line 2585: // TODO: check that the tag is compatible with the actual type of the slot! - line 2748: // TODO: check that the tag is compatible with the actual type of the slot! - line 3325: // TODO Deoptimizing on default methods might not be necessary in all cases. - line 3697: // TODO: Enable annotalysis. We know lock is held in constructor, but abstraction confuses - line 4116: // TODO we could keep the receiver ObjectId in the DebugInvokeReq to avoid looking into the - line 4209: * OLD-TODO: we currently assume that the request and reply include a single - line 4655: // OLD-TODO: if context.merge, see if this chunk is different from the last chunk. compiler/driver/compiler_driver.cc (15 lines): - line 130: // 100% of samples. TODO: clean this up. - line 581: // TODO: Refactor the compilation to avoid having to distinguish the two passes - line 638: // TODO: add a command-line option to disable DEX-to-DEX compilation ? - line 782: // TODO: Collect the relevant string indices in parallel, then allocate them sequentially in a - line 847: // TODO: Make sure that inlining honors this. - line 1319: CHECK(update.get() != nullptr) << error_msg; // TODO: Soft failure? - line 1511: // TODO This is somewhat hacky. We should refactor all of this invoke codepath. - line 1518: // isn't created at compile time. TODO: implement this - line 1653: // TODO This is somewhat hacky. We should refactor all of this invoke codepath. - line 1659: // TODO: support patching on all architectures. - line 2186: // TODO: we could resolve strings here, although the string table is largely filled with class - line 2439: // TODO multithreading support. We should ensure the current compilation thread has - line 2451: // TODO we detach transaction from runtime to indicate we quit the transactional - line 2507: // TODO: remove this when transactional mode supports multithreading. - line 2826: // TODO: When compiling the boot image it should be safe to assume that everything is verified, compiler/optimizing/code_generator_arm.cc (14 lines): - line 1349: // TODO: consider avoiding jumps with temporary and CMP low+SBC high - line 1413: // TODO: optimize cases where this is always true/false - line 1940: // TODO: b/18116999, our IMTs can miss an IncompatibleClassChangeError. - line 2860: // TODO: Strength reduction for mls. - line 3781: // TODO (ported from quick): revisit ARM barrier kinds. - line 3858: // TODO: consider renaming StoreNeedsWriteBarrier to StoreNeedsGCMark. - line 4665: // TODO: Extend the register allocator to support a new - line 5242: // TODO: Implement for read barrier. - line 5264: // TODO: Create as many ArmDexCacheArraysBase instructions as needed for methods - line 5566: // TODO: Introduce a new runtime entry point taking the object - line 5780: // TODO: Introduce a new runtime entry point taking the object - line 6286: // TODO: Unpoison `ref` when it is used by artReadBarrierSlow. - line 6336: // TODO: Create as many ArmDexCacheArraysBase instructions as needed for methods - line 6816: // TODO: Consider pairs in the parallel move resolver, then this could be nicely merged compiler/optimizing/code_generator_x86.cc (13 lines): - line 2082: // TODO: b/18116999, our IMTs can miss an IncompatibleClassChangeError. - line 2696: // TODO: enhance register allocator to ask for stack temporaries. - line 2749: // TODO: enhance register allocator to ask for stack temporaries. - line 3258: // TODO: enhance register allocator to ask for stack temporaries. - line 4362: // TODO: Create as many X86ComputeBaseMethodAddress instructions - line 5413: // TODO: Extend the register allocator to support a new - line 6045: // TODO: Implement for read barrier. - line 6062: // TODO: Create as many X86ComputeBaseMethodAddress instructions as needed for methods - line 6387: // TODO: Introduce a new runtime entry point taking the object - line 6622: // TODO: Introduce a new runtime entry point taking the object - line 7032: // TODO: Unpoison `ref` when it is used by artReadBarrierSlow. - line 7431: // TODO: target as memory. - line 7445: // TODO: Consider pairs in the parallel move resolver, then this could be nicely merged disassembler/disassembler_mips.cc (13 lines): - line 71: { kRTypeMask, 12, "syscall", "", }, // TODO: code - line 72: { kRTypeMask, 13, "break", "", }, // TODO: code - line 73: { kRTypeMask, 15, "sync", "", }, // TODO: type - line 103: // TODO: tge[u], tlt[u], teg, tne - line 139: // TODO: sdbbp - line 150: { kSpecial2Mask | 0x3f, (28 << kOpcodeShift) | 0x3f, "sdbbp", "" }, // TODO: code - line 230: // TODO: de-dup - line 267: // TODO: de-dup - line 325: { kITypeMask | (1 << 21), (54u << kOpcodeShift) | (1 << 21), "beqzc", "Sb" }, // TODO: de-dup? - line 337: { kITypeMask | (1 << 21), (62u << kOpcodeShift) | (1 << 21), "bnezc", "Sb" }, // TODO: de-dup? - line 422: // TODO: remove this! - line 464: size_t fmt = (instruction >> 21) & 0x7; // TODO: other fmts? - line 483: // TODO: is this right? compiler/optimizing/intrinsics_x86_64.cc (13 lines): - line 66: // TODO: Find a way to have intrinsics work with read barriers. - line 153: // TODO: Can be done with an xchg of 8b registers. This is straight from Quick. - line 194: // TODO: Consider Quick's way of doing Double abs through integer operations, as the immediate we - line 198: // TODO: Enable memory operations when the assembler supports them. - line 216: // TODO: Can mask directly with constant area using pand if we can guarantee - line 322: // TODO: This is straight from Quick. Make NaN an out-of-line slowpath? - line 917: // TODO: Maybe we can support range check elimination. Overall, though, I think it's not worth - line 919: // TODO: For simplicity, the index parameter is requested in a register, so different from Quick - line 1128: // TODO: Implement read barriers in the SystemArrayCopy intrinsic. - line 1553: // TODO: Support jecxz. - line 2109: bool value_can_be_null = true; // TODO: Worth finding out this information? - line 2203: bool value_can_be_null = true; // TODO: Worth finding out this information? - line 2236: // TODO: Add a read barrier for the reference stored in the object runtime/lambda/closure.cc (13 lines): - line 30: // TODO: can I return T __attribute__((__aligned__(1)))* here instead? - line 93: // TODO: We should probably store the result of this in the ArtLambdaMethod, - line 121: // TODO: using memcpy is unsafe with read barriers, fix this once we add reference support - line 146: // TODO: not safe for GC-able values since the address can move and the hash code would change. - line 153: // TODO: Fix above loop to work for objects and lambdas. - line 164: // TODO: Need rework to use read barriers once closures have references inside of them that can - line 177: // TODO: refactor into art_lambda_method.h. Parsing should only be required here as a DCHECK. - line 208: // TODO: Restructure to use template specialization, e.g. GetCapturedPrimitive - line 254: // TODO: Restructure to use template specialization, e.g. GetCapturedPrimitive - line 285: // TODO: Restructure to use template specialization, e.g. GetCapturedPrimitive - line 294: // TODO: This seems unsafe. This may need to use gcroots. - line 374: // TODO: This is kind of ugly. I would prefer an unaligned_ptr here. - line 383: // TODO: Should probably wrap this in like MemCpyNative or some such which statically asserts compiler/optimizing/nodes.h (12 lines): - line 467: // TODO: This is problematic for the consistency of reference type propagation - line 1359: // TODO: Hide this better. - line 1615: // TODO: remove this interceptor once HIR types are clean - line 1828: // TODO: Consider merging can_be_null into ReferenceTypeInfo. - line 1997: // TODO: Remove this indirection when the [[pure]] attribute proposal (n3744) - line 2166: // TODO: for primitive types this should be marked as invalid. - line 3673: // TODO: distinguish between the two cases so we can for example allow allocation elimination. - line 4001: // TODO: for intrinsics we can generate implicit null checks. - line 4171: // TODO: Add implicit null checks in intrinsics. - line 4197: // TODO: Add implicit null checks in intrinsics. - line 5154: // TODO: We can be smarter here. - line 5218: // TODO: Same as for ArrayGet. compiler/utils/mips/assembler_mips.cc (11 lines): - line 2041: Nop(); // TODO: improve by filling the delay slot. - line 2046: Nop(); // TODO: improve by filling the delay slot. - line 2050: Nop(); // TODO: is this NOP really needed here? - line 2076: // TODO: can this be improved? - line 2121: Nop(); // TODO: improve by filling the forbidden/delay slot. - line 2773: // TODO: sync? - line 2846: // TODO: not validating references. - line 2851: // TODO: not validating references. - line 2863: // TODO: place reference map on call. - line 2875: // TODO: place reference map on call. - line 2897: // TODO: on MIPS32R6 prefer Bnezc(scratch.AsCoreRegister(), slow.Entry()); runtime/runtime.cc (11 lines): - line 345: // TODO: acquire a static mutex on Runtime to avoid racing. - line 442: // TODO: we ought to be able to use pthread_kill(3) here (or abort(3), - line 448: // TODO: LLVM installs it's own SIGABRT handler so exit to be safe... Can we disable that in LLVM? - line 490: // TODO: acquire a static mutex on Runtime to avoid racing. - line 496: // TODO: Currently deleting the instance will abort the runtime on destruction. Now This will - line 1223: // TODO: Should we move the following to InitWithoutImage? - line 1251: // TODO: Don't do this, just change ProfilerOptions to include the output file name? - line 1267: // TODO: move this to just be an Trace::Start argument - line 1465: // TODO: wouldn't it make more sense to clear _all_ threads' stats? - line 1478: // TODO: wouldn't it make more sense to clear _all_ threads' stats? - line 1719: intern_table_->ChangeWeakRootState(gc::kWeakRootStateNormal); // TODO: Do this in the sweeping. compiler/optimizing/code_generator_x86_64.cc (11 lines): - line 2227: // TODO: b/18116999, our IMTs can miss an IncompatibleClassChangeError. - line 2424: // TODO: We would benefit from a (to-be-implemented) - line 3243: // TODO: enhance register allocator to ask for stack temporaries. - line 3397: // TODO: can these branches be written as one? - line 4838: // TODO: Extend the register allocator to support a new - line 5413: // TODO: Implement for read barrier. - line 5478: // TODO: Consider using opcode A1, i.e. movl eax, moff32 (with 64-bit address). - line 5750: // TODO: Introduce a new runtime entry point taking the object - line 6038: // TODO: Introduce a new runtime entry point taking the object - line 6431: // TODO: Unpoison `ref` when it is used by artReadBarrierSlow. - line 6758: // TODO: trg as memory. compiler/optimizing/intrinsics_x86.cc (11 lines): - line 72: // TODO: Find a way to have intrinsics work with read barriers. - line 201: // TODO: Can be done with an xchg of 8b registers. This is straight from Quick. - line 252: // TODO: Consider Quick's way of doing Double abs through integer operations, as the immediate we - line 256: // TODO: Enable memory operations when the assembler supports them. - line 434: // TODO: This is straight from Quick (except literal pool). Make NaN an out-of-line slowpath? - line 1055: // TODO: Maybe we can support range check elimination. Overall, though, I think it's not worth - line 1057: // TODO: For simplicity, the index parameter is requested in a register, so different from Quick - line 1451: // TODO: Support jecxz. - line 2074: bool value_can_be_null = true; // TODO: Worth finding out this information? - line 2180: bool value_can_be_null = true; // TODO: Worth finding out this information? - line 2212: // TODO: Add a read barrier for the reference stored in the object compiler/optimizing/inliner.cc (10 lines): - line 137: // TODO: Remove this check, we should be able to inline final methods - line 198: // TODO: deal with proxy classes. - line 286: // TODO: Can this still happen? - line 446: // TODO: Extend reference type propagation to understand the guard. - line 632: // TODO: Support HClassTableGet for mips64. - line 720: // TODO: Extend reference type propagation to understand the guard. - line 886: // TODO: Needs null check. - line 901: // TODO: Needs null check. - line 1152: // TODO: We should abort only if all predecessors throw. However, - line 1330: // TODO: we could be more precise by merging the phi inputs but that requires dex2oat/dex2oat.cc (10 lines): - line 446: // TODO: When we can guarantee it won't prevent shutdown in error cases, move to LOG. However, - line 455: // TODO: tune the multiplier for GC verification, the following is just to make the timeout - line 487: // TODO: Switch to Mutex when we can guarantee it won't prevent shutdown in error cases. - line 689: // TODO: Remove this once we better deal with full frame deoptimization. - line 832: // TODO: We should rethink the compiler filter. We mostly save - line 968: // TODO: Make everything properly std::string. - line 1160: // TODO: rather than switch off compiler logging, make all VLOG(compiler) messages - line 1448: // TODO: refactor. b/29790079 - line 1637: // TODO: We could just remember this information from step 3. - line 1642: // TODO: Do this in step 3. We already know the layout there. runtime/verifier/method_verifier.cc (10 lines): - line 56: // TODO: Add a constant to method_verifier to turn on verbose logging? - line 2267: // TODO: check Compiler::CanAccessTypeWithoutChecks returns false when res_type is unresolved - line 2358: // TODO: check Compiler::CanAccessTypeWithoutChecks returns false when res_type is unresolved - line 2413: // TODO: check Compiler::CanAccessTypeWithoutChecks returns false when res_type is unresolved - line 2917: // TODO: re-enable constructor type verification - line 3446: * TODO: avoid re-fetching the branch target - line 4077: // TODO Can we verify anything else. - line 4082: // TODO Revisit whether we want to allow invoke-super on direct interfaces only like the JLS - line 4287: // TODO: check Compiler::CanAccessTypeWithoutChecks returns false when res_type is unresolved - line 4330: // instruction type. TODO: have a proper notion of bottom here. runtime/thread.cc (9 lines): - line 627: // TODO: pass self to MutexLock - requires self to equal Thread::Current(), which is only true - line 756: // TODO: This comment may be out of date. It seems possible to speed this up. As - line 878: // TODO: remove from thread group? - line 1442: // here. TODO: clean up. - line 1699: // here. TODO: clean up. - line 1734: // TODO: we call this code when dying but may not have suspended the thread ourself. The - line 2113: // TODO: make stack indirect reference table lookup more efficient. - line 2428: // TODO: reuse class_name_object via Class::name_? - line 3257: // TODO: DCHECK(!IsExceptionPending()); runtime/gc/collector/mark_sweep.cc (9 lines): - line 133: // TODO: I don't think we should need heap bitmap lock to Get the mark bitmap. - line 241: // TODO: Empty allocation stack to reduce the number of objects we need to test / mark as live - line 407: // TODO: Differentiate between marking and testing somehow. - line 505: // TODO: We already know that the object is not in the current_space_bitmap_ but MarkBitmap::Set - line 660: // TODO: Check performance? - line 777: // TODO: Tune this. - line 861: // The parallel version with only one thread is faster for card scanning, TODO: fix. - line 1100: // TODO: Consider live stack? Has this code bitrotted? - line 1400: // TODO: Tune this. compiler/optimizing/code_generator_arm64.cc (9 lines): - line 1107: // xSuspend : Runtime reserved. TODO: Unblock this when the runtime stops using it. - line 2266: // TODO: Extend the register allocator to support a new - line 2630: // TODO: Strength reduction for msub. - line 3306: // TODO: Introduce a new runtime entry point taking the object - line 3520: // TODO: Introduce a new runtime entry point taking the object - line 3573: // TODO: b/18116999, our IMTs can miss an IncompatibleClassChangeError. - line 4045: // TODO: Implement for read barrier. - line 4801: // TODO: Instead of emitting all jump tables at the end of the code, we could keep track of ADR - line 5178: // TODO: Unpoison `ref` when it is used by artReadBarrierSlow. compiler/optimizing/intrinsics_arm.cc (8 lines): - line 59: // TODO: Find a way to have intrinsics work with read barriers. - line 740: bool value_can_be_null = true; // TODO: Worth finding out this information? - line 850: bool value_can_be_null = true; // TODO: Worth finding out this information? - line 880: // TODO: When `type == Primitive::kPrimNot`, add a read barrier for - line 922: // implemented (see TODO in GenCAS below). - line 966: // TODO: Maybe we can support range check elimination. Overall, though, I think it's not worth - line 968: // TODO: For simplicity, the index parameter is requested in a register, so different from Quick - line 1372: // TODO: Implement read barriers in the SystemArrayCopy intrinsic. compiler/utils/x86/assembler_x86.cc (8 lines): - line 1737: // TODO: fs is a prefix and not an instruction - line 1744: // TODO: fs is a prefix and not an instruction - line 1770: // TODO: Need to have a code constants table. - line 1779: // TODO: Need to have a code constants table. - line 2200: // TODO: x87, SSE - line 2351: // TODO: not validating references - line 2355: // TODO: not validating references - line 2362: // TODO: place reference map on call compiler/optimizing/intrinsics_arm64.cc (8 lines): - line 125: DCHECK(out.IsRegister()); // TODO: Replace this when we support output in memory. - line 160: // TODO: Find a way to have intrinsics work with read barriers. - line 936: bool value_can_be_null = true; // TODO: Worth finding out this information? - line 1038: bool value_can_be_null = true; // TODO: Worth finding out this information? - line 1067: // TODO: When `type == Primitive::kPrimNot`, add a read barrier for - line 1104: // implemented (see TODO in GenCAS below). - line 1153: // TODO: Maybe we can support range check elimination. Overall, though, I think it's not worth - line 1155: // TODO: For simplicity, the index parameter is requested in a register, so different from Quick runtime/interpreter/interpreter_common.h (8 lines): - line 271: // TODO: Strings need to come from the DexFile, so they won't need their own allocations. - line 390: // TODO: this should be a proper [type id] instead of a [string ID] pointing to a type. - line 450: // TODO: Capturing lambdas recursively will be done at a later time. - line 460: // TODO: finish implementing this. disabled for now since we can't track lambda refs for GC. - line 493: // TODO: this should be a proper [type id] instead of a [string ID] pointing to a type. - line 497: // TODO: Fix the dex encoding to contain the long and short type descriptors. - line 654: // TODO: Remove the InvokeVirtualOrInterface instrumentation, as it was only used by the JIT. - line 701: // TODO: Remove the InvokeVirtualOrInterface instrumentation, as it was only used by the JIT. compiler/utils/x86_64/assembler_x86_64.cc (7 lines): - line 2155: // TODO: gs is a prefix and not an instruction - line 2331: // TODO: Need to have a code constants table. - line 2948: // TODO: x87, SSE - line 3046: // TODO: movzwl - line 3103: // TODO: not validating references - line 3107: // TODO: not validating references - line 3114: // TODO: place reference map on call compiler/utils/mips64/assembler_mips64.cc (7 lines): - line 1705: Nop(); // TODO: improve by filling the forbidden/delay slot. - line 2157: // TODO: review - line 2324: // TODO: sync? - line 2398: // TODO: not validating references - line 2403: // TODO: not validating references - line 2415: // TODO: place reference map on call - line 2428: // TODO: place reference map on call runtime/base/mutex.cc (7 lines): - line 103: // TODO: remove this workaround target GCC/libc++/bionic bug "invalid failure memory model". - line 352: // TODO: should we just not log at all if shutting down? this could be the logging mutex! - line 474: // TODO: the ordering here is non-trivial as state is split across 3 fields, fix by placing - line 540: // TODO: should we just not log at all if shutting down? this could be the logging mutex! - line 597: // TODO: the ordering here is non-trivial as state is split across 3 fields, fix by placing - line 719: result = IsExclusiveHeld(self); // TODO: a better best effort here. - line 789: // TODO: enable below, there's a race in thread creation that causes false failures currently. runtime/oat_file_assistant.cc (7 lines): - line 107: // TODO: Can we verify the boot class path is the same for all ISAs? - line 398: // TODO: The oat file assistant should be the definitive place for - line 468: // TODO: This could cause GivenOatFileIsOutOfDate to be called twice, which - line 554: // TODO: Move this check to OatFileCompilerFilterIsOkay? Nothing bad should - line 692: // TODO: Why does dex2oat behave that way? - line 833: // TODO: The work done in GetDalvikCache is overkill for what we need. - line 999: // TODO: Use something better than xor. runtime/base/mutex.h (7 lines): - line 100: kClassLinkerClassesLock, // TODO rename. - line 364: // TODO: we can only assert this well when self != null. - line 451: // TODO: No thread safety analysis on Wait and TimedWait as they call mutex operations via their - line 457: // TODO: remove this. - line 617: // TODO: improve name, perhaps instrumentation_update_lock_. - line 682: // TODO: Does the trade-off of a per-thread lock make sense? - line 695: // TODO: this should be a RW mutex lock, except that ConditionVariables don't work with it. compiler/optimizing/sharpening.cc (7 lines): - line 46: // TODO: Move the sharpening of invoke-virtual/-interface/-super from HGraphBuilder - line 49: // TODO: HLoadClass - select better load kind if available. - line 57: // TODO: Use direct_method and direct_code for the appropriate StringFactory method. - line 61: // TODO: Avoid CompilerDriver. - line 78: // TODO: try using kDexCachePcRelative. It's always a valid method load - line 191: // TODO: Make sure we don't set the "compile PIC" flag for JIT as that's bogus. - line 202: // TODO: Write a test for this. runtime/lambda/box_table.cc (7 lines): - line 32: // TODO: Generate a proxy class for the closure when boxing the first time. - line 51: // TODO: Maybe point to the interior of the boxed closure object after we add proxy support? - line 82: // TODO: Switch to ReaderMutexLock if ConditionVariable ever supports RW Mutexes - line 110: // TODO: Boxing an innate lambda (i.e. made with create-lambda) should make a proxy class - line 111: // TODO: Boxing a learned lambda (i.e. made with unbox-lambda) should return the original object - line 144: // TODO: GC may need to sweep for roots in the box table's copy of the closure. - line 187: // TODO: don't just memcpy the closure, it's unsafe when we add references to the mix. runtime/oat_file.cc (6 lines): - line 553: void* dlopen_handle_; // TODO: Unique_ptr with custom deleter. - line 596: // TODO: Also try when not executable? The issue here could be re-mapping as writable (as - line 890: // TODO: rename requested_base to oat_data_begin - line 1081: // TODO: Additional analysis of usage patterns to see if this can be simplified - line 1316: // TODO: Check against oat_patches. b/18144996 - line 1380: // TODO: odex files? compiler/optimizing/reference_type_propagation.cc (6 lines): - line 129: // TODO: move this to the graph checker. - line 228: // TODO: if the current bound type is a refinement we could update the - line 527: // TODO: There are certain cases where we can't resolve the field. - line 547: // TODO: Use descriptor to get the actual type. - line 555: // TODO: Use descriptor to get the actual type. - line 766: // TODO: consider if it's worth "looking back" and binding the input object runtime/trace.cc (6 lines): - line 196: // TODO: put this somewhere with the big-endian equivalent used by JDWP. - line 202: // TODO: put this somewhere with the big-endian equivalent used by JDWP. - line 210: // TODO: put this somewhere with the big-endian equivalent used by JDWP. - line 373: // TODO: In full-PIC mode, we don't need to fully deopt. - line 557: // TODO: In full-PIC mode, we don't need to fully deopt. - line 655: // TODO: Visit trace methods as roots. runtime/gc/collector/semi_space.cc (6 lines): - line 71: // TODO: We can probably also add this space to the immune region. - line 158: // TODO: I don't think we should need heap bitmap lock to Get the mark bitmap. - line 300: // TODO: Remove NO_THREAD_SAFETY_ANALYSIS when clang better understands visitors. - line 339: // TODO: Improve naming. - line 462: // TODO: Worth considering the last object copied? We may end up dirtying one page which is - line 698: // TODO: Remove NO_THREAD_SAFETY_ANALYSIS when clang better understands visitors. compiler/debug/dwarf/dwarf_constants.h (6 lines): - line 93: // TODO Update these values when Dwarf 5 is released. - line 207: // TODO Update these values when Dwarf 5 is released. - line 419: // TODO Update these values when Dwarf 5 is released. - line 511: // TODO Update these values when Dwarf 5 is released. - line 588: // TODO Update these values when Dwarf 5 is released. - line 612: // TODO Update these values when Dwarf 5 is released. runtime/gc/collector/concurrent_copying.cc (6 lines): - line 144: // TODO: try avoiding using bitmaps for image/zygote to save space. - line 384: // TODO: don't visit the transaction roots if it's not active. - line 585: Thread* self = Thread::Current(); // TODO: pass self as an argument from call sites? - line 803: // TODO: need to call this only if obj is alive? - line 809: // TODO: LOS. But only refs in LOS are classes. - line 1836: // Copy the object. TODO: copy only the lockword in the second iteration and on? oatdump/oatdump.cc (6 lines): - line 559: return maybe_thumb_offset & ~0x1; // TODO: Make this Thumb2 specific. - line 613: // TODO: Support regex - line 624: // TODO: include bitmap here if type is kOatClassSomeCompiled? - line 658: // TODO: Extend OS::DirectoryExists if symlink support is required - line 783: // TODO: Support regex - line 1435: // TODO: Dump fields. runtime/elf_file.cc (6 lines): - line 228: // TODO: base these off of sh_link from .symtab and .dynsym above - line 763: // TODO: we need to change this to calculate base_address_ in ::Open, - line 938: // TODO: remove this static_cast from enum when using -std=gnu++0x - line 1160: // TODO: base_address_ needs to be calculated in ::Open, otherwise - line 1583: // TODO: ELFObjectFile doesn't have give to Elf_Phdr, so we do that ourselves for now. - line 1607: // TODO: Unfortunate ELFObjectFile has protected symbol access, so use ElfFile runtime/mirror/class.h (6 lines): - line 107: // TODO: Explain the other states - line 359: // TODO: switch to a check if the super class is java.lang.reflect.Proxy? - line 1064: // TODO: uint16_t - line 1427: // TODO: really 16bits - line 1431: // TODO: really 16bits - line 1463: // TODO: ? runtime/check_jni.cc (6 lines): - line 882: case 'p': // TODO: pointer - null or readable? - line 1045: // TODO: maybe this wasn't worth it? - line 1147: // TODO: Better check here. - line 1163: // TODO: Better check here. - line 2239: // TODO: stale? show pointer and truncate string. - line 3269: // TODO: could we be smarter about not copying when local_is_copy? runtime/utils.cc (6 lines): - line 432: // TODO: add an identifying hash value for the loader - line 1193: // TODO: is there any way to get the kernel stack on Mac OS? - line 1312: // TODO: Check callers. Traditional behavior is to not to abort, even when abort_on_error. - line 1673: // TODO: Iterate through all switch targets. - line 1697: // TODO: value label. - line 1876: // TODO: this doesn't seem to work on the emulator. b/15114595 runtime/gc/collector/mark_compact.cc (6 lines): - line 111: // TODO: I don't think we should need heap bitmap lock to Get the mark bitmap. - line 211: // TODO: Improve naming. - line 346: // TODO: Improve naming. - line 391: // Need to zero out the memory we freed. TODO: Use madvise for pages. - line 427: // TODO: Remove NO_THREAD_SAFETY_ANALYSIS when clang better understands visitors. - line 566: // TODO: Remove NO_THREAD_SAFETY_ANALYSIS when clang better understands visitors. disassembler/disassembler_arm.cc (5 lines): - line 286: // TODO: Shifted register. - line 301: // TODO: Shifted register. - line 362: // TODO: a more complete ARM disassembler could generate wider opcodes. - line 717: // TODO: use canonical form if there is a shift (lsl, ...). - line 1573: break; // TODO: when we generate these... runtime/jni_internal.cc (5 lines): - line 496: // TODO: SOA may not be necessary but I do it to please lock annotations. - line 513: // TODO: SOA may not be necessary but I do it to please lock annotations. - line 2332: // TODO: we should try to expand the table if necessary. - line 2337: // TODO: this isn't quite right, since "capacity" includes holes. - line 2424: // heap address. TODO: This might be slow to check, may be worth keeping track of which runtime/stack.cc (5 lines): - line 702: // TODO: this seems architecture specific for the case of JNI frames. - line 703: // TODO: 083-compiler-regressions ManyFloatArgs shows this estimate is wrong. - line 987: // TODO: Maybe make already pending exception a suppressed exception. - line 1008: // TODO: Should we add this as a suppressed exception? - line 1015: // If this raised an exception, ignore. TODO: Should we add this as suppressed runtime/mirror/object-inl.h (5 lines): - line 655: // TODO: Pass memory_order_ and strong/weak as arguments to avoid code duplication? - line 831: // TODO: Refactor to use a SequentiallyConsistent load instead. - line 870: // TODO: Refactor to use a SequentiallyConsistent store instead. - line 887: // TODO: Check field assignment could theoretically cause thread suspension, TODO: fix this. - line 1077: // TODO: Do a simpler check? runtime/mirror/object_array.h (5 lines): - line 46: // TODO fix thread safety analysis: should be SHARED_REQUIRES(Locks::mutator_lock_). - line 51: // TODO fix thread safety analysis: should be SHARED_REQUIRES(Locks::mutator_lock_). - line 58: // TODO fix thread safety analysis broken by the use of template. This should be - line 63: // TODO fix thread safety analysis broken by the use of template. This should be - line 92: // TODO fix thread safety analysis broken by the use of template. This should be compiler/utils/arm/assembler_thumb2.cc (5 lines): - line 533: // TODO: Support less than or equal to 12bits. - line 2321: // TODO: support [rx,ry] instructions. - line 3674: // TODO: Implement indexed load (not available for LDRD) and use it here to avoid the ADD. - line 3765: // TODO: Implement indexed store (not available for STRD), inline AdjustLoadStoreOffset() - line 3882: // TODO: Implement. compiler/optimizing/code_generator.h (5 lines): - line 292: // TODO: Replace with a catch-entering instruction that records the environment. - line 301: // TODO: Avoid creating the `std::unique_ptr` here. - line 430: // TODO: This overlaps a bit with MoveFromReturnRegister. Refactor for a better design. - line 718: // TODO: pass dex-pc/slow-path-type to run-time to allow even more sharing? - line 796: // TODO: under current regime, only deopt sharing make sense; extend later. compiler/optimizing/intrinsics_mips64.cc (5 lines): - line 113: DCHECK(out.IsRegister()); // TODO: Replace this when we support output in memory. - line 1073: bool value_can_be_null = true; // TODO: Worth finding out this information? - line 1222: bool value_can_be_null = true; // TODO: Worth finding out this information? - line 1311: // TODO: Maybe we can support range check elimination. Overall, - line 1313: // TODO: For simplicity, the index parameter is requested in a runtime/monitor.cc (5 lines): - line 416: // TODO: We should maybe check that original_owner is still a live thread. - line 471: // TODO: alternatively, we could just return the thread's name. - line 919: // TODO: Consider switching the thread state to kBlocked when we are yielding. - line 1177: // TODO: use the JNI implementation's table of explicit MonitorEnter calls and dump those too. - line 1303: // TODO: Is it an invariant that *all* open monitors are in the list? Then we could runtime/quick/inline_method_analyser.cc (5 lines): - line 486: // TODO: Support wide constants (RETURN_WIDE). - line 507: // TODO: Add handling for JIT. - line 519: // TODO: Add handling for JIT. - line 629: // TODO: Implement inlining of IGET on non-"this" registers (needs correct stack trace for NPE). - line 696: // TODO: Implement inlining of IPUT on non-"this" registers (needs correct stack trace for NPE). compiler/optimizing/load_store_elimination.cc (5 lines): - line 120: // TODO: more fine-grained array types. - line 530: // TODO: try to reuse the heap_values array from one predecessor if possible. - line 569: // TODO: remove unnecessary allocations. - line 976: // TODO: add new_instance to singleton_new_instances_ and enable allocation elimination. - line 1045: // TODO: do it right. runtime/entrypoints/quick/quick_trampoline_entrypoints.cc (5 lines): - line 1046: // TODO Maybe put this into a mirror::Class function. - line 1189: // TODO: These are all dummy values! - line 1239: // TODO: Check these! - line 1290: stack_entries_++; // TODO: have a field for pointer length as multiple of 32b - line 1560: // TODO: fix abuse of mirror types. compiler/utils/arm/assembler_arm.cc (5 lines): - line 792: LoadImmediate(out_reg.AsCoreRegister(), 0, EQ); // TODO: why EQ? - line 801: // TODO: not validating references. - line 805: // TODO: not validating references. - line 817: // TODO: place reference map on call. - line 830: // TODO: place reference map on call compiler/optimizing/register_allocator.cc (5 lines): - line 79: // TODO: compute it instead. - line 280: // TODO: We do this here because we do not want the suspend check to artificially - line 761: // TODO: Handle non-split intervals last in the work list. - line 1400: // TODO: Reuse spill slots when intervals of phis from different catch - line 1834: // TODO: Use pointers of Location inside LiveInterval to avoid doing another iteration. runtime/interpreter/interpreter_common.cc (5 lines): - line 733: // TODO: Implement the range version of invoke-lambda - line 781: // TODO: find a cleaner way to separate non-range and range information without duplicating - line 792: // TODO: if there's an assignability check, throw instead? - line 807: // TODO: find a cleaner way to separate non-range and range information without duplicating - line 887: // TODO fix thread analysis: should be SHARED_REQUIRES(Locks::mutator_lock_). compiler/optimizing/instruction_builder.cc (5 lines): - line 751: // TODO: The actual method could still be referenced in the current dex file, so we - line 753: // TODO: Remove the dex_file restriction. - line 981: // TODO: We should walk over the inlined methods, but we don't pass - line 1359: // TODO: This is rather expensive. Perf it and cache the results if needed. - line 1475: // TODO: Insert a type check node if the type is Object. runtime/transaction.cc (5 lines): - line 31: // TODO: remove (only used for debugging purpose). - line 206: // TODO we may not need to restore objects allocated during this transaction. Or we could directly - line 215: // TODO we may not need to restore array allocated during this transaction. Or we could directly - line 362: // TODO We may want to abort a transaction while still being in transaction mode. In this case, - line 502: // TODO We may want to abort a transaction while still being in transaction mode. In this case, runtime/read_barrier-inl.h (4 lines): - line 74: // The heap or the collector can be null at startup. TODO: avoid the need for this null check. - line 109: // TODO: separate the read barrier code from the collector code more. - line 143: // TODO: Reduce copy paste - line 150: // TODO: separate the read barrier code from the collector code more. runtime/java_vm_ext.cc (4 lines): - line 458: // TODO: is this useful given that we're about to dump the calling thread's stack? - line 730: // TODO: for better results we should canonicalize the pathname (or even compare - line 735: // TODO: move the locking (and more of this logic) into Libraries. - line 818: // TODO: move the locking (and more of this logic) into Libraries. runtime/class_linker.h (4 lines): - line 425: // TODO: replace this with multiple methods that allocate the correct managed type. - line 595: // set it. TODO: Consider using a lock other than classlinker_classes_lock_. - line 934: // TODO This whole default_translations thing is very dirty. There should be a better way. - line 1164: // patch point within the image. TODO: make these proper relocations. compiler/utils/arm64/assembler_arm64.cc (4 lines): - line 481: // TODO: Should we check that m_scratch is IP? - see arm. - line 508: // TODO: not validating references. - line 512: // TODO: not validating references. - line 603: // FIXME: Who sets the flags here? runtime/gc/space/rosalloc_space.cc (4 lines): - line 42: // TODO: Fix - line 78: // TODO: Fix RosAllocSpace to support Valgrind/ASan. There is currently some issues with - line 304: // TODO: NO_THREAD_SAFETY_ANALYSIS. - line 317: // TODO: NO_THREAD_SAFETY_ANALYSIS. compiler/image_writer.cc (4 lines): - line 185: // TODO: heap validation can't handle these fix up passes. - line 646: size_t offset = lock_word.ForwardingAddress(); // TODO: ForwardingAddress should be uint32_t - line 1462: // does not fail any checks. TODO: We should probably avoid copying these objects. - line 2179: // TODO: We could maybe clean this up if we stored them in an array in the oat header. imgdiag/imgdiag.cc (4 lines): - line 262: // Dump different fields. TODO: Dump field contents. - line 451: // TODO: virtual_page_idx needs to be from the same process - line 612: // TODO: Do I want to distinguish a "different" vs a "dirty" page here? - line 918: // TODO: seems useless, remove this. runtime/arch/arm/instruction_set_features_arm.cc (4 lines): - line 39: // TODO: set the SMP support based on variant. - line 75: // TODO: some of the variants below may have feature support, but that support is currently - line 77: // TODO: some of the architectures may not support all features required by ART and should be - line 222: // TODO: write an assembly LPAE support test. runtime/oat_file_assistant.h (4 lines): - line 99: // TODO: Relax this restriction? - line 281: // TODO: The OatFileAssistant probably isn't the right place to have this - line 312: // TODO: This method should belong with an image file manager, not - line 436: // TODO: The image info should probably be moved out of the oat file runtime/instrumentation.cc (4 lines): - line 351: // TODO: make this search more efficient? - line 1076: // TODO: improve the dex pc information here, requires knowledge of current PC as opposed to - line 1118: // TODO: bring back CheckStackDepth(self, instrumentation_frame, 2); - line 1132: // TODO: improve the dex pc information here, requires knowledge of current PC as opposed to runtime/mirror/class-inl.h (4 lines): - line 374: // TODO: Clean this up to use handles in the caller. - line 417: // TODO: Clean this up to use handles in the caller. - line 486: // TODO cache to improve lookup speed - line 695: // TODO: decide whether we want this check. It currently fails during bootstrap. runtime/mirror/object_array-inl.h (4 lines): - line 110: // TODO: enable this check. It fails when writing the image in ImageWriter::FixupObjectArray. - line 137: // TODO: Optimize this later? - line 181: // TODO: Optimize this later? - line 221: // TODO: use the underlying class reference to avoid uncompression when not necessary. runtime/fault_handler.cc (4 lines): - line 162: // TODO: add SIGSEGV back to the nested signals when we can handle running out stack gracefully. - line 343: // TODO: Check linear alloc and image. - line 352: // TODO: check the GC maps to make sure it's an object. - line 354: // TODO: Method might be not a heap address, and GetClass could fault. runtime/mirror/dex_cache-inl.h (4 lines): - line 44: // TODO default transaction support. - line 46: // TODO: Fine-grained marking, so that we don't need to go through all arrays in full. - line 57: // TODO default transaction support. - line 59: // TODO: Fine-grained marking, so that we don't need to go through all arrays in full. runtime/gc/heap.h (4 lines): - line 260: // TODO: NO_THREAD_SAFETY_ANALYSIS since we call this everywhere and it is impossible to find a - line 447: // TODO: element_count or byte_count? - line 526: // TODO: consider using faster data structure like binary tree. - line 575: // TODO: Refactor? runtime/mirror/object.h (4 lines): - line 502: // TODO fix thread safety analysis broken by the use of template. This should be - line 544: // TODO: Fixme when anotatalysis works with visitors. - line 571: // TODO: This can cause thread suspension and isn't moving GC safe. - line 600: uint32_t x_xpadding_; // For 8-byte alignment. TODO: get rid of this. runtime/thread_list.cc (4 lines): - line 95: // TODO: there's an unaddressed race here where a thread may attach during shutdown, see - line 144: // TODO: No thread safety analysis as DumpState with a null thread won't access fields, should - line 1128: // threads access the thread list after it is deleted. TODO: This may not work for user daemon - line 1169: // or waking up from a condition variable. TODO: Try and see if there is a better way to wait runtime/mirror/object.cc (4 lines): - line 78: // TODO: expose and use move32. - line 86: // RB. TODO: Optimize this later? - line 216: // TODO: resolve the field type for moving GC. - line 233: // TODO: resolve the field type for moving GC. runtime/debugger.h (4 lines): - line 143: // TODO rename to InstrumentationRequest. - line 189: // TODO we could use a union to hold the instrumentation_event and the method since they - line 768: // TODO rename to instrumentation_requests. - line 780: // TODO we could use an array instead of having all these dedicated counters. Instrumentation runtime/base/logging.cc (4 lines): - line 77: // TODO: Move this to a more obvious InitART... - line 94: // TODO: fall back to /proc/self/cmdline when argv is null on Linux. - line 311: // TODO: pid and tid. - line 313: // TODO: line. tools/dexfuzz/src/dexfuzz/program/mutators/NewMethodCaller.java (3 lines): - line 126: // TODO: Right now this mutator can only insert calls to System.gc() Add more! - line 165: // TODO: Handle more than just static invokes. - line 174: // TODO: More field population, when we call methods that take arguments. runtime/interpreter/interpreter.cc (3 lines): - line 38: // TODO: The following enters JNI code using a typedef-ed function rather than the JNI compiler, - line 530: // TODO: verify that assumption. - line 578: // TODO: should be tested more once b/17586779 is fixed. runtime/reflection.cc (3 lines): - line 359: // TODO: If args contain object references, it may cause problems. - line 375: // TODO: There is a compaction bug here since GetClassFromTypeIdx can cause thread suspension, - line 418: // TODO: pass the JNI function name (such as "CallVoidMethodV") through so we can call JniAbort runtime/gc/allocator/rosalloc.h (3 lines): - line 488: // TODO: DISALLOW_COPY_AND_ASSIGN(Run); - line 629: // TODO: Unprotect before checks. - line 786: // TODO: REQUIRES(Locks::mutator_lock_) compiler/oat_writer.cc (3 lines): - line 714: // TODO: Should this be a hard failure? - line 1196: // TODO: Clean up offset types. The target offset must be treated as signed. - line 1253: // TODO: Clean up offset types. compiler/jni/quick/jni_compiler.cc (3 lines): - line 108: // TODO: if cross compiling these offsets are for the host not the target - line 309: // TODO: A reverse iterator to improve readability. - line 574: // TODO: recycle value in in_reg rather than reload from handle scope runtime/base/arena_allocator.h (3 lines): - line 133: // TODO: Use std::array from C++11 when we upgrade the STL. - line 337: // TODO: Call free on ptr if linear alloc supports free. - line 356: // TODO: Change BytesAllocated to this behavior? runtime/gc/accounting/card_table-inl.h (3 lines): - line 93: // TODO: Investigate if processing continuous runs of dirty cards with a single bitmap visit is - line 174: // TODO: This is not big endian safe. - line 184: // TODO: Parallelize. runtime/jdwp/jdwp_handler.cc (3 lines): - line 201: * TODO: maintain a list of parentless thread groups in the VM. - line 1190: // TODO: we should only return classes which have the given class loader as a defining or - line 1414: // TODO: consider altering the JDWP stuff to hold the packet header compiler/optimizing/optimizing_compiler.cc (3 lines): - line 382: // TODO: Add support for other architectures and remove this function - line 546: fold2, // TODO: if we don't inline we can also skip fold2. - line 869: // TODO: This is under-approximating... runtime/lambda/closure_builder.cc (3 lines): - line 61: // TODO: needs more work to support concurrent GC - line 164: // TODO: needs more work to support concurrent GC, e.g. read barriers - line 180: // FIXME: Need to add GC support for references in a closure. runtime/gc/accounting/mod_union_table.cc (3 lines): - line 212: // TODO: Add MarkCompressedReference callback here. - line 494: // TODO: Needs better support for multi-images? b/26317072 - line 507: // TODO: Find cleaner way of doing this. compiler/optimizing/intrinsics_mips.cc (3 lines): - line 124: DCHECK(out.IsRegister()); // TODO: Replace this when we support output in memory. - line 1900: // TODO: Maybe we can support range check elimination. Overall, - line 1902: // TODO: For simplicity, the index parameter is requested in a compiler/optimizing/bounds_check_elimination.cc (3 lines): - line 1208: // TODO: would such a partitioning be worthwhile? - line 1235: // TODO: we could improve this by testing proper post-dominance, or even if this - line 1375: // TODO: remove this restriction. runtime/mirror/string.h (3 lines): - line 126: // TODO: This is only used in the interpreter to compare against - line 131: // TODO: This is only used to compare DexCache.location with - line 142: // TODO: do we need this overload? give it a more intention-revealing name. runtime/common_throws.cc (3 lines): - line 533: // TODO: We should have covered all the cases where we expect a NPE above, this - line 572: // TODO: Checks to make this a bit less brittle. - line 593: // TODO: Use String::FromModifiedUTF...? compiler/optimizing/instruction_simplifier_arm64.cc (3 lines): - line 38: // TODO: Handle this case properly in the ARM64 code generator and - line 70: // TODO: Code generation for HArrayGet and HArraySet will check whether the input address - line 107: // TODO: Handle special transformations in this situation? runtime/entrypoints/entrypoint_utils-inl.h (3 lines): - line 504: // TODO This lookup is quite slow. - line 550: // TODO We can do better than this for a (compiled) fastpath. - line 695: // TODO This lookup is rather slow. runtime/thread.h (3 lines): - line 196: // TODO: mark as PURE so the compiler may coalesce and remove? - line 1041: // TODO: does this need to atomic? I don't think so. - line 1532: // TODO: move this to more of a global offset table model to avoid per-thread duplication. runtime/gc/allocator/rosalloc.cc (3 lines): - line 884: // TODO: Investigate alternate memset since ptr is guaranteed to be aligned to 16. - line 1953: // TODO: reuse InspectAllSlots(). - line 2058: // TODO: Do this when we resurrect the page instead. patchoat/patchoat.cc (3 lines): - line 431: // TODO: installd uses --output-oat-fd. Should we change class linking logic for PIC? - line 742: // TODO: sanity check all the pointers' values - line 1165: // TODO: get rid of this. runtime/native/dalvik_system_DexFile.cc (3 lines): - line 59: // TODO: Optimize. On 32bit we can use an int array. - line 120: // TODO: rewrite to get rid of this, or change ScopedUtfChars to offer this option. - line 380: // TODO: Verify the dex location is well formed, and throw an IOException if runtime/gc/reference_processor.cc (3 lines): - line 141: // TODO: Add smarter logic for preserving soft references. The behavior should be a conditional - line 199: // TODO: Remove these locks, and use atomic stacks for storing references? - line 250: // TODO: This can cause RunFinalization to terminate before newly freed objects are runtime/stack_map.h (3 lines): - line 126: // TODO: Introduce another enum type for the surface kind? - line 1230: // TODO: Safepoint stack maps are sorted by native_pc_offset but catch stack - line 1288: // TODO: Ideally, we would like to use art::DexRegisterLocationCatalog::Size or compiler/driver/compiler_driver-inl.h (3 lines): - line 178: // TODO: for images we can elide the static storage base null check - line 340: // TODO We should be able to sharpen if we are going into the boot image as well. - line 350: // TODO We should be able to sharpen if we are going into the boot image as well. runtime/image.h (3 lines): - line 275: // TODO: Delete base parameter if it is always equal to GetImageBegin. - line 279: // TODO: Delete base parameter if it is always equal to GetImageBegin. - line 329: // TODO: We should probably insert a boot image checksum for app images. runtime/base/hash_set.h (3 lines): - line 57: // TODO: We could get rid of this requirement by using a bitmap, though maybe this would be slower - line 100: // TODO: Operator -- --(int) (and use std::bidirectional_iterator_tag) - line 350: filled = true; // TODO: Optimize runtime/gc/accounting/space_bitmap.h (3 lines): - line 125: // TODO: Use lock annotations when clang is fixed. - line 165: // TODO: Un-map the end of the mem map. - line 197: // TODO: heap_end_ is initialized so that the heap bitmap is empty, this doesn't require the -1, runtime/gc/space/bump_pointer_space.cc (3 lines): - line 106: // TODO: Not do a copy of the thread list? - line 126: // TODO: Not do a copy of the thread list? - line 198: // assume its the end. TODO: Have a thread update the header when it flushes the block? runtime/native/dalvik_system_ZygoteHooks.cc (3 lines): - line 179: // TODO: Expose buffer size, so we can also do file mode. - line 196: 0, // TODO: Expose flags. - line 199: 0); // TODO: Expose interval. runtime/indirect_reference_table.h (2 lines): - line 179: * TODO: consider a "lastDeleteIndex" for quick hole-filling when an - line 184: * TODO: may want completely different add/remove algorithms for global compiler/jit/jit_compiler.cc (2 lines): - line 108: /* pic */ true, // TODO: Support non-PIC in optimizing. - line 241: // TODO: move this to an idle phase. runtime/jdwp/jdwp.h (2 lines): - line 352: public: // TODO: fix privacy - line 369: public: // TODO: fix privacy compiler/optimizing/nodes.cc (2 lines): - line 456: // TODO: Dealing with exceptional back edges could be tricky because - line 2317: // TODO: Use the control flow to decide if this is true. runtime/monitor.h (2 lines): - line 62: NO_THREAD_SAFETY_ANALYSIS; // TODO: Reading lock owner without holding lock is racy. - line 137: // does not allow a thread suspension in the middle. TODO: maybe make this exclusive. compiler/dex/verified_method.cc (2 lines): - line 51: // TODO: move this out when DEX-to-DEX supports devirtualization. - line 121: // TODO: Putting a field index in a method reference is gross. runtime/mirror/string.cc (2 lines): - line 34: // TODO: get global references for these - line 235: // TODO: is this still true? compiler/optimizing/code_generator.cc (2 lines): - line 480: // TODO: Remove argument `code_generator_supports_read_barrier` when - line 1103: // TODO: The parallel moves modify the environment. Their changes need to be tools/dexfuzz/src/dexfuzz/executors/Executor.java (2 lines): - line 132: // TODO: Determine if dex2oat crashed? - line 195: // TODO: Remove this once host-verification can be forced to always fail? runtime/base/variant_map.h (2 lines): - line 88: // TODO: this may need to call a virtual function to support string comparisons - line 240: // TODO: move to detail, or make it more generic like a ScopeGuard(function) tools/cpplint.py (2 lines): - line 2045: _RE_PATTERN_TODO = re.compile(r'^//(\s*)TODO(\(.+?\))?:?(\s|$)?') - line 2049: """Checks for common mistakes in TODO comments. runtime/base/bit_utils.h (2 lines): - line 99: // TODO: assert unsigned. There is currently many uses with signed values. - line 106: // TODO: assert unsigned. There is currently many uses with signed values. runtime/gc/space/malloc_space.cc (2 lines): - line 145: // TODO: by removing permissions to the pages we may be causing TLB shoot-down which can be - line 184: // FIXME: Do we need reference counted pointers here? runtime/interpreter/unstarted_runtime.cc (2 lines): - line 915: // TODO: Check that this is in the heap somewhere. Otherwise we will segfault instead of - line 1162: // TODO: Consider resetting in the zygote? runtime/mirror/array.h (2 lines): - line 131: // TODO fix thread safety analysis broken by the use of template. This should be - line 136: // TODO fix thread safety analysis broken by the use of template. This should be runtime/profiler.cc (2 lines): - line 52: // TODO: this profiler runs regardless of the state of the machine. Maybe we should use the - line 731: int n = read(fd, buf, 1); // TODO: could speed this up but is it worth it? runtime/mirror/class.cc (2 lines): - line 470: // TODO These should maybe be changed to be named FindOwnedVirtualMethod or something similar - line 1035: // TODO: Move this to java_lang_Class.cc? compiler/optimizing/stack_map_stream.cc (2 lines): - line 86: // TODO: Support sharing DexRegisterMap across InlineInfo. - line 169: // TODO: Move the catalog at the end. It is currently too expensive at runtime runtime/jit/jit_code_cache.cc (2 lines): - line 96: // TODO: Make this variable? - line 632: // TODO: base this strategy on how full the code cache is? runtime/jni_env_ext-inl.h (2 lines): - line 30: // TODO: fix this to understand PushLocalFrame, so we can turn it on. - line 37: // TODO: LOG(FATAL) in a later release? runtime/os_linux.cc (2 lines): - line 66: return S_ISREG(st.st_mode); // TODO: Deal with symlinks? - line 75: return S_ISDIR(st.st_mode); // TODO: Deal with symlinks? runtime/arch/arm/quick_entrypoints_cc_arm.cc (2 lines): - line 103: // TODO: migrate into an assembly implementation as with ARM64. - line 110: // TODO: migrate into an assembly implementation as with ARM64. runtime/globals.h (2 lines): - line 96: // TODO: Remove this flag when the read barriers compiler - line 99: // TODO: Likewise, remove this flag when kForceReadBarrier is removed runtime/gc/space/image_space.cc (2 lines): - line 525: // TODO: Check the oat file validity earlier. - line 905: // TODO: Separate visitor for runtime vs normal methods. runtime/stack_map.cc (2 lines): - line 144: // TODO: Dump the stack map's inline information? We need to know more from the caller: - line 168: // TODO: Display the bit mask of live Dex registers. runtime/intern_table.cc (2 lines): - line 185: // TODO: Delete this logic? - line 400: // TODO: Disable this for app images if app images have intern tables. runtime/transaction.h (2 lines): - line 136: // TODO use JValue instead ? - line 165: // TODO use JValue instead ? runtime/mem_map.cc (2 lines): - line 140: // There is a suspicion that BacktraceMap::Create is occasionally missing maps. TODO: Investigate - line 797: // TODO: compiler/utils/swap_space.cc (2 lines): - line 112: // TODO: Smarter implementation. Global biggest chunk, ... - line 163: // TODO: Full coalescing. runtime/gc/allocation_record.h (2 lines): - line 196: // TODO: Share between alloc records with identical stack traces. - line 266: // TODO: Is there a better way to hide the entries_'s type? runtime/entrypoints/quick/quick_jni_entrypoints.cc (2 lines): - line 52: // TODO: NO_THREAD_SAFETY_ANALYSIS due to different control paths depending on fast JNI. - line 128: // TODO: NO_THREAD_SAFETY_ANALYSIS as GoToRunnable() is NO_THREAD_SAFETY_ANALYSIS runtime/gc/heap-inl.h (2 lines): - line 164: // TODO: Deprecate. - line 417: // TODO: Grow for allocation is racy, fix it. tools/dexfuzz/src/dexfuzz/DexFuzz.java (2 lines): - line 90: // TODO: Implement FuzzerFindMinimalMutations. - line 91: // TODO: Implement FuzzerGenerational. runtime/native/java_lang_Class.cc (2 lines): - line 50: // TODO: we could EnsureInitialized here, rather than on every reflective get/set or invoke . - line 185: // Performs a binary search through an array of fields, TODO: Is this fast enough if we don't use runtime/simulator/code_simulator_arm64.h (2 lines): - line 22: // TODO: make vixl clean wrt -Wshadow. - line 48: // TODO: Enable CodeSimulatorArm64 for more host ISAs once vixl::Simulator supports them. runtime/atomic.h (2 lines): - line 49: // TODO - mips64 still need this for Cas64 ??? - line 205: // TODO: Optimize? runtime/interpreter/interpreter_switch_impl.cc (2 lines): - line 118: // TODO: collapse capture-variable+create-lambda into one opcode, then we won't need - line 2375: // TODO: these allocations should not leak, and the lambda method should not be local. runtime/dex_file.h (2 lines): - line 38: // TODO: remove dependencies on mirror classes, primarily by moving - line 57: // TODO: move all of the macro functionality into the DexCache class. runtime/base/mutex-inl.h (2 lines): - line 60: // TODO: tighten this check. - line 159: // TODO: the ordering here is non-trivial as state is split across 3 fields, fix by placing cmdline/detail/cmdline_parse_argument_detail.h (2 lines): - line 383: // TODO: refactor to use LookupValue for the value lists/maps - line 468: // TODO: Obviate the need for each type specialization to hardcode the type name compiler/utils/arm64/managed_register_arm64.cc (2 lines): - line 23: // TODO: Define convention - line 76: // FIXME: Find better naming. runtime/hprof/hprof.cc (2 lines): - line 655: // TODO: It seems it would be correct to use U8. - line 669: // TODO: jhat complains "WARNING: Stack trace not found for serial # -1", but no trace should runtime/jni_env_ext.h (1 line): - line 70: // TODO: to avoid leaks (and bugs), we need to clear this vector on entry (or return) runtime/thread_linux.cc (1 line): - line 41: // TODO: We shouldn't do logging (with locks) in signal handlers. tools/dexfuzz/src/dexfuzz/fuzzers/Fuzzer.java (1 line): - line 315: // TODO: Instead, produce a list of acceptable outputs, and see if the divergent runtime/verifier/reg_type-inl.h (1 line): - line 98: // TODO: Once we have a proper "reference" super type, this needs to be extended. runtime/arch/instruction_set.h (1 line): - line 71: // TODO: Can this be 4? compiler/jni/quick/mips/calling_convention_mips.h (1 line): - line 83: // TODO: these values aren't unique and can be shared amongst instances runtime/lambda/leaking_allocator.h (1 line): - line 34: // TODO: do all of the above a/b for each callsite, and delete this class. cmdline/cmdline_result.h (1 line): - line 77: // TODO: code-generate this runtime/base/bit_vector.cc (1 line): - line 360: // TODO: collect stats on space wasted because of resize. runtime/monitor_pool.h (1 line): - line 181: // TODO: There are assumptions in the code that monitor addresses are 8B aligned (>>3). runtime/elf_file.h (1 line): - line 46: uint8_t* requested_base = nullptr); // TODO: move arg to before error_msg. runtime/gc/accounting/space_bitmap.cc (1 line): - line 148: // TODO: rewrite the callbacks to accept a std::vector rather than a mirror::Object**? compiler/driver/compiler_driver.h (1 line): - line 539: public: // TODO make private or eliminate. runtime/barrier.h (1 line): - line 35: // TODO: Maybe give this a better name. compiler/optimizing/code_generator_mips64.h (1 line): - line 55: { S0, S1, S2, S3, S4, S5, S6, S7, GP, S8, RA }; // TODO: review runtime/monitor_pool.cc (1 line): - line 140: // TODO: Exception safety? tools/dexfuzz/src/dexfuzz/program/CodeTranslator.java (1 line): - line 315: // TODO: Support ability to add extra try blocks/handlers? tools/dexfuzz/src/dexfuzz/rawdex/OffsetTracker.java (1 line): - line 42: * TODO: Perhaps it makes more sense to just reorder the offsettable_table once it's been read, runtime/arch/arm64/entrypoints_init_arm64.cc (1 line): - line 41: // TODO null entrypoints not needed for ARM64 - generate inline. runtime/jit/profiling_info.cc (1 line): - line 90: // TODO: binary search if array is too long. runtime/utils.h (1 line): - line 341: // TODO: Make this Thumb2 specific. It is benign on other architectures as code is always at compiler/jni/quick/arm/calling_convention_arm.cc (1 line): - line 173: // FIXME: Pointer this returns as both reference and long. runtime/gc/collector/sticky_mark_sweep.cc (1 line): - line 54: // TODO: Not put these objects in the mark stack in the first place. runtime/jni_internal.h (1 line): - line 28: // TODO: Can we do a better job of supporting overloading ? tools/checker/match/file.py (1 line): - line 170: # TODO: Currently does not handle multiple occurrences of the same group runtime/gc/space/large_object_space.h (1 line): - line 139: // TODO: disabling thread safety analysis as this may be called when we already hold lock_. runtime/asm_support.h (1 line): - line 43: // TODO: get a compiler that can do a proper job of loop optimization and remove this. runtime/jit/profile_saver.cc (1 line): - line 33: // TODO: read the constants from ProfileOptions, compiler/optimizing/instruction_simplifier_arm64.h (1 line): - line 61: // TODO: fragile iteration, provide more robust iterators? cmdline/cmdline_parser.h (1 line): - line 599: // TODO: also handle ignoring arguments for backwards compatibility runtime/trace.h (1 line): - line 200: // This causes the negative annotations to incorrectly have a false positive. TODO: Figure out runtime/linear_alloc.h (1 line): - line 26: // TODO: Support freeing if we add poor man's class unloading. runtime/gc/space/malloc_space.h (1 line): - line 36: // TODO: Remove define macro tools/dexfuzz/src/dexfuzz/Log.java (1 line): - line 75: // TODO: Signal sleeping threads. tools/dexfuzz/src/dexfuzz/program/mutators/FieldFlagChanger.java (1 line): - line 119: // TODO: Flip more flags? compiler/jni/quick/x86_64/calling_convention_x86_64.h (1 line): - line 78: // TODO: these values aren't unique and can be shared amongst instances compiler/dex/quick/dex_file_method_inliner.h (1 line): - line 41: * TODO: Detect short methods (at least getters, setters and empty functions) runtime/arch/x86/thread_x86.cc (1 line): - line 172: // TODO: release selectors on OS/X this is a leak which will cause ldt entries to be exhausted runtime/jit/profiling_info.h (1 line): - line 183: // TODO: Make the JIT code cache lock global. runtime/lambda/leaking_allocator.cc (1 line): - line 26: // TODO: use GetAllocatorForClassLoader to allocate lambda ArtMethod data. compiler/driver/compiled_method_storage.cc (1 line): - line 82: // TODO: More reasonable assertion. runtime/runtime_stats.h (1 line): - line 55: // TODO: failedAllocCount, failedAllocSize runtime/lambda/shorty_field_type.h (1 line): - line 37: // TODO: Refactor together with primitive.h runtime/elf.h (1 line): - line 381: // TODO: this is just a subset compiler/dex/quick/dex_file_to_method_inliner_map.h (1 line): - line 44: // TODO: There is an irregular non-scoped use of locks that defeats annotalysis with -O0. runtime/gc/space/space.cc (1 line): - line 79: // TODO: Fix this if we ever support objects not in the low 32 bit. runtime/dex_instruction_utils.h (1 line): - line 137: // TODO: Remove the #if guards below when we fully migrate to C++14. runtime/gc/space/bump_pointer_space.h (1 line): - line 130: // TODO: Change this? Mainly used for compacting to a particular region of memory. runtime/base/scoped_arena_containers.h (1 line): - line 242: // TODO: Implement debug checks, and MEMORY_TOOL support. compiler/debug/dwarf/register.h (1 line): - line 29: // TODO: Arm S0–S31 register mapping is obsolescent. tools/ahat/src/InstanceUtils.java (1 line): - line 97: // TODO: When perflib provides a better way to get the length of the runtime/dex_instruction_list.h (1 line): - line 264: V(0xF3, INVOKE_LAMBDA, "invoke-lambda", k25x, false, kIndexNone, kContinue | kThrow | kInvoke | kExperimental, kVerifyRegC /*TODO: | kVerifyVarArg*/) \ runtime/gc/accounting/card_table.cc (1 line): - line 101: // TODO: clear just the range of the table that has been modified runtime/gc/accounting/bitmap.h (1 line): - line 37: // TODO: Use this code to implement SpaceBitmap. runtime/dex_file.cc (1 line): - line 768: // TODO: avoid creating a std::string just to get a 0-terminated char array runtime/gc/space/rosalloc_space.h (1 line): - line 97: // TODO: NO_THREAD_SAFETY_ANALYSIS because SizeOf() requires that mutator_lock is held. runtime/arch/x86/fault_handler_x86.cc (1 line): - line 87: // TODO: fix the symbols for 64 bit mac - there is a double underscore prefix for some compiler/jni/quick/arm/calling_convention_arm.h (1 line): - line 81: // TODO: these values aren't unique and can be shared amongst instances runtime/arch/mips64/entrypoints_init_mips64.cc (1 line): - line 93: // TODO - use lld/scd instructions for Mips64 runtime/runtime_options.h (1 line): - line 21: #include "cmdline_types.h" // TODO: don't need to include this file here runtime/entrypoints/quick/quick_entrypoints.h (1 line): - line 53: // TODO: NO_THREAD_SAFETY_ANALYSIS due to different control paths depending on fast JNI. runtime/base/logging.h (1 line): - line 245: ~LogMessage(); // TODO: enable REQUIRES(!Locks::logging_lock_). tools/dexfuzz/src/dexfuzz/Options.java (1 line): - line 403: // TODO: Select the correct architecture. For now, just assume x86. runtime/reference_table.cc (1 line): - line 122: // TODO: enable analysis when analysis can work with the STL. compiler/utils/assembler.h (1 line): - line 372: // TODO: Implement with disassembler. compiler/jni/quick/arm64/calling_convention_arm64.h (1 line): - line 80: // TODO: these values aren't unique and can be shared amongst instances compiler/jni/quick/x86/calling_convention_x86.h (1 line): - line 84: // TODO: these values aren't unique and can be shared amongst instances runtime/gc/collector/concurrent_copying.h (1 line): - line 54: // TODO: disable thse flags for production use. runtime/entrypoints/entrypoint_utils.h (1 line): - line 164: // TODO: annotalysis disabled as monitor semantics are maintained in Java code. runtime/profiler.h (1 line): - line 251: // TODO: currently method_size_ is unused cmdline/cmdline_types.h (1 line): - line 636: // TODO: Replace with art::ProfilerOptions for the real thing. compiler/optimizing/induction_var_analysis.cc (1 line): - line 458: // TODO: other cases useful too? runtime/gc/space/region_space-inl.h (1 line): - line 227: // TODO: MutexLock on region_lock_ won't work due to lock order compiler/dex/compiler_enums.h (1 line): - line 593: kPCRelFixup, // x86 FIXME: add NEEDS_FIXUP to instruction attributes. runtime/well_known_classes.cc (1 line): - line 403: // TODO: Prioritize ordering. runtime/native/dalvik_system_VMRuntime.cc (1 line): - line 473: // TODO: http://b/11309598 This code was ported over based on the compiler/optimizing/block_builder.cc (1 line): - line 53: // TODO: Do not create block if the last instruction cannot fall through. runtime/gc/allocation_record.cc (1 line): - line 194: // TODO: Enable annotalysis. We know lock is held in constructor, but abstraction confuses compiler/compiler.cc (1 line): - line 29: // TODO: Remove Quick in options. cmdline/cmdline.h (1 line): - line 40: // TODO: Move to and remove all copies of this function. runtime/verifier/method_verifier.h (1 line): - line 95: // TODO: Once all new opcodes have implemented full verifier support, this can be removed. runtime/art_method-inl.h (1 line): - line 79: // TODO: Figure out why ASSERT_SHARED_CAPABILITY doesn't work. runtime/indirect_reference_table.cc (1 line): - line 68: // TODO: should be SHARED_REQUIRES(Locks::mutator_lock_) however annotalysis compiler/optimizing/induction_var_range.cc (1 line): - line 85: // TODO: maybe some room for improvement, like allowing widening conversions compiler/optimizing/parallel_move_resolver.cc (1 line): - line 492: // FIXME: If FreeScratchLocation() removes the location from scratches_, runtime/fault_handler.h (1 line): - line 57: // TODO: think about adding lock assertions and fake lock and unlock functions. runtime/jit/offline_profiling_info.h (1 line): - line 31: // TODO: rename file. runtime/verifier/register_line.h (1 line): - line 197: // TODO: DCHECK(reg_to_lock_depths_ == line2->reg_to_lock_depths_); runtime/thread_android.cc (1 line): - line 58: // TODO: b/18249098 The code below is broken. It uses getpriority() as a proxy for whether a compiler/jni/quick/mips64/calling_convention_mips64.h (1 line): - line 82: // TODO: these values aren't unique and can be shared amongst instances compiler/optimizing/graph_checker.cc (1 line): - line 850: // TODO: We need a data-flow analysis to determine if an input like Phi, runtime/simulator/code_simulator_arm64.cc (1 line): - line 25: // TODO: when vixl::Simulator is always available, remove the these checks. runtime/read_barrier.h (1 line): - line 40: // TODO: disable thse flags for production use. runtime/thread_pool.h (1 line): - line 149: // TODO: make this immutable/const? compiler/linker/arm/relative_patcher_arm_base.cc (1 line): - line 99: // TODO: ignore unprocessed patches targeting this method if they can reach quick_code_offset. runtime/jni_env_ext.cc (1 line): - line 103: // TODO: take 'capacity' into account. compiler/debug/elf_debug_frame_writer.h (1 line): - line 112: // FIXME: Add fp registers once libunwind adds support for them. Bug: 20491296 compiler/utils/arm64/constants_arm64.h (1 line): - line 27: // TODO: Extend this file by adding missing functionality. patchoat/patchoat.h (1 line): - line 201: // TODO: Consider using these for updating native class roots? runtime/utf-inl.h (1 line): - line 57: // TODO: What do we do about values in (U+10FFFF, U+1FFFFF) ? The runtime/art_method.cc (1 line): - line 85: // TODO: kSuper? runtime/lambda/art_lambda_method.h (1 line): - line 94: // TODO: ArtMethod, or at least the entry points should be inlined into this struct compiler/utils/arm64/assembler_arm64.h (1 line): - line 31: // TODO: make vixl clean wrt -Wshadow. runtime/native/java_lang_reflect_Constructor.cc (1 line): - line 133: // access checks anyways. TODO: Investigate if this the correct behavior. runtime/interpreter/mterp/gen_mterp.py (1 line): - line 617: # TODO: remove output files so "make" doesn't get confused cmdline/token_range.h (1 line): - line 378: // TODO: Join should probably take an offset or iterators runtime/gc/collector/semi_space.h (1 line): - line 224: // space only collection) is enabled. TODO: move these to a new file runtime/jdwp/jdwp_event.cc (1 line): - line 1215: // OLD-TODO - we currently always send both "verified" and "prepared" since compiler/optimizing/intrinsics.cc (1 line): - line 568: // TODO: Refactor DexFileMethodInliner and have something nicer than InlineMethod. compiler/dex/dex_to_dex_compiler.cc (1 line): - line 286: // TODO: support devirtualization. compiler/elf_builder.h (1 line): - line 559: // TODO: Either refactor the .eh_frame creation so that it counts towards loaded_size_, tools/generate-operator-out.py (1 line): - line 145: # TODO: check that the rhs is actually an existing value. runtime/scoped_thread_state_change.h (1 line): - line 269: // TODO: remove this constructor. It is used by check JNI's ScopedCheck to make it believe that compiler/optimizing/intrinsics_utils.h (1 line): - line 68: DCHECK(out.IsRegister()); // TODO: Replace this when we support output in memory. runtime/runtime_linux.cc (1 line): - line 157: // TODO: support non-x86 hosts (not urgent because this code doesn't run on targets). runtime/gc/space/region_space.cc (1 line): - line 347: // TODO: this is buggy. Debug it. runtime/handle_scope-inl.h (1 line): - line 37: // TODO: Figure out how to use a compile assert. tools/dexfuzz/src/dexfuzz/program/mutators/InstructionDeleter.java (1 line): - line 67: // TODO: Make this more sophisticated - right now this is to avoid problems with compiler/dex/verification_results.cc (1 line): - line 60: // TODO: Investigate why are we doing the work again for this method and try to avoid it. benchmark/jni-perf/src/JniPerfBenchmark.java (1 line): - line 27: // TODO: This might be an intrinsic. compiler/utils/assembler_test_base.h (1 line): - line 378: // TODO: Lots of error checking. runtime/jit/offline_profiling_info.cc (1 line): - line 647: // TODO: Is it OK to use the same location for both base and dex location here? compiler/dex/quick/dex_file_method_inliner.cc (1 line): - line 838: // TODO: String.length is both kIntrinsicIsEmptyOrLength and kInlineOpIGet. tools/dexfuzz/src/dexfuzz/fuzzers/FuzzerMultipleExecute.java (1 line): - line 40: // TODO: Test that all seed files execute correctly before they are mutated! compiler/optimizing/induction_var_analysis.h (1 line): - line 217: // TODO: fine tune the following data structures, only keep relevant data. runtime/handle_scope.h (1 line): - line 126: // TODO: Add more functionality. runtime/interpreter/interpreter_goto_table_impl.cc (1 line): - line 2466: // TODO: these allocations should not leak, and the lambda method should not be local.