V8 to achieve '==' and '==='

FK V8
FK V8
FK V8

Type* OperationTyper::SameValue(Type* lhs, Type* rhs) {
  if (!JSType(lhs)->Maybe(JSType(rhs))) return singleton_false();
  if (lhs->Is(Type::NaN())) {
    if (rhs->Is(Type::NaN())) return singleton_true();
    if (!rhs->Maybe(Type::NaN())) return singleton_false();
  } else if (rhs->Is(Type::NaN())) {
    if (!lhs->Maybe(Type::NaN())) return singleton_false();
  }
  if (lhs->Is(Type::MinusZero())) {
    if (rhs->Is(Type::MinusZero())) return singleton_true();
    if (!rhs->Maybe(Type::MinusZero())) return singleton_false();
  } else if (rhs->Is(Type::MinusZero())) {
    if (!lhs->Maybe(Type::MinusZero())) return singleton_false();
  }
  if (lhs->Is(Type::OrderedNumber()) && rhs->Is(Type::OrderedNumber()) &&
      (lhs->Max() < rhs->Min() || lhs->Min() > rhs->Max())) {
    return singleton_false();
  }
  return Type::Boolean();
}

Type* OperationTyper::StrictEqual(Type* lhs, Type* rhs) {
  if (!JSType(lhs)->Maybe(JSType(rhs))) return singleton_false();
  if (lhs->Is(Type::NaN()) || rhs->Is(Type::NaN())) return singleton_false();
  if (lhs->Is(Type::Number()) && rhs->Is(Type::Number()) &&
      (lhs->Max() < rhs->Min() || lhs->Min() > rhs->Max())) {
    return singleton_false();
  }
  if ((lhs->Is(Type::Hole()) || rhs->Is(Type::Hole())) && !lhs->Maybe(rhs)) {
    return singleton_false();
  }
  if (lhs->IsHeapConstant() && rhs->Is(lhs)) {
    // Types are equal and are inhabited only by a single semantic value,
    // which is not nan due to the earlier check.
    return singleton_true();
  }
  return Type::Boolean();
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • JavaScript绝对是最火的编程语言之一,一直具有很大的用户群,随着在服务端的使用(NodeJs),更是爆发了...
    不去解释阅读 2,430评论 1 16
  • 弗洛伊德算法适用于为图中每一个顶点求最短路径,思路如下 检查图中任何一个 到 任何另一个点能否通过第一个点降低最短...
    RichardW阅读 970评论 0 1
  • 1)支持度计算 a) 项集: 包含0个或者多个项(特征) 的集合被称为项集。如果一个项集包含k个项则称为k-项集。...
    _Megamind_阅读 361评论 0 0
  • 在上一篇文章中我们讲了如何使用 GN 编译 V8 源码,文章最后编译完成的可执行文件并不是 V8,而是 D8。这篇...
    justjavac阅读 1,178评论 1 1
  • 内在若安详, 篇篇幸福章。 回眸安谧地, 处处有阳光。
    真如自在阅读 320评论 4 5