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

Side by Side Diff: src/compiler.h

Issue 376223002: Refactor ScriptData class for cached compile data. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « src/api.cc ('k') | src/compiler.cc » ('j') | src/preparse-data.h » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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_COMPILER_H_ 5 #ifndef V8_COMPILER_H_
6 #define V8_COMPILER_H_ 6 #define V8_COMPILER_H_
7 7
8 #include "src/allocation.h" 8 #include "src/allocation.h"
9 #include "src/ast.h" 9 #include "src/ast.h"
10 #include "src/zone.h" 10 #include "src/zone.h"
11 11
12 namespace v8 { 12 namespace v8 {
13 namespace internal { 13 namespace internal {
14 14
15 class AstValueFactory; 15 class AstValueFactory;
16 class ScriptData;
17 class HydrogenCodeStub; 16 class HydrogenCodeStub;
18 17
19 // ParseRestriction is used to restrict the set of valid statements in a 18 // ParseRestriction is used to restrict the set of valid statements in a
20 // unit of compilation. Restriction violations cause a syntax error. 19 // unit of compilation. Restriction violations cause a syntax error.
21 enum ParseRestriction { 20 enum ParseRestriction {
22 NO_PARSE_RESTRICTION, // All expressions are allowed. 21 NO_PARSE_RESTRICTION, // All expressions are allowed.
23 ONLY_SINGLE_FUNCTION_LITERAL // Only a single FunctionLiteral expression. 22 ONLY_SINGLE_FUNCTION_LITERAL // Only a single FunctionLiteral expression.
24 }; 23 };
25 24
26 enum CachedDataMode { 25 enum CachedDataMode {
27 NO_CACHED_DATA, 26 NO_CACHED_DATA,
28 CONSUME_CACHED_DATA, 27 CONSUME_CACHED_DATA,
29 PRODUCE_CACHED_DATA 28 PRODUCE_CACHED_DATA
30 }; 29 };
31 30
32 struct OffsetRange { 31 struct OffsetRange {
33 OffsetRange(int from, int to) : from(from), to(to) {} 32 OffsetRange(int from, int to) : from(from), to(to) {}
34 int from; 33 int from;
35 int to; 34 int to;
36 }; 35 };
37 36
37
38 class ScriptData {
39 public:
40 ScriptData(const byte* data, int length);
41 ~ScriptData() {
42 if (owns_data_) DeleteArray(data_);
43 }
44
45 const byte* data() const { return data_; }
46 int length() const { return length_; }
47
48 void AcquireDataOwnership() {
49 ASSERT(!owns_data_);
50 owns_data_ = true;
51 }
52
53 void ReleaseDataOwnership() {
54 ASSERT(owns_data_);
55 owns_data_ = false;
56 }
57
58 private:
59 bool owns_data_;
60 const byte* data_;
61 int length_;
62
63 DISALLOW_COPY_AND_ASSIGN(ScriptData);
64 };
65
66
38 // CompilationInfo encapsulates some information known at compile time. It 67 // CompilationInfo encapsulates some information known at compile time. It
39 // is constructed based on the resources available at compile-time. 68 // is constructed based on the resources available at compile-time.
40 class CompilationInfo { 69 class CompilationInfo {
41 public: 70 public:
42 CompilationInfo(Handle<JSFunction> closure, Zone* zone); 71 CompilationInfo(Handle<JSFunction> closure, Zone* zone);
43 virtual ~CompilationInfo(); 72 virtual ~CompilationInfo();
44 73
45 Isolate* isolate() const { 74 Isolate* isolate() const {
46 return isolate_; 75 return isolate_;
47 } 76 }
(...skipping 667 matching lines...) Expand 10 before | Expand all | Expand 10 after
715 private: 744 private:
716 const char* name_; 745 const char* name_;
717 CompilationInfo* info_; 746 CompilationInfo* info_;
718 Zone zone_; 747 Zone zone_;
719 unsigned info_zone_start_allocation_size_; 748 unsigned info_zone_start_allocation_size_;
720 base::ElapsedTimer timer_; 749 base::ElapsedTimer timer_;
721 750
722 DISALLOW_COPY_AND_ASSIGN(CompilationPhase); 751 DISALLOW_COPY_AND_ASSIGN(CompilationPhase);
723 }; 752 };
724 753
725
726 } } // namespace v8::internal 754 } } // namespace v8::internal
727 755
728 #endif // V8_COMPILER_H_ 756 #endif // V8_COMPILER_H_
OLDNEW
« no previous file with comments | « src/api.cc ('k') | src/compiler.cc » ('j') | src/preparse-data.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698