lib/VM/JSObject.cpp (21 lines): - line 196: // TODO this branch should also be used for module namespace and - line 546: // TODO: optimize this by implementing memcpy-like functionality in ArrayImpl. - line 1533: // TODO: better message. - line 1632: // TODO: better message. - line 1755: "cannot add a new property"); // TODO: better message. - line 1792: // TODO: better message. - line 1905: // TODO: better error message. - line 1931: // TODO: a better message. - line 1947: // TODO: better error message. - line 2182: // TODO: better error message. - line 2211: // TODO: better error message. - line 2226: "cannot add a new property"); // TODO: better message. - line 2269: // TODO: better error message. - line 2712: // TODO: if we check for OOM here in the future, we must undo the slot - line 2817: // TODO: this would probably be much more efficient with bitmasks. - line 2851: "property is not configurable"); // TODO: better message. - line 2861: "property is not configurable"); // TODO: better message. - line 2881: "property is not configurable"); // TODO: better message. - line 2907: "property is not configurable"); // TODO: better message. - line 2917: "property is not writable"); // TODO: better message. - line 2935: "property is not configurable"); // TODO: better message. lib/VM/JSLib/Array.cpp (11 lines): - line 431: // TODO: Get a list-separator String for the host environment's locale. - line 1410: // TODO: Implement a fast path for actual arrays. - line 1794: // TODO: Implement a fast path for actual arrays. - line 1912: // TODO: Add a fast path for actual arrays. - line 1965: // TODO: Add a fast path for actual arrays. - line 2011: // TODO: Add a fast path for actual arrays. - line 2027: // TODO: Add a fast path for actual arrays. - line 2074: // TODO: Add a fast path for actual arrays. - line 2380: // TODO: Add a fast path for actual arrays. - line 2584: // TODO: Add a fast path for actual arrays. - line 2803: // TODO: Implement a fast path for actual arrays. lib/VM/Profiler/SamplingProfilerPosix.cpp (8 lines): - line 60: // TODO: should we allow recursive style - line 151: // TODO: fix this for all GCs. - line 230: // TODO: make sampling rate configurable. - line 244: // TODO: capture leaf frame IP. - line 272: // TODO: handle BoundFunction. - line 338: // TODO: log "GC in process" meta event. - line 347: // TODO: enhance this when supporting more frame types. - line 530: // TODO: keep thread names that are still in use. lib/VM/JSLib/RegExp.cpp (6 lines): - line 189: // TODO: This is currently a wrapper around JSRegExp::create, and always creates - line 253: // TODO: right now the NewTarget can only be the RegExp constructor itself, - line 270: // TODO: right now the NewTarget can only be the RegExp constructor itself, - line 575: /// TODO: this is a wrapper around \f directRegExpExec right now, and it is - line 677: /// TODO optimization: avoid constructing the submatch array. Instead simply - line 1139: // TODO: consider writing this in JS. lib/Platform/Intl/java/com/facebook/hermes/intl/PlatformDateTimeFormatterICU.java (4 lines): - line 40: // TODO:: I can't find the right rules to mark the type of the an year part as "yearName". - line 80: // TODO:: There must be a better way to do this. - line 144: else // TODO :: Make it more tight. - line 252: // TODO : Make sure that this is not shown through the resolvedOptions tools/hbc-attribute/hbc-attribute.cpp (4 lines): - line 153: // FIXME: Some padding is not included. - line 175: // FIXME: Avoid reimplementing this logic. - line 325: // FIXME: Avoid duplicating this logic. - line 509: // TODO: Add records for the bytecode header and similar. lib/VM/Debugger/Debugger.cpp (4 lines): - line 895: // TODO: support them. For now we have an empty entry for the global scope. - line 936: // TODO: support them. - line 983: // TODO: rationalize what should happen if toString_RJS() itself throws. - line 1028: // TODO: this comes about when we break in a function before its environment utils/testsuite/esprima_test_runner.py (4 lines): - line 66: # TODO: remember to update or remove them once we update the parser. - line 75: # TODO: Flow conditionally outputs "inexact" depending on whether the parent - line 118: # TODO: is this intended in hermes or should we fix it? - line 368: # TODO: The reason Hermes fails could be different from the expected error, so lib/Platform/Intl/java/com/facebook/hermes/intl/PlatformCollatorAndroid.java (4 lines): - line 32: // TODO :: I can't find a way to set the decomposition mode. - line 45: return LOCALE; // TODO: Ad-hoc default - line 74: // TODO: setCaseLevel method is not available. Essentially, the "CASE" sensitivity won't - line 108: availableLocaleIds.add(locale.toLanguageTag()); // TODO:: Not available on platforms <= 20 lib/Platform/Intl/java/com/facebook/hermes/intl/UnicodeExtensionKeys.java (4 lines): - line 32: public static String COLLATION_CASEFIRST = "colcasefirst"; // TODO:: double check this - line 35: // TODO :: Build/Look-for a BiMap datastructure. - line 67: else return key; // TODO:: Make it tighter - line 72: else return key; // // TODO:: Make it tighter lib/Platform/Intl/java/com/facebook/hermes/intl/PlatformDateTimeFormatterAndroid.java (4 lines): - line 36: // TODO:: I can't find the right rules to mark the type of the an year part as "yearName". - line 76: // TODO:: There must be a better way to do this. - line 135: else // TODO :: Make it more tight. - line 218: availableLocaleIds.add(locale.toLanguageTag()); // TODO:: Not available on platforms <= 20 lib/VM/HiddenClass.cpp (3 lines): - line 389: // TODO: this changes the property map, so if we want to support OOM - line 655: // TODO: this can be made much more efficient at the expense of moving some - line 700: // TODO: this can be made much more efficient at the expense of moving some lib/Platform/Unicode/PlatformUnicodeLite.cpp (3 lines): - line 36: // FIXME: implement this. - line 45: // FIXME: implement this. - line 49: // FIXME: implement this. lib/Platform/Intl/java/com/facebook/hermes/intl/LocaleMatcher.java (3 lines): - line 28: // TODO:: Method take String list as argument to avoid conversions between array and list? - line 29: // TODO:: AvailableLocales list always seems to be sorted. Is it guaranteed so that we can - line 79: availableLocaleIds.add(locale.toLanguageTag()); // TODO:: Not available on platforms <= 20 lib/VM/Interpreter.cpp (3 lines): - line 428: // TODO: avoid boxing primitives unless we are calling an accessor. - line 892: // TODO: The IPs stored in the C++ callstack via this holder will generally be - line 2366: // TODO: This isLazy check is because a lazy object is reported as lib/VM/gcs/HadesGC.cpp (3 lines): - line 409: // TODO: Implement a purely CompressedPointer version of this. That will let - line 1759: // TODO: Dynamic threshold is not used in incremental mode because - line 2612: // TODO: Add more stringent criteria for turning off this flag, for instance, lib/AST2JS/AST2JS.cpp (3 lines): - line 106: // TODO: remove this catch all function to find out which visitors need to be - line 107: // TODO: defined at compile time. - line 128: // FIXME: escaping, etc? tools/hbcdump/ProfileAnalyzer.cpp (3 lines): - line 183: // TODO: share BASIC_BLOCK_STAT_VERSION with VM. - line 584: // TODO: show overflow block stats as well. - line 684: // TODO: check each individual basic block's range instead of function. lib/Platform/Unicode/PlatformUnicodeEmscripten.cpp (3 lines): - line 48: // FIXME: implement this. - line 57: // FIXME: implement this. - line 61: // FIXME: implement this. lib/VM/Runtime.cpp (3 lines): - line 127: // TODO (T84179835): Disable this once it is no longer useful for debugging. - line 1216: // TODO: Predefine each error message. - line 2011: // TODO: allow a vector of callbacks. lib/BCGen/HBC/ISel.cpp (3 lines): - line 462: // TODO: optimize the case for null check. - line 466: // TODO: optimize the case for null check. - line 750: // TODO: Utilize sizeHint. include/hermes/VM/AlignedHeapSegment.h (3 lines): - line 33: // TODO (T25527350): Debug Dump - line 34: // TODO (T25527350): Heap Moving - line 359: // TODO: Is there a portable way of expressing this in the preprocessor? unittests/VMRuntime/OperationsTest.cpp (3 lines): - line 258: // TODO: Test Object equality once Runtime::interpretFunction() is written. - line 493: // TODO: Test Object toString once Runtime::interpretFunction() is written. - line 654: // TODO: Test Object toNumber once Runtime::interpretFunction() is written. lib/IRGen/ESTreeIRGen.cpp (3 lines): - line 58: // TODO: a little more aggressive constant folding. - line 622: // TODO: use "thisArg" when builtins get fixed to support it. - line 629: // FIXME: use the builtin value of @@iterator. Symbol could have been lib/VM/JSError.cpp (3 lines): - line 627: // TODO: find a way to track the bytecode modules explicitly. - line 628: // TODO: we do not yet have a way of getting the file name separate from - line 697: // TODO: truncate traces? Support Error.stackTraceLimit? lib/Platform/Intl/java/com/facebook/hermes/intl/PlatformNumberFormatterICU.java (3 lines): - line 281: // TODO:: There must be a better way to do this. - line 361: == UNIT)) { // TODO :: Note sure whether the compact notation makes sense for other - line 407: availableLocaleIds.add(locale.toLanguageTag()); // TODO:: Not available on platforms <= 20 include/hermes/VM/Profiler/SamplingProfilerPosix.h (3 lines): - line 49: /// TODO: consolidate the stack frame struct with other function/extern - line 78: // TODO: figure out how to store BoundFunction. - line 79: // TODO: Should we do something special for NativeConstructor? unsupported/juno/crates/juno/src/gen_js.rs (2 lines): - line 29: /// FIXME: This currently only returns an empty SourceMap. - line 226: // FIXME: Pass in file name here. lib/IRGen/ESTreeIRGen-stmt.cpp (2 lines): - line 810: // TODO: Support class declarations once we support class IRGen. - line 867: // TODO: Support default class declarations once we support class IRGen. lib/VM/StackTracesTree.cpp (2 lines): - line 122: // TODO: This leaves an extra global call frame that doesn't make any - line 225: // TODO: Getting the name in this way works in most cases, but not for things tools/node-hermes/nodelib/internal/streams/destroy.js (2 lines): - line 335: } // TODO: Remove isRequest branches. - line 348: // TODO: Don't lose err? lib/BCGen/RegAlloc.cpp (2 lines): - line 149: // TODO: the code used to perform a stricter check which missed some cases. - line 150: // TODO: need to come up with a better condition. lib/VM/Profiler/ChromeTraceSerializerPosix.cpp (2 lines): - line 97: // TODO: get the real process name. - line 242: // TODO: find a way to get host function name out of include/hermes/VM/Runtime.h (2 lines): - line 322: /// TODO: do something when there is an uncaught exception, e.g. print - line 553: /// TODO: Delete this function once all callers are replaced with unittests/API/SynthTraceTest.cpp (2 lines): - line 942: // TODO (T28293178) Remove this once exceptions are supported. - line 959: // TODO (T28293178) Remove this once exceptions are supported. lib/VM/JSProxy.cpp (2 lines): - line 1075: // TODO could be HermesValue - line 1112: // TODO could be HermesValue lib/Parser/JSParserImpl-ts.cpp (2 lines): - line 1196: // TODO: Parse modifiers. - line 1203: // TODO: Parse initializer. lib/VM/JSLib/String.cpp (2 lines): - line 1453: // TODO: good candidate for Boyer-Moore on large needles/haystacks - line 1454: // TODO: good candidate for memchr on length-1 needles lib/CompilerDriver/CompilerDriver.cpp (2 lines): - line 1593: // TODO: use sourceMapTranslator for CJS module. - line 2151: // TODO: support multiple JS sources from command line. unsupported/juno/crates/juno/src/sema/resolver.rs (2 lines): - line 414: // TODO: Share the global AST node and scope between calls to `visit_module` to avoid - line 1116: // TODO: It can be possible to avoid setting this flag if the variable is shadowed lib/Support/SourceErrorManager.cpp (2 lines): - line 359: // TODO: optimize this with caching, etc. - line 604: // TODO: bravely teach buildSourceAndCaretLine to use wcwidth(), lifting this lib/Platform/Intl/java/com/facebook/hermes/intl/PlatformCollatorICU.java (2 lines): - line 49: return LOCALE; // TODO: Ad-hoc default - line 147: availableLocaleIds.add(locale.toLanguageTag()); // TODO:: Not available on platforms <= 20 lib/IR/IRVerifier.cpp (2 lines): - line 118: // TODO: Need to make this accept format strings - line 244: // TODO: Verify the instruction is valid, need switch/case on each include/hermes/VM/Profiler/ChromeTraceSerializerPosix.h (2 lines): - line 11: // TODO: Remove dependency on SamplingProfilerPosix from ChromeTraceSerializer. - line 117: // TODO: get real cpu id. lib/VM/JSLib/TypedArray.cpp (2 lines): - line 512: // TODO: This could be implemented via a directional copy which either - line 1550: // TODO: Get a list-separator String for the host environment's locale. tools/hermes/repl.cpp (1 line): - line 286: // TODO: Handle other classes of recoverable errors. include/hermes/VM/Interpreter.h (1 line): - line 172: // Hack: if we are already debugging, do nothing. TODO: in the event that we lib/Parser/JSParserImpl.cpp (1 line): - line 4908: // TODO: Account for generator methods in SpecialMethod here. lib/Platform/Unicode/java/com/facebook/hermes/unicode/AndroidUnicodeUtils.java (1 line): - line 16: // TODO: use com.facebook.common.locale.Locales.getApplicationLocale() as the current locale, lib/Regex/Executor.cpp (1 line): - line 1257: // TODO: this can be optimized by hoisting the branches out of the unittests/VMRuntime/GCSanitizeHandlesTest.cpp (1 line): - line 10: // TODO (T25686322): In non-Malloc GCs, handle sanitization doesn't fully move lib/VM/JSLib/Intl.cpp (1 line): - line 22: // TODO T65916424: Move this out of the hermes::vm namespace. lib/VM/JSLib/GlobalObject.cpp (1 line): - line 768: // TODO T65916424: Consider how we can move this somewhere more modular. lib/Optimizer/Scalar/Inlining.cpp (1 line): - line 66: // TODO: we can't deal with changing the scope depth of functions yet. lib/VM/Operations.cpp (1 line): - line 445: // FIXME: May be inaccurate for some hex values. lib/FlowParser/FlowParser.cpp (1 line): - line 57: // TODO: this probably indicates an error. There is no "undefined" in JSON. lib/Support/JSONEmitter.cpp (1 line): - line 199: // Allow the top-level value to be set. TODO: guard against multiple tools/node-hermes/nodelib/internal/stream_base_commons.js (1 line): - line 109: } // TODO (ronag): This should be moved before if(stream.destroyed) tools/hermes-parser/js/hermes-transform/src/transform/mutations/ReplaceNode.js (1 line): - line 52: // TODO: maybe add some runtime checks based on codegenned predicates? include/hermes/VM/WeakValueMap.h (1 line): - line 26: /// TODO: this is wasteful in terms of code size because it will be lib/Optimizer/Wasm/WasmSimplify.cpp (1 line): - line 94: // TODO: handle other binary operations. include/hermes/VM/StringPrimitive.h (1 line): - line 261: // TODO: Deal with different subclasses (e.g. rope) tools/hermes-parser/js/scripts/utils/tempCustomASTDefs.js (1 line): - line 30: * TODO: Change babel to use the Hermes AST format so this is no longer needed. include/hermes/VM/JSLib/DateUtil.h (1 line): - line 103: /// TODO: Cache this value to avoid recomputing every time. lib/Platform/Intl/java/com/facebook/hermes/intl/NumberFormat.java (1 line): - line 183: // TODO :: Make it more robust. tools/hermes-parser/js/hermes-transform/src/transform/comments/prettier/main/comments.js (1 line): - line 171: // TODO: Make this as default behavior lib/Platform/Unicode/CharacterProperties.cpp (1 line): - line 125: // TODO: if range is ASCII and unicode is not set, we can stop the search unsupported/tools/rustgen/rustgen.cpp (1 line): - line 104: // FIXME: obviously this is just an ugly hardcoded hack. lib/BCGen/HBC/SimpleBytecodeBuilder.cpp (1 line): - line 38: // TODO: There is a fair amount of logic duplication between this function npm/create-npms.js (1 line): - line 49: // TODO: Handle globs include/hermes/VM/CardTableNC.h (1 line): - line 166: /// TODO (T26751833) figure out if this is a performance problem, and do include/hermes/VM/GCBase.h (1 line): - line 1320: /// TODO: Implement this for heaps other than GenGC tools/node-hermes/nodelib/timers.js (1 line): - line 83: // TODO: Long-term this could instead be handled by creating an internal tools/hermes-parser/js/scripts/utils/aliases.js (1 line): - line 20: * TODO: cmake/modules/Hermes.cmake (1 line): - line 43: elseif (MINGW) # FIXME: Also cygwin? include/hermes/VM/HeapSnapshot.h (1 line): - line 50: /// TODO: This format currently does not preserve perfect information, for lldb/Stack.py (1 line): - line 89: # TODO: Verify the result is string type. lib/Platform/Intl/java/com/facebook/hermes/intl/PlatformNumberFormatterAndroid.java (1 line): - line 199: availableLocaleIds.add(locale.toLanguageTag()); // TODO:: Not available on platforms <= 20 include/hermes/Regex/Regex.h (1 line): - line 124: // TODO: add validation for the loop and reduce the size of loopCount_ to tools/hermes-parser/js/hermes-transform/src/transform/MutationContext.js (1 line): - line 20: // TODO - do we care about this? Arrays are pretty safe to concurrently mutate lib/VM/JSLib/JSLibInternal.h (1 line): - line 539: // TODO T65916424: Consider how we can move this somewhere more modular. tools/node-hermes/nodelib/internal/streams/end-of-stream.js (1 line): - line 55: }; // TODO (ronag): Improve soft detection to include core modules and lib/BCGen/HBC/BytecodeFormConverter.cpp (1 line): - line 116: // TODO: this logic of finding overflow headers is duplicated here and in tools/hdb/hdb.cpp (1 line): - line 431: // TODO: Improve error reporting here. API/hermes/TraceInterpreter.cpp (1 line): - line 234: // TODO (T31512967): Prune unused defs. lib/VM/SegmentedArray.cpp (1 line): - line 123: // TODO T25663446: This is potentially optimizable to iterate over the inline lib/Parser/JSLexer.cpp (1 line): - line 2139: /// TODO: this has to be implemented properly. lib/IRGen/ESTreeIRGen-func.cpp (1 line): - line 562: // FIXME: T42569352 TDZ for parameters used in initializer expressions. include/hermes/VM/CodeBlock.h (1 line): - line 103: /// TODO: it would be nice to have this return a unique_ptr with a custom include/hermes/IR/Instrs.h (1 line): - line 1357: // TODO: refine this type annotation to "array" ?. include/hermes/SourceMap/SourceMap.h (1 line): - line 156: // TODO: more sophisticated path concat handling. include/hermes/VM/JSArray.h (1 line): - line 339: // TODO: optimize this now that we know the index of the property slot. unittests/VMRuntime/ObjectModelTest.cpp (1 line): - line 394: // TODO: enable this when Runtime::raiseTypeError() is implemented. unsupported/juno/crates/juno_support/src/nullbuf.rs (1 line): - line 27: // TODO: this is an extremely naive implementation, it can be optimized in multiple ways: unittests/API/APITest.cpp (1 line): - line 440: // TODO mhorowitz: move this to jsi/testlib.cpp once we have impls for all VMs unsupported/juno/crates/juno/src/sourcemap.rs (1 line): - line 16: /// TODO: Add support for other sourcemap metadata fields such as `metadata` and `sourcesContent`. include/hermes/Parser/JSLexer.h (1 line): - line 1037: // TODO: clearly this has to be optimized somehow lib/VM/JSLib/HermesInternal.cpp (1 line): - line 864: // TODO: we can't make HermesInternal.concat a static builtin method now lib/Regex/RegexParser.cpp (1 line): - line 908: // TODO: disallow "UnicodeIDContinue". lib/VM/Runtime-profilers.cpp (1 line): - line 122: /// TODO: Record line:col for inner functions. lib/VM/JSLib/DateUtil.cpp (1 line): - line 656: // TODO: Make this something other than empty string. API/jsi/jsi/jsi.h (1 line): - line 459: /// TODO T40778724: this is a limited implementation sufficient for lib/SourceMap/SourceMapGenerator.cpp (1 line): - line 166: // TODO: Handle name index lib/VM/JSRegExp.cpp (1 line): - line 335: // TODO nice to have: don't do this if we are in square brackets. lib/Optimizer/Scalar/CodeMotion.cpp (1 line): - line 141: // TODO: If there is a header but no preheader, we can just create one. This lib/IRGen/ESTreeIRGen-expr.cpp (1 line): - line 886: // TODO (T46136220): Set the .name property for anonymous functions that lib/Platform/Intl/java/com/facebook/hermes/intl/LocaleResolver.java (1 line): - line 36: // TODO :: Avoid fetching the available locales array in the preceeding code when best-fit lib/VM/JSLib/eval.cpp (1 line): - line 89: // TODO: pass a sourceURL derived from a '//# sourceURL' comment. lib/VM/Callable.cpp (1 line): - line 330: // TODO: look into doing this lazily. lib/IR/IRBuilder.cpp (1 line): - line 197: // FIXME: use proper language semantics. lib/VM/gcs/MallocGC.cpp (1 line): - line 390: // TODO: MallocGC doesn't yet support credit/debit external memory, so lib/VM/JSLib/Number.cpp (1 line): - line 348: // TODO: Format string according to locale. tools/hbc-deltaprep/hbc-deltaprep.cpp (1 line): - line 58: // TODO: switch to WritableMemoryBuffer after updating LLVM. Or use mmap() lib/Platform/Intl/java/com/facebook/hermes/intl/LocaleObjectAndroid.java (1 line): - line 258: // Remove all existing values .. TODO:: Double check whether this is correct, i.e. double check lib/SourceMap/SourceMapParser.cpp (1 line): - line 161: // TODO: assert pCur equals to pSegEnd. lib/Optimizer/Scalar/InstSimplify.cpp (1 line): - line 560: // TODO: handle other kinds of instructions.