| OLD | NEW |
| 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/bailout-reason.h" | 10 #include "src/bailout-reason.h" |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 // is constructed based on the resources available at compile-time. | 66 // is constructed based on the resources available at compile-time. |
| 67 class CompilationInfo { | 67 class CompilationInfo { |
| 68 public: | 68 public: |
| 69 // Various configuration flags for a compilation, as well as some properties | 69 // Various configuration flags for a compilation, as well as some properties |
| 70 // of the compiled code produced by a compilation. | 70 // of the compiled code produced by a compilation. |
| 71 enum Flag { | 71 enum Flag { |
| 72 kLazy = 1 << 0, | 72 kLazy = 1 << 0, |
| 73 kEval = 1 << 1, | 73 kEval = 1 << 1, |
| 74 kGlobal = 1 << 2, | 74 kGlobal = 1 << 2, |
| 75 kStrictMode = 1 << 3, | 75 kStrictMode = 1 << 3, |
| 76 kThisHasUses = 1 << 4, | 76 kSaneMode = 1 << 4, |
| 77 kNative = 1 << 5, | 77 kThisHasUses = 1 << 5, |
| 78 kDeferredCalling = 1 << 6, | 78 kNative = 1 << 6, |
| 79 kNonDeferredCalling = 1 << 7, | 79 kDeferredCalling = 1 << 7, |
| 80 kSavesCallerDoubles = 1 << 8, | 80 kNonDeferredCalling = 1 << 8, |
| 81 kRequiresFrame = 1 << 9, | 81 kSavesCallerDoubles = 1 << 9, |
| 82 kMustNotHaveEagerFrame = 1 << 10, | 82 kRequiresFrame = 1 << 10, |
| 83 kDeoptimizationSupport = 1 << 11, | 83 kMustNotHaveEagerFrame = 1 << 11, |
| 84 kDebug = 1 << 12, | 84 kDeoptimizationSupport = 1 << 12, |
| 85 kCompilingForDebugging = 1 << 13, | 85 kDebug = 1 << 13, |
| 86 kParseRestriction = 1 << 14, | 86 kCompilingForDebugging = 1 << 14, |
| 87 kSerializing = 1 << 15, | 87 kParseRestriction = 1 << 15, |
| 88 kContextSpecializing = 1 << 16, | 88 kSerializing = 1 << 16, |
| 89 kInliningEnabled = 1 << 17, | 89 kContextSpecializing = 1 << 17, |
| 90 kTypingEnabled = 1 << 18, | 90 kInliningEnabled = 1 << 18, |
| 91 kDisableFutureOptimization = 1 << 19, | 91 kTypingEnabled = 1 << 19, |
| 92 kModule = 1 << 20, | 92 kDisableFutureOptimization = 1 << 20, |
| 93 kToplevel = 1 << 21, | 93 kModule = 1 << 21, |
| 94 kSplittingEnabled = 1 << 22 | 94 kToplevel = 1 << 22, |
| 95 kSplittingEnabled = 1 << 23 |
| 95 }; | 96 }; |
| 96 | 97 |
| 97 CompilationInfo(Handle<JSFunction> closure, Zone* zone); | 98 CompilationInfo(Handle<JSFunction> closure, Zone* zone); |
| 98 CompilationInfo(Handle<Script> script, Zone* zone); | 99 CompilationInfo(Handle<Script> script, Zone* zone); |
| 99 CompilationInfo(Isolate* isolate, Zone* zone); | 100 CompilationInfo(Isolate* isolate, Zone* zone); |
| 100 virtual ~CompilationInfo(); | 101 virtual ~CompilationInfo(); |
| 101 | 102 |
| 102 Isolate* isolate() const { | 103 Isolate* isolate() const { |
| 103 return isolate_; | 104 return isolate_; |
| 104 } | 105 } |
| 105 Zone* zone() { return zone_; } | 106 Zone* zone() { return zone_; } |
| 106 bool is_osr() const { return !osr_ast_id_.IsNone(); } | 107 bool is_osr() const { return !osr_ast_id_.IsNone(); } |
| 107 bool is_lazy() const { return GetFlag(kLazy); } | 108 bool is_lazy() const { return GetFlag(kLazy); } |
| 108 bool is_eval() const { return GetFlag(kEval); } | 109 bool is_eval() const { return GetFlag(kEval); } |
| 109 bool is_global() const { return GetFlag(kGlobal); } | 110 bool is_global() const { return GetFlag(kGlobal); } |
| 110 bool is_module() const { return GetFlag(kModule); } | 111 bool is_module() const { return GetFlag(kModule); } |
| 111 LanguageMode language_mode() const { | 112 LanguageMode language_mode() const { |
| 112 STATIC_ASSERT(LANGUAGE_END == 2); | 113 STATIC_ASSERT(LANGUAGE_END == 3); |
| 113 return GetFlag(kStrictMode) ? STRICT : SLOPPY; | 114 return construct_language_mode(GetFlag(kStrictMode), GetFlag(kSaneMode)); |
| 114 } | 115 } |
| 115 FunctionLiteral* function() const { return function_; } | 116 FunctionLiteral* function() const { return function_; } |
| 116 Scope* scope() const { return scope_; } | 117 Scope* scope() const { return scope_; } |
| 117 Scope* script_scope() const { return script_scope_; } | 118 Scope* script_scope() const { return script_scope_; } |
| 118 Handle<Code> code() const { return code_; } | 119 Handle<Code> code() const { return code_; } |
| 119 Handle<JSFunction> closure() const { return closure_; } | 120 Handle<JSFunction> closure() const { return closure_; } |
| 120 Handle<SharedFunctionInfo> shared_info() const { return shared_info_; } | 121 Handle<SharedFunctionInfo> shared_info() const { return shared_info_; } |
| 121 Handle<Script> script() const { return script_; } | 122 Handle<Script> script() const { return script_; } |
| 122 void set_script(Handle<Script> script) { script_ = script; } | 123 void set_script(Handle<Script> script) { script_ = script; } |
| 123 HydrogenCodeStub* code_stub() const {return code_stub_; } | 124 HydrogenCodeStub* code_stub() const {return code_stub_; } |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 160 parameter_count_ = parameter_count; | 161 parameter_count_ = parameter_count; |
| 161 } | 162 } |
| 162 | 163 |
| 163 void set_this_has_uses(bool has_no_uses) { | 164 void set_this_has_uses(bool has_no_uses) { |
| 164 SetFlag(kThisHasUses, has_no_uses); | 165 SetFlag(kThisHasUses, has_no_uses); |
| 165 } | 166 } |
| 166 | 167 |
| 167 bool this_has_uses() { return GetFlag(kThisHasUses); } | 168 bool this_has_uses() { return GetFlag(kThisHasUses); } |
| 168 | 169 |
| 169 void SetLanguageMode(LanguageMode language_mode) { | 170 void SetLanguageMode(LanguageMode language_mode) { |
| 170 STATIC_ASSERT(LANGUAGE_END == 2); | 171 STATIC_ASSERT(LANGUAGE_END == 3); |
| 171 SetFlag(kStrictMode, language_mode & STRICT); | 172 SetFlag(kStrictMode, language_mode & STRICT_BIT); |
| 173 SetFlag(kSaneMode, language_mode & SANE_BIT); |
| 172 } | 174 } |
| 173 | 175 |
| 174 void MarkAsNative() { SetFlag(kNative); } | 176 void MarkAsNative() { SetFlag(kNative); } |
| 175 | 177 |
| 176 bool is_native() const { return GetFlag(kNative); } | 178 bool is_native() const { return GetFlag(kNative); } |
| 177 | 179 |
| 178 bool is_calling() const { | 180 bool is_calling() const { |
| 179 return GetFlag(kDeferredCalling) || GetFlag(kNonDeferredCalling); | 181 return GetFlag(kDeferredCalling) || GetFlag(kNonDeferredCalling); |
| 180 } | 182 } |
| 181 | 183 |
| (...skipping 593 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 775 Zone zone_; | 777 Zone zone_; |
| 776 unsigned info_zone_start_allocation_size_; | 778 unsigned info_zone_start_allocation_size_; |
| 777 base::ElapsedTimer timer_; | 779 base::ElapsedTimer timer_; |
| 778 | 780 |
| 779 DISALLOW_COPY_AND_ASSIGN(CompilationPhase); | 781 DISALLOW_COPY_AND_ASSIGN(CompilationPhase); |
| 780 }; | 782 }; |
| 781 | 783 |
| 782 } } // namespace v8::internal | 784 } } // namespace v8::internal |
| 783 | 785 |
| 784 #endif // V8_COMPILER_H_ | 786 #endif // V8_COMPILER_H_ |
| OLD | NEW |