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 |