| 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 3318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3329 ASSERT_NOT_NULL(lit); | 3329 ASSERT_NOT_NULL(lit); |
| 3330 name = Handle<String>::cast(lit->handle()); | 3330 name = Handle<String>::cast(lit->handle()); |
| 3331 // Do not materialize the receiver on the frame if it is trivial. | 3331 // Do not materialize the receiver on the frame if it is trivial. |
| 3332 is_trivial_receiver = prop->obj()->IsTrivial(); | 3332 is_trivial_receiver = prop->obj()->IsTrivial(); |
| 3333 if (!is_trivial_receiver) Load(prop->obj()); | 3333 if (!is_trivial_receiver) Load(prop->obj()); |
| 3334 } | 3334 } |
| 3335 | 3335 |
| 3336 // Change to slow case in the beginning of an initialization block to | 3336 // Change to slow case in the beginning of an initialization block to |
| 3337 // avoid the quadratic behavior of repeatedly adding fast properties. | 3337 // avoid the quadratic behavior of repeatedly adding fast properties. |
| 3338 if (node->starts_initialization_block()) { | 3338 if (node->starts_initialization_block()) { |
| 3339 // Initialization block consists of assignments on the form expr.x = ..., so | 3339 // Initialization block consists of assignments of the form expr.x = ..., so |
| 3340 // this will never be an assignment to a variable, so there must be a | 3340 // this will never be an assignment to a variable, so there must be a |
| 3341 // receiver object. | 3341 // receiver object. |
| 3342 ASSERT_EQ(NULL, var); | 3342 ASSERT_EQ(NULL, var); |
| 3343 if (is_trivial_receiver) { | 3343 if (is_trivial_receiver) { |
| 3344 Load(prop->obj()); | 3344 Load(prop->obj()); |
| 3345 } else { | 3345 } else { |
| 3346 frame_->Dup(); | 3346 frame_->Dup(); |
| 3347 } | 3347 } |
| 3348 frame_->CallRuntime(Runtime::kToSlowProperties, 1); | 3348 frame_->CallRuntime(Runtime::kToSlowProperties, 1); |
| 3349 } | 3349 } |
| (...skipping 6534 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9884 | 9884 |
| 9885 // Just jump to runtime to add the two strings. | 9885 // Just jump to runtime to add the two strings. |
| 9886 __ bind(&string_add_runtime); | 9886 __ bind(&string_add_runtime); |
| 9887 __ TailCallRuntime(Runtime::kStringAdd, 2, 1); | 9887 __ TailCallRuntime(Runtime::kStringAdd, 2, 1); |
| 9888 } | 9888 } |
| 9889 | 9889 |
| 9890 | 9890 |
| 9891 #undef __ | 9891 #undef __ |
| 9892 | 9892 |
| 9893 } } // namespace v8::internal | 9893 } } // namespace v8::internal |
| OLD | NEW |