Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(396)

Side by Side Diff: src/typing-asm.h

Issue 1508003002: Retain information on which standard objects are used in asm typer. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/typing-asm.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_TYPING_ASM_H_ 5 #ifndef V8_TYPING_ASM_H_
6 #define V8_TYPING_ASM_H_ 6 #define V8_TYPING_ASM_H_
7 7
8 #include "src/allocation.h" 8 #include "src/allocation.h"
9 #include "src/ast/ast.h" 9 #include "src/ast/ast.h"
10 #include "src/effects.h" 10 #include "src/effects.h"
11 #include "src/type-info.h" 11 #include "src/type-info.h"
12 #include "src/types.h" 12 #include "src/types.h"
13 #include "src/zone.h" 13 #include "src/zone.h"
14 14
15 namespace v8 { 15 namespace v8 {
16 namespace internal { 16 namespace internal {
17 17
18 class TypeCache; 18 class TypeCache;
19 19
20 class AsmTyper : public AstVisitor { 20 class AsmTyper : public AstVisitor {
21 public: 21 public:
22 explicit AsmTyper(Isolate* isolate, Zone* zone, Script* script, 22 explicit AsmTyper(Isolate* isolate, Zone* zone, Script* script,
23 FunctionLiteral* root); 23 FunctionLiteral* root);
24 bool Validate(); 24 bool Validate();
25 void set_allow_simd(bool simd); 25 void set_allow_simd(bool simd);
26 const char* error_message() { return error_message_; } 26 const char* error_message() { return error_message_; }
27 27
28 enum StandardObject {
titzer 2015/12/08 10:27:20 Better name here? Many of these things are functio
bradn 2015/12/09 03:40:09 Done.
29 kNone = 0,
30 kStdlib,
31 kInfinity,
32 kNaN,
33 kMathAcos,
34 kMathAsin,
35 kMathAtan,
36 kMathCos,
37 kMathSin,
38 kMathTan,
39 kMathExp,
40 kMathLog,
41 kMathCeil,
42 kMathFloor,
43 kMathSqrt,
44 kMathAbs,
45 kMathMin,
46 kMathMax,
47 kMathAtan2,
48 kMathPow,
49 kMathImul,
50 kMathFround,
51 kMathE,
52 kMathLN10,
53 kMathLN2,
54 kMathLOG2E,
55 kMathLOG10E,
56 kMathPI,
57 kMathSQRT1_2,
58 kMathSQRT2,
59 };
60
61 StandardObject VariableAsStandardObject(Variable* variable);
62
28 DEFINE_AST_VISITOR_SUBCLASS_MEMBERS(); 63 DEFINE_AST_VISITOR_SUBCLASS_MEMBERS();
29 64
30 private: 65 private:
31 Zone* zone_; 66 Zone* zone_;
32 Isolate* isolate_; 67 Isolate* isolate_;
33 Script* script_; 68 Script* script_;
34 FunctionLiteral* root_; 69 FunctionLiteral* root_;
35 bool valid_; 70 bool valid_;
36 bool allow_simd_; 71 bool allow_simd_;
37 72
38 struct VariableInfo : public ZoneObject { 73 struct VariableInfo : public ZoneObject {
39 Type* type; 74 Type* type;
40 bool is_stdlib_object;
41 bool is_check_function; 75 bool is_check_function;
42 bool is_constructor_function; 76 bool is_constructor_function;
77 StandardObject standard_object;
43 78
44 VariableInfo() 79 VariableInfo()
45 : type(NULL), 80 : type(NULL),
46 is_stdlib_object(false),
47 is_check_function(false), 81 is_check_function(false),
48 is_constructor_function(false) {} 82 is_constructor_function(false),
83 standard_object(kNone) {}
49 explicit VariableInfo(Type* t) 84 explicit VariableInfo(Type* t)
50 : type(t), is_check_function(false), is_constructor_function(false) {} 85 : type(t), is_check_function(false), is_constructor_function(false) {}
51 }; 86 };
52 87
53 // Information for bi-directional typing with a cap on nesting depth. 88 // Information for bi-directional typing with a cap on nesting depth.
54 Type* expected_type_; 89 Type* expected_type_;
55 Type* computed_type_; 90 Type* computed_type_;
56 VariableInfo* property_info_; 91 VariableInfo* property_info_;
57 int intish_; // How many ops we've gone without a x|0. 92 int intish_; // How many ops we've gone without a x|0.
58 93
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 #define DECLARE_VISIT(type) void Visit##type(type* node) override; 167 #define DECLARE_VISIT(type) void Visit##type(type* node) override;
133 AST_NODE_LIST(DECLARE_VISIT) 168 AST_NODE_LIST(DECLARE_VISIT)
134 #undef DECLARE_VISIT 169 #undef DECLARE_VISIT
135 170
136 DISALLOW_COPY_AND_ASSIGN(AsmTyper); 171 DISALLOW_COPY_AND_ASSIGN(AsmTyper);
137 }; 172 };
138 } // namespace internal 173 } // namespace internal
139 } // namespace v8 174 } // namespace v8
140 175
141 #endif // V8_TYPING_ASM_H_ 176 #endif // V8_TYPING_ASM_H_
OLDNEW
« no previous file with comments | « no previous file | src/typing-asm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698