| 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 1032 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1043 assign_type = | 1043 assign_type = |
| 1044 (prop->key()->IsPropertyName()) ? NAMED_PROPERTY : KEYED_PROPERTY; | 1044 (prop->key()->IsPropertyName()) ? NAMED_PROPERTY : KEYED_PROPERTY; |
| 1045 } | 1045 } |
| 1046 | 1046 |
| 1047 // Evaluate LHS expression. | 1047 // Evaluate LHS expression. |
| 1048 switch (assign_type) { | 1048 switch (assign_type) { |
| 1049 case VARIABLE: | 1049 case VARIABLE: |
| 1050 // Nothing to do here. | 1050 // Nothing to do here. |
| 1051 break; | 1051 break; |
| 1052 case NAMED_PROPERTY: | 1052 case NAMED_PROPERTY: |
| 1053 VisitForValue(prop->obj(), kStack); | 1053 if (expr->is_compound()) { |
| 1054 // We need the receiver both on the stack and in the accumulator. |
| 1055 VisitForValue(prop->obj(), kAccumulator); |
| 1056 __ push(result_register()); |
| 1057 } else { |
| 1058 VisitForValue(prop->obj(), kStack); |
| 1059 } |
| 1054 break; | 1060 break; |
| 1055 case KEYED_PROPERTY: | 1061 case KEYED_PROPERTY: |
| 1056 VisitForValue(prop->obj(), kStack); | 1062 VisitForValue(prop->obj(), kStack); |
| 1057 VisitForValue(prop->key(), kStack); | 1063 VisitForValue(prop->key(), kStack); |
| 1058 break; | 1064 break; |
| 1059 } | 1065 } |
| 1060 | 1066 |
| 1061 // If we have a compound assignment: Get value of LHS expression and | 1067 // If we have a compound assignment: Get value of LHS expression and |
| 1062 // store in on top of the stack. | 1068 // store in on top of the stack. |
| 1063 if (expr->is_compound()) { | 1069 if (expr->is_compound()) { |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1144 // The macros used here must preserve the result register. | 1150 // The macros used here must preserve the result register. |
| 1145 __ Drop(stack_depth); | 1151 __ Drop(stack_depth); |
| 1146 __ PopTryHandler(); | 1152 __ PopTryHandler(); |
| 1147 return 0; | 1153 return 0; |
| 1148 } | 1154 } |
| 1149 | 1155 |
| 1150 #undef __ | 1156 #undef __ |
| 1151 | 1157 |
| 1152 | 1158 |
| 1153 } } // namespace v8::internal | 1159 } } // namespace v8::internal |
| OLD | NEW |