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

Side by Side Diff: src/crankshaft/typing.h

Issue 1968383002: Remove Expression::bounds_, in order to conserve memory during parsing. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Remove Expression::bounds_ Created 4 years, 7 months 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
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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_CRANKSHAFT_TYPING_H_ 5 #ifndef V8_CRANKSHAFT_TYPING_H_
6 #define V8_CRANKSHAFT_TYPING_H_ 6 #define V8_CRANKSHAFT_TYPING_H_
7 7
8 #include "src/allocation.h" 8 #include "src/allocation.h"
9 #include "src/ast/ast-type-bounds.h"
9 #include "src/ast/ast.h" 10 #include "src/ast/ast.h"
10 #include "src/ast/scopes.h" 11 #include "src/ast/scopes.h"
11 #include "src/effects.h" 12 #include "src/effects.h"
12 #include "src/type-info.h" 13 #include "src/type-info.h"
13 #include "src/types.h" 14 #include "src/types.h"
14 #include "src/zone.h" 15 #include "src/zone.h"
15 16
16 namespace v8 { 17 namespace v8 {
17 namespace internal { 18 namespace internal {
18 19
19
20 class AstTyper: public AstVisitor { 20 class AstTyper: public AstVisitor {
21 public: 21 public:
22 AstTyper(Isolate* isolate, Zone* zone, Handle<JSFunction> closure, 22 AstTyper(Isolate* isolate, Zone* zone, Handle<JSFunction> closure,
23 Scope* scope, BailoutId osr_ast_id, FunctionLiteral* root); 23 Scope* scope, BailoutId osr_ast_id, FunctionLiteral* root,
24 AstTypeBounds* bounds);
24 void Run(); 25 void Run();
25 26
26 DEFINE_AST_VISITOR_SUBCLASS_MEMBERS(); 27 DEFINE_AST_VISITOR_SUBCLASS_MEMBERS();
27 28
28 private: 29 private:
29 Effect ObservedOnStack(Object* value); 30 Effect ObservedOnStack(Object* value);
30 void ObserveTypesAtOsrEntry(IterationStatement* stmt); 31 void ObserveTypesAtOsrEntry(IterationStatement* stmt);
31 32
32 static const int kNoVar = INT_MIN; 33 static const int kNoVar = INT_MIN;
33 typedef v8::internal::Effects<int, kNoVar> Effects; 34 typedef v8::internal::Effects<int, kNoVar> Effects;
34 typedef v8::internal::NestedEffects<int, kNoVar> Store; 35 typedef v8::internal::NestedEffects<int, kNoVar> Store;
35 36
36 Isolate* isolate_; 37 Isolate* isolate_;
37 Zone* zone_; 38 Zone* zone_;
38 Handle<JSFunction> closure_; 39 Handle<JSFunction> closure_;
39 Scope* scope_; 40 Scope* scope_;
40 BailoutId osr_ast_id_; 41 BailoutId osr_ast_id_;
41 FunctionLiteral* root_; 42 FunctionLiteral* root_;
42 TypeFeedbackOracle oracle_; 43 TypeFeedbackOracle oracle_;
43 Store store_; 44 Store store_;
45 AstTypeBounds* bounds_;
44 46
45 Zone* zone() const { return zone_; } 47 Zone* zone() const { return zone_; }
46 TypeFeedbackOracle* oracle() { return &oracle_; } 48 TypeFeedbackOracle* oracle() { return &oracle_; }
47 49
48 void NarrowType(Expression* e, Bounds b) { 50 void NarrowType(Expression* e, Bounds b) {
49 e->set_bounds(Bounds::Both(e->bounds(), b, zone())); 51 bounds_->set(e, Bounds::Both(bounds_->get(e), b, zone()));
50 } 52 }
51 void NarrowLowerType(Expression* e, Type* t) { 53 void NarrowLowerType(Expression* e, Type* t) {
52 e->set_bounds(Bounds::NarrowLower(e->bounds(), t, zone())); 54 bounds_->set(e, Bounds::NarrowLower(bounds_->get(e), t, zone()));
53 } 55 }
54 56
55 Effects EnterEffects() { 57 Effects EnterEffects() {
56 store_ = store_.Push(); 58 store_ = store_.Push();
57 return store_.Top(); 59 return store_.Top();
58 } 60 }
59 void ExitEffects() { store_ = store_.Pop(); } 61 void ExitEffects() { store_ = store_.Pop(); }
60 62
61 int parameter_index(int index) { return -index - 2; } 63 int parameter_index(int index) { return -index - 2; }
62 int stack_local_index(int index) { return index; } 64 int stack_local_index(int index) { return index; }
(...skipping 13 matching lines...) Expand all
76 AST_NODE_LIST(DECLARE_VISIT) 78 AST_NODE_LIST(DECLARE_VISIT)
77 #undef DECLARE_VISIT 79 #undef DECLARE_VISIT
78 80
79 DISALLOW_COPY_AND_ASSIGN(AstTyper); 81 DISALLOW_COPY_AND_ASSIGN(AstTyper);
80 }; 82 };
81 83
82 } // namespace internal 84 } // namespace internal
83 } // namespace v8 85 } // namespace v8
84 86
85 #endif // V8_CRANKSHAFT_TYPING_H_ 87 #endif // V8_CRANKSHAFT_TYPING_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698