diff --git a/BUILD.gn b/BUILD.gn index 3529ff5c27..be51de51ec 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -1445,8 +1445,6 @@ v8_source_set("v8_base") { "src/types.h", "src/typing-asm.cc", "src/typing-asm.h", - "src/typing-reset.cc", - "src/typing-reset.h", "src/unicode-cache-inl.h", "src/unicode-cache.h", "src/unicode-decoder.cc", diff --git a/src/typing-reset.cc b/src/typing-reset.cc deleted file mode 100644 index c22f7a9276..0000000000 --- a/src/typing-reset.cc +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "src/v8.h" - -#include "src/typing-reset.h" - -#include "src/ast/ast.h" -#include "src/ast/scopes.h" -#include "src/codegen.h" - -namespace v8 { -namespace internal { - - -TypingReseter::TypingReseter(Isolate* isolate, FunctionLiteral* root) - : AstExpressionVisitor(isolate, root) {} - - -void TypingReseter::VisitExpression(Expression* expression) { - expression->set_bounds(Bounds::Unbounded()); -} -} // namespace internal -} // namespace v8 diff --git a/src/typing-reset.h b/src/typing-reset.h deleted file mode 100644 index 3e1969d9ed..0000000000 --- a/src/typing-reset.h +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef V8_TYPING_RESET_H_ -#define V8_TYPING_RESET_H_ - -#include "src/ast/ast-expression-visitor.h" - -namespace v8 { -namespace internal { - -// A Visitor over a CompilationInfo's AST that resets -// typing bounds back to their default. - -class TypingReseter : public AstExpressionVisitor { - public: - TypingReseter(Isolate* isolate, FunctionLiteral* root); - - protected: - void VisitExpression(Expression* expression) override; -}; -} // namespace internal -} // namespace v8 - -#endif // V8_TYPING_RESET_H_ diff --git a/src/v8.gyp b/src/v8.gyp index 1a2a0f08c0..1d3fd83001 100644 --- a/src/v8.gyp +++ b/src/v8.gyp @@ -1115,8 +1115,6 @@ 'types.h', 'typing-asm.cc', 'typing-asm.h', - 'typing-reset.cc', - 'typing-reset.h', 'unicode-inl.h', 'unicode.cc', 'unicode.h', diff --git a/test/cctest/cctest.gyp b/test/cctest/cctest.gyp index 4b59bfbd3e..53de1bf163 100644 --- a/test/cctest/cctest.gyp +++ b/test/cctest/cctest.gyp @@ -176,7 +176,6 @@ 'test-transitions.cc', 'test-typedarrays.cc', 'test-types.cc', - 'test-typing-reset.cc', 'test-unbound-queue.cc', 'test-unboxed-doubles.cc', 'test-unique.cc', diff --git a/test/cctest/test-typing-reset.cc b/test/cctest/test-typing-reset.cc deleted file mode 100644 index d6f9511fe1..0000000000 --- a/test/cctest/test-typing-reset.cc +++ /dev/null @@ -1,297 +0,0 @@ -// Copyright 2015 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include - -#include "src/v8.h" - -#include "src/ast/ast.h" -#include "src/ast/ast-expression-visitor.h" -#include "src/ast/scopes.h" -#include "src/parsing/parser.h" -#include "src/parsing/rewriter.h" -#include "src/typing-reset.h" -#include "test/cctest/cctest.h" -#include "test/cctest/compiler/function-tester.h" -#include "test/cctest/expression-type-collector.h" -#include "test/cctest/expression-type-collector-macros.h" - -#define INT32_TYPE Bounds(Type::Signed32(), Type::Signed32()) - -using namespace v8::internal; - -namespace { - -class TypeSetter : public AstExpressionVisitor { - public: - TypeSetter(Isolate* isolate, FunctionLiteral* root) - : AstExpressionVisitor(isolate, root) {} - - protected: - void VisitExpression(Expression* expression) { - expression->set_bounds(INT32_TYPE); - } -}; - - -void CheckAllSame(ZoneVector& types, - Bounds expected_type) { - CHECK_TYPES_BEGIN { - // function logSum - CHECK_EXPR(FunctionLiteral, expected_type) { - CHECK_EXPR(FunctionLiteral, expected_type) { - CHECK_EXPR(Assignment, expected_type) { - CHECK_VAR(start, expected_type); - CHECK_EXPR(BinaryOperation, expected_type) { - CHECK_VAR(start, expected_type); - CHECK_EXPR(Literal, expected_type); - } - } - CHECK_EXPR(Assignment, expected_type) { - CHECK_VAR(end, expected_type); - CHECK_EXPR(BinaryOperation, expected_type) { - CHECK_VAR(end, expected_type); - CHECK_EXPR(Literal, expected_type); - } - } - CHECK_EXPR(Assignment, expected_type) { - CHECK_VAR(sum, expected_type); - CHECK_EXPR(Literal, expected_type); - } - CHECK_EXPR(Assignment, expected_type) { - CHECK_VAR(p, expected_type); - CHECK_EXPR(Literal, expected_type); - } - CHECK_EXPR(Assignment, expected_type) { - CHECK_VAR(q, expected_type); - CHECK_EXPR(Literal, expected_type); - } - // for (p = start << 3, q = end << 3; - CHECK_EXPR(BinaryOperation, expected_type) { - CHECK_EXPR(Assignment, expected_type) { - CHECK_VAR(p, expected_type); - CHECK_EXPR(BinaryOperation, expected_type) { - CHECK_VAR(start, expected_type); - CHECK_EXPR(Literal, expected_type); - } - } - CHECK_EXPR(Assignment, expected_type) { - CHECK_VAR(q, expected_type); - CHECK_EXPR(BinaryOperation, expected_type) { - CHECK_VAR(end, expected_type); - CHECK_EXPR(Literal, expected_type); - } - } - } - // (p|0) < (q|0); - CHECK_EXPR(CompareOperation, expected_type) { - CHECK_EXPR(BinaryOperation, expected_type) { - CHECK_VAR(p, expected_type); - CHECK_EXPR(Literal, expected_type); - } - CHECK_EXPR(BinaryOperation, expected_type) { - CHECK_VAR(q, expected_type); - CHECK_EXPR(Literal, expected_type); - } - } - // p = (p + 8)|0) {\n" - CHECK_EXPR(Assignment, expected_type) { - CHECK_VAR(p, expected_type); - CHECK_EXPR(BinaryOperation, expected_type) { - CHECK_EXPR(BinaryOperation, expected_type) { - CHECK_VAR(p, expected_type); - CHECK_EXPR(Literal, expected_type); - } - CHECK_EXPR(Literal, expected_type); - } - } - // sum = sum + +log(values[p>>3]); - CHECK_EXPR(Assignment, expected_type) { - CHECK_VAR(sum, expected_type); - CHECK_EXPR(BinaryOperation, expected_type) { - CHECK_VAR(sum, expected_type); - CHECK_EXPR(BinaryOperation, expected_type) { - CHECK_EXPR(Call, expected_type) { - CHECK_VAR(log, expected_type); - CHECK_EXPR(Property, expected_type) { - CHECK_VAR(values, expected_type); - CHECK_EXPR(BinaryOperation, expected_type) { - CHECK_VAR(p, expected_type); - CHECK_EXPR(Literal, expected_type); - } - } - } - CHECK_EXPR(Literal, expected_type); - } - } - } - // return +sum; - CHECK_EXPR(BinaryOperation, expected_type) { - CHECK_VAR(sum, expected_type); - CHECK_EXPR(Literal, expected_type); - } - } - // function geometricMean - CHECK_EXPR(FunctionLiteral, expected_type) { - CHECK_EXPR(Assignment, expected_type) { - CHECK_VAR(start, expected_type); - CHECK_EXPR(BinaryOperation, expected_type) { - CHECK_VAR(start, expected_type); - CHECK_EXPR(Literal, expected_type); - } - } - CHECK_EXPR(Assignment, expected_type) { - CHECK_VAR(end, expected_type); - CHECK_EXPR(BinaryOperation, expected_type) { - CHECK_VAR(end, expected_type); - CHECK_EXPR(Literal, expected_type); - } - } - // return +exp(+logSum(start, end) / +((end - start)|0)); - CHECK_EXPR(BinaryOperation, expected_type) { - CHECK_EXPR(Call, expected_type) { - CHECK_VAR(exp, expected_type); - CHECK_EXPR(BinaryOperation, expected_type) { - CHECK_EXPR(BinaryOperation, expected_type) { - CHECK_EXPR(Call, expected_type) { - CHECK_VAR(logSum, expected_type); - CHECK_VAR(start, expected_type); - CHECK_VAR(end, expected_type); - } - CHECK_EXPR(Literal, expected_type); - } - CHECK_EXPR(BinaryOperation, expected_type) { - CHECK_EXPR(BinaryOperation, expected_type) { - CHECK_EXPR(BinaryOperation, expected_type) { - CHECK_VAR(end, expected_type); - CHECK_VAR(start, expected_type); - } - CHECK_EXPR(Literal, expected_type); - } - CHECK_EXPR(Literal, expected_type); - } - } - } - CHECK_EXPR(Literal, expected_type); - } - } - // "use asm"; - CHECK_EXPR(Literal, expected_type); - // var exp = stdlib.Math.exp; - CHECK_EXPR(Assignment, expected_type) { - CHECK_VAR(exp, expected_type); - CHECK_EXPR(Property, expected_type) { - CHECK_EXPR(Property, expected_type) { - CHECK_VAR(stdlib, expected_type); - CHECK_EXPR(Literal, expected_type); - } - CHECK_EXPR(Literal, expected_type); - } - } - // var log = stdlib.Math.log; - CHECK_EXPR(Assignment, expected_type) { - CHECK_VAR(log, expected_type); - CHECK_EXPR(Property, expected_type) { - CHECK_EXPR(Property, expected_type) { - CHECK_VAR(stdlib, expected_type); - CHECK_EXPR(Literal, expected_type); - } - CHECK_EXPR(Literal, expected_type); - } - } - // var values = new stdlib.Float64Array(buffer); - CHECK_EXPR(Assignment, expected_type) { - CHECK_VAR(values, expected_type); - CHECK_EXPR(CallNew, expected_type) { - CHECK_EXPR(Property, expected_type) { - CHECK_VAR(stdlib, expected_type); - CHECK_EXPR(Literal, expected_type); - } - CHECK_VAR(buffer, expected_type); - } - } - // return { geometricMean: geometricMean }; - CHECK_EXPR(ObjectLiteral, expected_type) { - CHECK_VAR(geometricMean, expected_type); - } - } - } - CHECK_TYPES_END -} - -} // namespace - - -TEST(ResetTypingInfo) { - const char test_function[] = - "function GeometricMean(stdlib, foreign, buffer) {\n" - " \"use asm\";\n" - "\n" - " var exp = stdlib.Math.exp;\n" - " var log = stdlib.Math.log;\n" - " var values = new stdlib.Float64Array(buffer);\n" - "\n" - " function logSum(start, end) {\n" - " start = start|0;\n" - " end = end|0;\n" - "\n" - " var sum = 0.0, p = 0, q = 0;\n" - "\n" - " // asm.js forces byte addressing of the heap by requiring shifting " - "by 3\n" - " for (p = start << 3, q = end << 3; (p|0) < (q|0); p = (p + 8)|0) {\n" - " sum = sum + +log(values[p>>3]);\n" - " }\n" - "\n" - " return +sum;\n" - " }\n" - "\n" - " function geometricMean(start, end) {\n" - " start = start|0;\n" - " end = end|0;\n" - "\n" - " return +exp(+logSum(start, end) / +((end - start)|0));\n" - " }\n" - "\n" - " return { geometricMean: geometricMean };\n" - "}\n"; - - v8::V8::Initialize(); - HandleAndZoneScope handles; - - i::Isolate* isolate = CcTest::i_isolate(); - i::Factory* factory = isolate->factory(); - - i::Handle source_code = - factory->NewStringFromUtf8(i::CStrVector(test_function)) - .ToHandleChecked(); - - i::Handle script = factory->NewScript(source_code); - - i::ParseInfo info(handles.main_zone(), script); - i::Parser parser(&info); - info.set_global(); - info.set_lazy(false); - info.set_allow_lazy_parsing(false); - info.set_toplevel(true); - - CHECK(i::Compiler::ParseAndAnalyze(&info)); - FunctionLiteral* root = - info.scope()->declarations()->at(0)->AsFunctionDeclaration()->fun(); - - // Core of the test. - ZoneVector types(handles.main_zone()); - ExpressionTypeCollector(isolate, root, &types).Run(); - CheckAllSame(types, Bounds::Unbounded()); - - TypeSetter(isolate, root).Run(); - - ExpressionTypeCollector(isolate, root, &types).Run(); - CheckAllSame(types, INT32_TYPE); - - TypingReseter(isolate, root).Run(); - - ExpressionTypeCollector(isolate, root, &types).Run(); - CheckAllSame(types, Bounds::Unbounded()); -}