[+v8-users, chromium-dev to BCC] There is no single bottleneck for JS object allocation; objects are created all over the place. As a starting point, you can look at all CodeStubAssembler::AllocateJS* and Factory::NewJS* functions. I don't know whether that set spans all JS object allocations, but at least it covers a fair bunch of them. Turbofan is a separate story, but I assume you're turning that off for your experiment.
On Mon, Sep 9, 2019 at 6:27 PM L TY <n0b0dy...@gmail.com> wrote: > Hello guys, I'm trying to do taint analysis in v8 with its ignition > interpreter. I want to be noticed whenever a JS object is allocated. > However, I cannot find the object allocation code in the interpreter. > > Currently I have located the v8 bytecode generating process such as the > code following: > > void BytecodeGenerator > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.h?l=32&ct=xref_jump_to_def&gsn=BytecodeGenerator>::VisitDeclarations > > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.cc?l=1466&gs=kythe%253A%252F%252Fchromium.googlesource.com%252Fchromium%252Fsrc%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fv8%252Fsrc%252Finterpreter%252Fbytecode-generator.cc%2523P5FSO7mrsdfZYIjAqLPKt_CmBkat5yCXPcFLX1SqQJE&gsn=VisitDeclarations&ct=xref_usages>(Declaration > > <https://cs.chromium.org/chromium/src/v8/src/ast/ast.h?l=433&ct=xref_jump_to_def&gsn=Declaration>::List > > <https://cs.chromium.org/chromium/src/v8/src/ast/ast.h?l=435&ct=xref_jump_to_def&gsn=List>* > declarations > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.cc?l=1466&gs=kythe%253A%252F%252Fchromium.googlesource.com%252Fchromium%252Fsrc%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fv8%252Fsrc%252Finterpreter%252Fbytecode-generator.cc%2523WM8jje9_OZGREFVXG4hf0IpD58ex-uoFv1m-bGQHJ4I&gsn=declarations&ct=xref_usages>) > { > RegisterAllocationScope > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.cc?l=554&ct=xref_jump_to_def&gsn=RegisterAllocationScope> > register_scope > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.cc?l=1467&gs=kythe%253A%252F%252Fchromium.googlesource.com%252Fchromium%252Fsrc%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fv8%252Fsrc%252Finterpreter%252Fbytecode-generator.cc%2523qUiRb6k8cuPegbelxQ5PlNzmnM2GNOMRU_JyMjYzFlo&gsn=register_scope&ct=xref_usages>(this); > DCHECK > <https://cs.chromium.org/chromium/src/v8/src/base/logging.h?l=93&ct=xref_jump_to_def&gsn=DCHECK>(globals_builder > > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.h?l=464&ct=xref_jump_to_def&gsn=globals_builder>()->empty > > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.cc?l=793&ct=xref_jump_to_def&gsn=empty>()); > for (Declaration > <https://cs.chromium.org/chromium/src/v8/src/ast/ast.h?l=433&ct=xref_jump_to_def&gsn=Declaration>* > decl > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.cc?l=1469&gs=kythe%253A%252F%252Fchromium.googlesource.com%252Fchromium%252Fsrc%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fv8%252Fsrc%252Finterpreter%252Fbytecode-generator.cc%2523yarGfNOEsIE3jzyylaoF607ViOYxJEbH2n_M15sdDgA&gsn=decl&ct=xref_usages> > : > <https://cs.chromium.org/chromium/src/v8/src/base/threaded-list.h?l=130&ct=xref_jump_to_def&gsn=:> > * > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.cc?l=1469&gs=kythe%253A%253Flang%253Dc%25252B%25252B%2523f0GaZvzYUIhYZNEwI3CSsdSOJlQntzZvgWNH3y70ub8&gsn=*&ct=xref_usages>declarations > > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.cc?l=1466&ct=xref_jump_to_def&gsn=declarations>) > { > RegisterAllocationScope > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.cc?l=554&ct=xref_jump_to_def&gsn=RegisterAllocationScope> > register_scope > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.cc?l=1470&gs=kythe%253A%252F%252Fchromium.googlesource.com%252Fchromium%252Fsrc%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fv8%252Fsrc%252Finterpreter%252Fbytecode-generator.cc%2523eVaKCzpR00P-EqMmRz8Xq-cqN7oD0kvEHqhZNdTAAdE&gsn=register_scope&ct=xref_usages>(this); > Visit > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.h?l=164&ct=xref_jump_to_def&gsn=Visit>(decl > > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.cc?l=1469&ct=xref_jump_to_def&gsn=decl>); > } > if (globals_builder > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.h?l=464&ct=xref_jump_to_def&gsn=globals_builder>()->empty > > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.cc?l=793&ct=xref_jump_to_def&gsn=empty>()) > return; > > globals_builder > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.h?l=464&ct=xref_jump_to_def&gsn=globals_builder>()->set_constant_pool_entry > > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.cc?l=786&ct=xref_jump_to_def&gsn=set_constant_pool_entry>( > builder > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.h?l=437&ct=xref_jump_to_def&gsn=builder>()->AllocateDeferredConstantPoolEntry > > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-array-builder.cc?l=1541&ct=xref_jump_to_def&gsn=AllocateDeferredConstantPoolEntry>()); > int encoded_flags > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.cc?l=1477&gs=kythe%253A%252F%252Fchromium.googlesource.com%252Fchromium%252Fsrc%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fv8%252Fsrc%252Finterpreter%252Fbytecode-generator.cc%2523Z4LoK_1Qtq7_W-a-qGEfMs8aQMtg4PJoDu2vT0LMuBQ&gsn=encoded_flags&ct=xref_usages> > = DeclareGlobalsEvalFlag > <https://cs.chromium.org/chromium/src/v8/src/runtime/runtime.h?l=781&ct=xref_jump_to_def&gsn=DeclareGlobalsEvalFlag>::encode > > <https://cs.chromium.org/chromium/src/v8/src/utils/utils.h?l=344&ct=xref_jump_to_def&gsn=encode>(info > > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.h?l=440&ct=xref_jump_to_def&gsn=info>()->is_eval > > <https://cs.chromium.org/chromium/src/v8/src/codegen/unoptimized-compilation-info.h?l=41&ct=xref_jump_to_def&gsn=is_eval>()); > > // Emit code to declare globals. > RegisterList > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-register.h?l=99&ct=xref_jump_to_def&gsn=RegisterList> > args > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.cc?l=1480&gs=kythe%253A%252F%252Fchromium.googlesource.com%252Fchromium%252Fsrc%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fv8%252Fsrc%252Finterpreter%252Fbytecode-generator.cc%2523FWbt9eYQwC-lmzdlml1fpqXkWMENcyjgDr6amZ8WPL8&gsn=args&ct=xref_usages> > = register_allocator > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.h?l=460&ct=xref_jump_to_def&gsn=register_allocator>()->NewRegisterList > > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-register-allocator.h?l=45&ct=xref_jump_to_def&gsn=NewRegisterList>(3); > builder > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.h?l=437&ct=xref_jump_to_def&gsn=builder>() > ->LoadConstantPoolEntry > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-array-builder.cc?l=583&ct=xref_jump_to_def&gsn=LoadConstantPoolEntry>(globals_builder > > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.h?l=464&ct=xref_jump_to_def&gsn=globals_builder>()->constant_pool_entry > > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.cc?l=781&ct=xref_jump_to_def&gsn=constant_pool_entry>()) > .StoreAccumulatorInRegister > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-array-builder.cc?l=678&ct=xref_jump_to_def&gsn=StoreAccumulatorInRegister>(args > > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.cc?l=1480&ct=xref_jump_to_def&gsn=args>[ > > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-register.h?l=114&ct=xref_jump_to_def&gsn=%5B>0]) > .LoadLiteral > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-array-builder.cc?l=589&ct=xref_jump_to_def&gsn=LoadLiteral>(Smi > > <https://cs.chromium.org/chromium/src/v8/src/objects/smi.h?l=23&ct=xref_jump_to_def&gsn=Smi>::FromInt > > <https://cs.chromium.org/chromium/src/v8/src/objects/smi.h?l=49&ct=xref_jump_to_def&gsn=FromInt>(encoded_flags > > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.cc?l=1477&ct=xref_jump_to_def&gsn=encoded_flags>)) > .StoreAccumulatorInRegister > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-array-builder.cc?l=678&ct=xref_jump_to_def&gsn=StoreAccumulatorInRegister>(args > > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.cc?l=1480&ct=xref_jump_to_def&gsn=args>[ > > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-register.h?l=114&ct=xref_jump_to_def&gsn=%5B>1]) > .MoveRegister > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-array-builder.cc?l=691&ct=xref_jump_to_def&gsn=MoveRegister>(Register > > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-register.h?l=21&ct=xref_jump_to_def&gsn=Register>::function_closure > > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-register.cc?l=49&ct=xref_jump_to_def&gsn=function_closure>(), > args > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.cc?l=1480&ct=xref_jump_to_def&gsn=args>[ > > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-register.h?l=114&ct=xref_jump_to_def&gsn=%5B>2]) > .CallRuntime > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-array-builder.cc?l=1446&ct=xref_jump_to_def&gsn=CallRuntime>(Runtime > > <https://cs.chromium.org/chromium/src/v8/src/runtime/runtime.h?l=649&ct=xref_jump_to_def&gsn=Runtime>::kDeclareGlobals > > <https://cs.chromium.org/chromium/src/v8/src/runtime/runtime.h?l=654&ct=xref_jump_to_def&gsn=kDeclareGlobals>, > args > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.cc?l=1480&ct=xref_jump_to_def&gsn=args>); > > // Push and reset globals builder. > global_declarations_ > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.h?l=498&ct=xref_jump_to_def&gsn=global_declarations_>.push_back > > <https://cs.chromium.org/chromium/src/buildtools/third_party/libc%2B%2B/trunk/include/vector?l=1651&ct=xref_jump_to_def&gsn=push_back>(globals_builder > > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.h?l=464&ct=xref_jump_to_def&gsn=globals_builder>()); > globals_builder_ > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.h?l=496&ct=xref_jump_to_def&gsn=globals_builder_> > = new > <https://cs.chromium.org/chromium/src/v8/src/zone/zone.h?l=143&ct=xref_jump_to_def&gsn=new> > (zone > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.h?l=438&ct=xref_jump_to_def&gsn=zone>()) > GlobalDeclarationsBuilder > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.cc?l=730&ct=xref_jump_to_def&gsn=GlobalDeclarationsBuilder>(zone > > <https://cs.chromium.org/chromium/src/v8/src/interpreter/bytecode-generator.h?l=438&ct=xref_jump_to_def&gsn=zone>()); > } > > > But I cannot find the object allocation process. Can you guys give me some > advice about it? > -- -- v8-users mailing list v8-users@googlegroups.com http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/v8-users/CAKSzg3QXUB7D9xUipbJpZQDELiCLYfjCBhY%3DZ4K0juGyjFxYyg%40mail.gmail.com.