OLD | NEW |
---|---|
1 // Copyright 2009 the V8 project authors. All rights reserved. | 1 // Copyright 2009 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
117 // Signal a stack overflow by returning a null handle. The stack | 117 // Signal a stack overflow by returning a null handle. The stack |
118 // overflow exception will be thrown by the caller. | 118 // overflow exception will be thrown by the caller. |
119 return Handle<Code>::null(); | 119 return Handle<Code>::null(); |
120 } | 120 } |
121 | 121 |
122 // Generate code and return it. | 122 // Generate code and return it. |
123 if (FLAG_fast_compiler) { | 123 if (FLAG_fast_compiler) { |
124 // If there is no shared function info, try the fast code | 124 // If there is no shared function info, try the fast code |
125 // generator for code in the global scope. Otherwise obey the | 125 // generator for code in the global scope. Otherwise obey the |
126 // explicit hint in the shared function info. | 126 // explicit hint in the shared function info. |
127 if (shared.is_null() && !literal->scope()->is_global_scope()) { | 127 // If always_fast_compiler is true, always try the fast compiler. |
128 if (shared.is_null() && !literal->scope()->is_global_scope() && | |
Lasse Reichstein
2009/11/30 11:45:53
Does "shared.is_null()" have a special significanc
fschneider
2009/11/30 12:19:19
Good question. I'm not sure. As I understand the S
| |
129 !FLAG_always_fast_compiler) { | |
128 if (FLAG_trace_bailout) PrintF("Non-global scope\n"); | 130 if (FLAG_trace_bailout) PrintF("Non-global scope\n"); |
129 } else if (!shared.is_null() && !shared->try_fast_codegen()) { | 131 } else if (!shared.is_null() && !shared->try_fast_codegen() && |
132 !FLAG_always_fast_compiler) { | |
130 if (FLAG_trace_bailout) PrintF("No hint to try fast\n"); | 133 if (FLAG_trace_bailout) PrintF("No hint to try fast\n"); |
131 } else { | 134 } else { |
132 CodeGenSelector selector; | 135 CodeGenSelector selector; |
133 CodeGenSelector::CodeGenTag code_gen = selector.Select(literal); | 136 CodeGenSelector::CodeGenTag code_gen = selector.Select(literal); |
134 if (code_gen == CodeGenSelector::FAST) { | 137 if (code_gen == CodeGenSelector::FAST) { |
135 return FastCodeGenerator::MakeCode(literal, script, is_eval); | 138 return FastCodeGenerator::MakeCode(literal, script, is_eval); |
136 } | 139 } |
137 ASSERT(code_gen == CodeGenSelector::NORMAL); | 140 ASSERT(code_gen == CodeGenSelector::NORMAL); |
138 } | 141 } |
139 } | 142 } |
(...skipping 975 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1115 | 1118 |
1116 void CodeGenSelector::VisitThisFunction(ThisFunction* expr) { | 1119 void CodeGenSelector::VisitThisFunction(ThisFunction* expr) { |
1117 BAILOUT("ThisFunction"); | 1120 BAILOUT("ThisFunction"); |
1118 } | 1121 } |
1119 | 1122 |
1120 #undef BAILOUT | 1123 #undef BAILOUT |
1121 #undef CHECK_BAILOUT | 1124 #undef CHECK_BAILOUT |
1122 | 1125 |
1123 | 1126 |
1124 } } // namespace v8::internal | 1127 } } // namespace v8::internal |
OLD | NEW |