Chromium Code Reviews| Index: src/ppc/lithium-codegen-ppc.cc |
| diff --git a/src/ppc/lithium-codegen-ppc.cc b/src/ppc/lithium-codegen-ppc.cc |
| index 2ddb658c35c6c765b35fe31c4afccf2d88f7ed74..5863f1441eaab7860a4b85c647e2c6d26306142d 100644 |
| --- a/src/ppc/lithium-codegen-ppc.cc |
| +++ b/src/ppc/lithium-codegen-ppc.cc |
| @@ -119,7 +119,7 @@ bool LCodeGen::GeneratePrologue() { |
| // global proxy when called as functions (without an explicit receiver |
| // object). |
| if (is_sloppy(info_->language_mode()) && info()->MayUseThis() && |
| - !info_->is_native()) { |
| + !info_->is_native() && info_->scope()->has_this_declaration()) { |
|
wingo
2015/05/06 15:56:43
Might want to use info() consistently here
|
| Label ok; |
| int receiver_offset = info_->scope()->num_parameters() * kPointerSize; |
| __ LoadP(r5, MemOperand(sp, receiver_offset)); |
| @@ -199,8 +199,9 @@ bool LCodeGen::GeneratePrologue() { |
| __ StoreP(r3, MemOperand(fp, StandardFrameConstants::kContextOffset)); |
| // Copy any necessary parameters into the context. |
| int num_parameters = scope()->num_parameters(); |
| - for (int i = 0; i < num_parameters; i++) { |
| - Variable* var = scope()->parameter(i); |
| + int first_parameter = scope()->has_this_declaration() ? -1 : 0; |
| + for (int i = first_parameter; i < num_parameters; i++) { |
| + Variable* var = (i == -1) ? scope()->receiver() : scope()->parameter(i); |
| if (var->IsContextSlot()) { |
| int parameter_offset = StandardFrameConstants::kCallerSPOffset + |
| (num_parameters - 1 - i) * kPointerSize; |