| OLD | NEW |
| 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 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 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 152 for (int i = cases->length(); i-- > 0;) { | 152 for (int i = cases->length(); i-- > 0;) { |
| 153 WeightScaler ws(this, static_cast<float>(1.0 / cases->length())); | 153 WeightScaler ws(this, static_cast<float>(1.0 / cases->length())); |
| 154 CaseClause* clause = cases->at(i); | 154 CaseClause* clause = cases->at(i); |
| 155 if (!clause->is_default()) | 155 if (!clause->is_default()) |
| 156 Read(clause->label()); | 156 Read(clause->label()); |
| 157 VisitStatements(clause->statements()); | 157 VisitStatements(clause->statements()); |
| 158 } | 158 } |
| 159 } | 159 } |
| 160 | 160 |
| 161 | 161 |
| 162 void UsageComputer::VisitLoopStatement(LoopStatement* node) { | 162 void UsageComputer::VisitDoWhileStatement(DoWhileStatement* node) { |
| 163 if (node->init() != NULL) | 163 WeightScaler ws(this, 10.0); |
| 164 Visit(node->init()); | 164 Read(node->cond()); |
| 165 Visit(node->body()); |
| 166 } |
| 167 |
| 168 |
| 169 void UsageComputer::VisitWhileStatement(WhileStatement* node) { |
| 170 WeightScaler ws(this, 10.0); |
| 171 Read(node->cond()); |
| 172 Visit(node->body()); |
| 173 } |
| 174 |
| 175 |
| 176 void UsageComputer::VisitForStatement(ForStatement* node) { |
| 177 if (node->init() != NULL) Visit(node->init()); |
| 165 { WeightScaler ws(this, 10.0); // executed in each iteration | 178 { WeightScaler ws(this, 10.0); // executed in each iteration |
| 166 if (node->cond() != NULL) | 179 if (node->cond() != NULL) Read(node->cond()); |
| 167 Read(node->cond()); | 180 if (node->next() != NULL) Visit(node->next()); |
| 168 if (node->next() != NULL) | |
| 169 Visit(node->next()); | |
| 170 Visit(node->body()); | 181 Visit(node->body()); |
| 171 } | 182 } |
| 172 } | 183 } |
| 173 | 184 |
| 174 | 185 |
| 175 void UsageComputer::VisitForInStatement(ForInStatement* node) { | 186 void UsageComputer::VisitForInStatement(ForInStatement* node) { |
| 176 WeightScaler ws(this, 10.0); | 187 WeightScaler ws(this, 10.0); |
| 177 Write(node->each()); | 188 Write(node->each()); |
| 178 Read(node->enumerable()); | 189 Read(node->enumerable()); |
| 179 Visit(node->body()); | 190 Visit(node->body()); |
| 180 } | 191 } |
| 181 | 192 |
| 182 | 193 |
| 183 void UsageComputer::VisitTryCatch(TryCatch* node) { | 194 void UsageComputer::VisitTryCatchStatement(TryCatchStatement* node) { |
| 184 Visit(node->try_block()); | 195 Visit(node->try_block()); |
| 185 { WeightScaler ws(this, 0.25); | 196 { WeightScaler ws(this, 0.25); |
| 186 Write(node->catch_var()); | 197 Write(node->catch_var()); |
| 187 Visit(node->catch_block()); | 198 Visit(node->catch_block()); |
| 188 } | 199 } |
| 189 } | 200 } |
| 190 | 201 |
| 191 | 202 |
| 192 void UsageComputer::VisitTryFinally(TryFinally* node) { | 203 void UsageComputer::VisitTryFinallyStatement(TryFinallyStatement* node) { |
| 193 Visit(node->try_block()); | 204 Visit(node->try_block()); |
| 194 Visit(node->finally_block()); | 205 Visit(node->finally_block()); |
| 195 } | 206 } |
| 196 | 207 |
| 197 | 208 |
| 198 void UsageComputer::VisitDebuggerStatement(DebuggerStatement* node) { | 209 void UsageComputer::VisitDebuggerStatement(DebuggerStatement* node) { |
| 199 } | 210 } |
| 200 | 211 |
| 201 | 212 |
| 202 void UsageComputer::VisitFunctionLiteral(FunctionLiteral* node) { | 213 void UsageComputer::VisitFunctionLiteral(FunctionLiteral* node) { |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 406 // ---------------------------------------------------------------------------- | 417 // ---------------------------------------------------------------------------- |
| 407 // Interface to variable usage analysis | 418 // Interface to variable usage analysis |
| 408 | 419 |
| 409 bool AnalyzeVariableUsage(FunctionLiteral* lit) { | 420 bool AnalyzeVariableUsage(FunctionLiteral* lit) { |
| 410 if (!FLAG_usage_computation) return true; | 421 if (!FLAG_usage_computation) return true; |
| 411 HistogramTimerScope timer(&Counters::usage_analysis); | 422 HistogramTimerScope timer(&Counters::usage_analysis); |
| 412 return UsageComputer::Traverse(lit); | 423 return UsageComputer::Traverse(lit); |
| 413 } | 424 } |
| 414 | 425 |
| 415 } } // namespace v8::internal | 426 } } // namespace v8::internal |
| OLD | NEW |