Summary: 229 instances, 211 unique Text Count * TODO: remove non-editable CFG option 1 // TODO: factor this code a little 1 // TODO: There is a potential register allocation issue when we instrument 1 // TODO: Don't mattern match at all, but make this a deep semantic 1 // TODO: Consider throwing a custom exception, possibly created by code 1 * TODO: detect changes and recompute when necessary. 1 // TODO: Implement 1 // TODO: this is horrible. After we remove methods, we shouldn't 1 // TODO: Make this an error once all existing configurations have been 1 // TODO: Is this really safe for all virtual/interface invokes? This 1 // FIXME: This isn't deterministic. We're keeping whichever class we loaded 1 // TODO: merge this and MethodSplicer. 1 // TODO: It's not worth the goto to merge return-only blocks. What size is 1 // TODO: replace this with an annotation. 1 // TODO maybe later? If we expand to non-clinit methods, `analyze()` 1 // TODO: check for unterminated markers 1 // TODO: The test below will fail for Win32 paths. Fix later or ignore. 1 // TODO: T31388603 -- Remove unused results for true virtuals. 1 // TODO: Is it possible to recover a valid state of iterators into the CFG 1 // TODO: Handle floats and doubles via Float.floatToIntBits and 1 // TODO: Consider making those methods static if they can be renamed, 1 * of visibility but could be made static (FIXME: This flag currently seems 1 // TODO: Support load-param instruction in blocks other than the entry 1 // TODO: We should probably have an API to offer iterators into the blocks map 1 * TODO: Add a way to define a real store. 1 // @TODO - Instead of keeping track of just one group, in the future we can 1 // @TODO - Instead of only keeping one group and calculate best savings 1 * TODO (anwangster) Is method-method opt data needed? 1 // TODO: Currently not able to merge classes that only extend 1 // TODO: If we split by interaction, we could check here specifically. 1 * TODO: 1 // TODO t19478845 1 // TODO: detect the type of constant for each alias group 1 // TODO: tail call optimization (if callsite_split is a return & inline_after) 1 // TODO: Try some other variations. 2 // TODO: Instead of custom fixpoint computation using WTO, consider using the 1 // TODO: "Linking" error: Change this to an assertion failure 1 // TODO: Enable the following flag. It's off for now to ensures that the 1 * TODO: Some split blocks might not actually get dedup, as deduping checks 1 // TODO: allow static initializers that have other unrelated code 1 // TODO: inheritance? 1 // TODO: Collapse equivalent source blocks? 1 // TODO: The following loops are probably the most expensive thing in this 1 // TODO: Support ranges in ConstantPropagation instead of this one-off pass. 1 // TODO: Merge candidates that are equivalent except that one returns 1 # TODO: support 64-bit 1 // TODO: 064 hash table is different! 1 // TODO: Consider splitting all in-edges of the canonical block and 1 // TODO: Weaking across enums is technically correct, but exposes a 2 // TODO: Can merge named classes. 1 // TODO: make naming of methods smart 1 // TODO: Improve TypeInference so that we never have to deal with 1 // TODO: Make the set of excluded rules configurable. 1 "TODO: Document me!", 1 // TODO: Per-interaction stats. 1 * TODO: cover other branch type for constant values. 1 * TODO: have more robust support for above 1 and 2 2 // TODO: If the successors of the successors do not contain 1 // TODO: Share `m_config` with `optimize_enums::replace_enum_with_int` 1 * TODO: Deprecate this method and use the new version instead. 1 // TODO: Instead of just dropping all blocks in this case, do finer-grained 2 // TODO: Maybe do this? 1 // TODO: also do a similar step for type strings pool, and any empty type 1 // TODO: deep-inspect this, but doesn't seem to occur in practice 1 // TODO: Investigate error P444184021 when merging simple classes without 1 // TODO: size estimate 2 // TODO: Investigate why. Until then, disable that pass to test CSE. 1 // FIXME: Copying the outgoing throw edges isn't enough. 1 // TODO: Give up if there's exception handling. 1 // TODO: add std::string API for contains 1 // TODO: make it private and find a better way to allow code creation 1 // TODO: Does the above need to filter? Do we need to transitively close 1 // TODO: There must be a logarithmic approach to this. dmethods are sorted! 1 // TODO: Forwarding may leave behind trivial conditional branches that can 1 // TODO: Figure out a most general way of doing this. 1 // TODO: Support capturing pre-state values 1 // TODO: Deal with duplication. 1 // TODO There are elements of this is used in InstructionSequenceOutliner and 1 // TODO: This normalization optimization doesn't really belong to local-dce, 1 // TODO: Extend this (with Proguard parsing) to support the following: 1 // TODO: Remove the XML-related keep reasons 1 // TODO: Should we undo this when we are done writing the map? 1 // TODO: Find true root cause, and make this exception more targetted. 1 # TODO printing IRCode seems to crash gdb 1 // TODO: Revisit. 1 // TODO: Do better, use less. A subset and its superset can share a temp. 1 // TODO: Bridgee won't necessarily be direct once we expand this 1 * TODO: The complete solution requires some kind of call graph analysis from 1 // TODO: I saw that most often, when multiple object type demands 1 // TODO: make order based on field position if a proper annotation is 1 * TODO (anwangster) Is class-class opt data needed? 1 // TODO: We also likely need a move if there are more than 16 args 1 // TODO: Encapsulate (primary|all) dex flags under one config. 1 // TODO: Can we be even more lenient without actually deduping and 1 // TODO: Try harder. 1 // TODO: Handle not just conditional trees, but DAGs or even arbitrary 1 // TODO: (in the future) add spill here given dex constraints 1 // TODO (cnli): put back 'always_assert(m_parent->editable());' 1 // TODO: we could be redexing object some day... :) 1 * - Other minor TODO ideas in the code 1 * TODO: The method is deprecated since it doesn't delete the edges associated 1 // FIXME: I don't think this handles wides correctly 1 // TODO: Explore other (variations of this) heuristics. 1 // TODO: Is this really necessary? If so, fill in correctly. 1 // TODO (T91001948): Integrate protobuf dependency in supported platforms for 3 // TODO: Positions should be connected to instructions rather than preceding 1 // 4. Will not have any fields (TODO We could extend to support sfields) 1 // TODO: Support properly. 1 // FIXME assert if already concrete 1 // TODO: probably want the real name here. 1 // TODO: Check the orderings. 1 // TODO: Relax this. Some portions of those virtual scopes could still 1 // TODO: make sure names reported handles collisions correctly. 1 // TODO: Sort the outputs by edge type, case key, and throw index 1 * TODO: Run constant-propagation in caller, and then do callsite-specific 1 // TODO: this is a hack to fix a problem with enclosing methods only. 1 // TODO: If a whole cluster does not have IODI, we should emit base 1 // TODO: revisit for methods to be careful around Object 1 // TODO: What about no exit blocks possibly due to infinite loops? Such case 1 // TODO: Handle compiled classes. Need to read method bitmap 1 // TODO: Also check that reduced_cfg's are equivalent 1 // TODO: do we need to handle endian-ness? I think all platforms we 1 // TODO: fix the optimizations that don't track registers size correctly. 1 // TODO: For better human readability, change this to CSV of native,java? 1 * TODO: We can assume no side effect for more cases, like if it only accesses 1 // TODO: Do some careful widening. 1 // TODO: do we need to re-check linear_alloc_limit? 1 // TODO: revisit this for multiple callee call graph. 1 // TODO: Support side-effect-free instruction sequences involving 1 // TODO: walk through annotations 2 * TODO: someday, this should probably be subsumed by a more general purpose 1 // TODO: account for "close" defs and uses. See [Briggs92], section 8.7 1 * TODO: we should be able to create a new FileMap that is a subset of 1 // TODO: Analyze other common opcodes, and try to support them. 1 // TODO: More complicated version of the above. 1 // TODO: Remove this limitation imposed by symbolication infrastructure. 1 // TODO we should coalesce here too, but we'll need to avoid removing 1 static constexpr const char* default_doc() { return "TODO: Document this"; } 1 * TODO: phase out edits to the IRCode and move them all to the editable CFG 1 // TODO: filter out length zero/one states? 1 // TODO: Instead of this custom meet function, the ConstantValue should get a 2 // TODO: SUB to RSUB 2 // TODO: Consider using the SummaryGenerator to analyze AOSP classes to 1 m_external_side_effect_summaries_file, "TODO: Document me!", 1 // TODO In case of invokes, we want to show the deobfuscated name for clarity, 1 // TODO: Remove this limitation imposed by symbolication infrastructure. 1 // TODO: There are still blocking issues in instrumentation test that are 1 * TODO: It now requires inliner to inline the merge virtual methods to 1 // TODO: Are we doing something about abstract methods without any overrides 1 // TODO: We could order them instead of looping ... 1 // TODO (cnli): use editable CFG and update insert logic. 1 // TODO: Try some other variations. 1 // TODO: Make this logic cleaner when these features get enabled for non-root 1 ss << ""; // TODO: print something more informative 1 // TODO: Could be done with trampolines if we remove "final" flag from 2 // TODO: If the existing continuitions are not move-results, and the 1 // TODO: look at the abstract methods and we can lift the 1 // TODO: throws? 1 // TODO: wrapping this in json wrapper is stupid, can we use raw 1 // TODO: Assert that this never happens. IOPCODE_INIT_CLASS should never make 1 // TODO: Consider making this configurable. It represents the maximum number 1 // TODO: Handle compiled classes. Need to read method bitmap size, 1 // TODO: Remove unused profiled_methods_file option and all build system 1 // TODO: 1 // TODO: Instead of a user-defined limit, or over-approximating by default, 1 // TODO: Any integrity checks should really be in the DexOpcodeData 1 // TODO: relax the constraint that move-result-pseudo must be 1 // TODO: Consider folding the above attempts to reduce the types set 1 // TODO: This is probably the most memory hungry part of the whole building 1 // T58562665: TODO - actually update states for callsites/methodhandles 1 // TODO: We may be able to support dynamic references in overlays 1 // FIXME: this algorithm ignores real infinite loops in the block graph 1 * TODO: Derive this list with static analysis rather than hard-coding 1 * TODO: this probably need to rely on metadata to be correct. Right now it 1 // TODO: annotations? 3 // TODO: Rewrite open/write/close with C/C++ standards. But it works for now. 1 // FIXME: fix cfg's GraphInterface so this const_cast isn't necessary 1 // TODO: rewrite the following code to not require a random-access 1 * TODO: Add useful CFG editing methods 1 // TODO delete these 1 // TODO: Should we allow static finals that are initialized w/ const, 1 // TODO: more fixup here on this crapped up name/signature 2 // TODO: Refactor so that we don't have to list every single possible 1 // TODO: This needs to be adapted to sum up the predecessors. 1 // TODO: Consider using an annotation-based scheme. 1 // TODO: we should be able to relax the check above to be simply 1 * TODO: Consider integrating the full visibility check in 1 // TODO: string usage 2 // TODO: erase fopcode from map 1 // TODO: Isn't that the same as before, just this time correct w/ counting? 1 // TODO: Allow this here, but also insert a check-cast instead of a simple 1 // TODO: Need a better interface. 1 // TODO: Remove classes from scope that are exempt from checking. 1 // TODO: Make the command line -jarpath option like a colon separated 1 // TODO: Track dependencies at more fine-grained level, and use that 1 // FIXME: "Empty" blocks with only `DexPosition`s should be merged 1 # TODO don't know why we get errors like: 1 // TODO: Switch to a proper interprocedural fixpoint analysis. 1 // TODO: Use type inference to figure out required array (component) type. 1 // TODO: deep-inspect array, but likely little impact 1 // TODO: string usage (encoded_value for static fields) 1 // TODO: have load param opcodes store the actual type of the param and 1 // TODO: T31388603 -- Remove unused args for true virtuals. 3 // TODO: Support interface callees. 1 // TODO: Keep around all store dependencies and reuse when possible 1 // TODO: This code uses 0xFFFFFFFF converted to bag_set* as a sentinel value. This is bad practice. 1 // to the parent's active catch handler. TODO: Make this more precise 1 "TODO: Upgrade RuntimeAssertTransform to use cfg."); 1 // TODO: break down signature 2 * TODO: Once we have points-to information, we should expand the callgraph 1 // TODO: T62185151 - better way of applying this on CFGs 1