| OLD | NEW |
| 1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 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 1342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1353 CatchExtensionObject* expr) { | 1353 CatchExtensionObject* expr) { |
| 1354 ASSERT(av_.IsEmpty()); | 1354 ASSERT(av_.IsEmpty()); |
| 1355 Visit(expr->key()); | 1355 Visit(expr->key()); |
| 1356 ProcessExpression(expr->value()); | 1356 ProcessExpression(expr->value()); |
| 1357 } | 1357 } |
| 1358 | 1358 |
| 1359 | 1359 |
| 1360 void AssignedVariablesAnalyzer::VisitAssignment(Assignment* expr) { | 1360 void AssignedVariablesAnalyzer::VisitAssignment(Assignment* expr) { |
| 1361 ASSERT(av_.IsEmpty()); | 1361 ASSERT(av_.IsEmpty()); |
| 1362 | 1362 |
| 1363 Visit(expr->target()); | 1363 if (expr->target()->AsProperty() != NULL) { |
| 1364 // Visit receiver and key of property store and rhs. |
| 1365 Visit(expr->target()->AsProperty()->obj()); |
| 1366 ProcessExpression(expr->target()->AsProperty()->key()); |
| 1367 ProcessExpression(expr->value()); |
| 1364 | 1368 |
| 1365 ProcessExpression(expr->value()); | 1369 // If we have a variable as a receiver in a property store, check if |
| 1370 // we can mark it as trivial. |
| 1371 MarkIfTrivial(expr->target()->AsProperty()->obj()); |
| 1372 } else { |
| 1373 Visit(expr->target()); |
| 1374 ProcessExpression(expr->value()); |
| 1366 | 1375 |
| 1367 Variable* var = expr->target()->AsVariableProxy()->AsVariable(); | 1376 Variable* var = expr->target()->AsVariableProxy()->AsVariable(); |
| 1368 if (var != NULL) RecordAssignedVar(var); | 1377 if (var != NULL) RecordAssignedVar(var); |
| 1369 | |
| 1370 // If we have a variable as a receiver in a property store, check if | |
| 1371 // we can mark it as trivial. | |
| 1372 if (expr->target()->AsProperty() != NULL) { | |
| 1373 MarkIfTrivial(expr->target()->AsProperty()->obj()); | |
| 1374 } | 1378 } |
| 1375 } | 1379 } |
| 1376 | 1380 |
| 1377 | 1381 |
| 1378 void AssignedVariablesAnalyzer::VisitThrow(Throw* expr) { | 1382 void AssignedVariablesAnalyzer::VisitThrow(Throw* expr) { |
| 1379 ASSERT(av_.IsEmpty()); | 1383 ASSERT(av_.IsEmpty()); |
| 1380 Visit(expr->exception()); | 1384 Visit(expr->exception()); |
| 1381 } | 1385 } |
| 1382 | 1386 |
| 1383 | 1387 |
| (...skipping 590 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1974 | 1978 |
| 1975 // Step 2: Compute KILL and GEN for each block node, initialize RD. | 1979 // Step 2: Compute KILL and GEN for each block node, initialize RD. |
| 1976 for (int i = block_count - 1; i >= 0; i--) { | 1980 for (int i = block_count - 1; i >= 0; i--) { |
| 1977 postorder_->at(i)->InitializeReachingDefinitions(definition_count, | 1981 postorder_->at(i)->InitializeReachingDefinitions(definition_count, |
| 1978 &variables_); | 1982 &variables_); |
| 1979 } | 1983 } |
| 1980 } | 1984 } |
| 1981 | 1985 |
| 1982 | 1986 |
| 1983 } } // namespace v8::internal | 1987 } } // namespace v8::internal |
| OLD | NEW |