gpt4 book ai didi

javascript - V8 中的 Typeof 和 Expression*

转载 作者:行者123 更新时间:2023-11-30 02:40:12 25 4
gpt4 key购买 nike

我正在试验 V8 引擎。

在 V8 (full-codegen-x64.cc) 中存在用于比较类型的函数:

void FullCodeGenerator::EmitLiteralCompareTypeof(Expression* expr,
Expression* sub_expr,
Handle<String> check)

因此,例如:

   typeof Obj == "object"

然后 sub_expr 是一个 Expression 对象 带有 "typeof Obj"check 是一个 "对象”

如果可能,我如何从 Expression 对象中获取 JSObject? - 不可能(你不能。Expression 是一种语法 Andreas Rossberg)

无效FullCodeGenerator::EmitLiteralCompareTypeof我们可以检查是否:

Obj is function   __ CmpObjectType(rax, JS_FUNCTION_TYPE, rdx);
Obj is proxy function __ CmpInstanceType(rdx, JS_FUNCTION_PROXY_TYPE);
Obj is proxy __ CmpObjectType(rax, FIRST_NONCALLABLE_SPEC_OBJECT_TYPE, rdx);
and etc...

例如,如果我们将使用此代码:

__ CmpObjectType(rax, FIRST_NONCALLABLE_SPEC_OBJECT_TYPE, rdx);
__ j(equal, if_true);
then
typeof Proxy_Obj == 'string' ---> true

V8 如何知道这个?是不是意思——V8运行代码?

最佳答案

你不能。 Expression 是一段语法,JSObject 是运行时对象。他们之间绝对没有任何关系。

关于javascript - V8 中的 Typeof 和 Expression*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29102874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com