草庐IT

v8-profiler

全部标签

javascript - 为什么在 v8 源的 JS 文件中一些函数调用前面有一个 %?

我在很多代码中看到了%。您能向我解释一下它的用途或作用吗?编辑:我知道数学中的操作数13%10=3但我看到的是return%foo。在浏览v8sourcefiles时遇到了这个问题为什么一些函数调用前面有%符号?%CheckIsBootstrapping();//---//Onlyusedbyasync-await.jsfunctionRejectPromise(promise,reason,debugEvent){%PromiseReject(promise,reason,debugEvent);}//---varcallbacks=%create_resolving_functio

javascript - 从 v8 shell 使用 stringify

我正在创建一个基于v8shell的控制台,我采用了v8附带的示例代码并且它运行良好,但我正在尝试将v8::object转换为它的字符串版本(json)但是没有找到办法。这是我在shell.cc中的示例代码:v8::Handletest(constv8::Arguments&args){v8::HandleScopehandle_scope;constchar*json;v8::String::Utf8ValuestrJson(args[0]);printf(ToCString(json));if(args[0]->IsObject()){printf("it'sanobject\n")

javascript - 如何禁用 V8 的优化编译器

我正在编写一个恒定时间的字符串比较函数(用于node.js),并且想为这个单一函数禁用V8的优化编译器;使用命令行标志是不可能的。我知道使用with{}(或try/catch)block将禁用优化编译器现在,但我担心这个“功能”(bug)将在未来的版本中修复。是否有一种不可变的(并记录在案的)方法来禁用V8的优化编译器?示例函数:functionconstantTimeStringCompare(a,b){//Byaddinga`with`blockhere,wedisablev8'soptimizingcompiler.//UsingObject.create(null)ensure

javascript - 使用 Google Chrome (V8) 时,Javascript 可以被视为一种解释型语言吗?

我正在阅读这篇关于V8的优秀文章,Google的Javascript引擎:https://developers.google.com/v8/design#mach_code.有一次,他们说Javascript直接编译成机器语言,没有任何字节码或解释器。引用:V8compilesJavaScriptsourcecodedirectlyintomachinecodewhenitisfirstexecuted.Therearenointermediatebytecodes,nointerpreter.那么,为什么Javascript仍然与“脚本”和“解释”语言一起列出,虽然它已明确编译(至少

javascript - nodejs/V8 是否将编译后的机器代码存储在磁盘上的任何位置?

编辑:自Node8.3起,Node使用字节码,在此之前,源代码直接编译为机器码。我做了很多Python编码,.pyc文件中总是有字节码。我想知道Node是否将其机器代码存储在类似的文件中,例如,将机器代码表示形式保留在磁盘上并在文件源未更改的情况下重新使用它是否有意义。如果是这样,node/v8将机器代码存储在哪里?编辑2:正如@dystroy在下面提到的,这是对HowcanIseethemachinecodegeneratedbyv8?的欺骗。 最佳答案 V8在2016年引入了字节码解释器Ignition。您可以使用--print

javascript - V8 Javascript 堆转储模式

我正在尝试了解由googlechrome工具生成的堆转储的内容。我知道已经有一个浏览器内堆转储检查器,但我有兴趣编写一个解析JS堆转储的CLI作为练习。我无法找到有关堆转储内容结构的任何文档。它们是人类可读的,但从检查文件来看格式不是很清楚这是一个随机片段:"HTMLOptionElement","XMLHttpRequestEventTarget","about:blank","clearModifier","resetModifiers","/devtools/docs/demos/memory/example1","HTMLIFrameElement","https://www.

javascript - 护照-facebook-token 返回 InternalOAuthError : Failed to fetch user profile when verifying the token

我有一个iOS应用程序,我在其中使用FacebookAPI进行登录,我得到一个访问token作为响应。现在我想使用此token在我的后端服务器上对用户进行身份验证。我正在为Passport.js使用passport-facebook-token策略。varFacebookTokenStrategy=require('passport-facebook-token');module.exports=function(app){app.use(passport.initialize());app.use(passport.session());passport.use(newFaceboo

javascript - 属于单个隔离的多个 V8 上下文对象之间的共享/离散是什么?

我理解v8::Isolate的概念,并且我理解运行的所有内容都在与隔离关联的v8::Context中运行。与不同isolate关联的上下文不能共享任何内容。我的问题是,在单个隔离中有多个上下文是什么意思?上下文之间共享什么?它们之间有什么离散的?你什么时候可以在一个中制作一些东西并在另一个中使用它?通常在API中,如果某些东西在创建它时采用隔离或上下文,这似乎几乎是任意的。此外,欢迎就单个隔离中的多个上下文的用例提出任何建议,以帮助我开始更好地理解它们。我看到这个问题:Whatexactlyisthedifferencebetweenv8::Isolateandv8::Context?

javascript - 操纵 V8 ast

我打算直接在v8代码中实现一个js代码覆盖。我最初的目标是为抽象语法树中的每个语句添加一个简单的打印。我看到有一个AstVisitor类,它允许您遍历AST。所以我的问题是如何在访问者当前访问的语句之后向AST添加语句? 最佳答案 好的,我将总结我的实验。首先,我写的内容适用于V8,因为它在Chromium版本r157275中使用,因此可能不再有效-但我仍然会链接到当前版本中的位置。如前所述,您需要自己的AST访问者,例如MyAstVisior,它继承自AstVisitor并且必须实现一堆VisitXYZ那里的方法。唯一需要检测/检

V8 上的 JavaScript 测试

functionadd(x,y){returnx+y;}console.time("time1");for(vari=0;i结果是:时间1:1481毫秒,time2:102ms,我在nodejs上运行这个测试,但我不知道为什么第一个测试比第二个慢。 最佳答案 这是因为参数类型更改导致引擎盖下发生了去优化。要知道这一点,我们必须知道优化V8做了什么:内联这是一项重要的优化,对于性能提升至关重要。它用函数体代替函数调用以加速执行。如果一个函数的大小很小,它将被内联。这假设在函数调用中,参数是固定的。去优化V8在某些假设下进行优化。如果错