Chromium Code Reviews| Index: src/ia32/lithium-ia32.cc |
| diff --git a/src/ia32/lithium-ia32.cc b/src/ia32/lithium-ia32.cc |
| index 8ebf5ae0cee65f732b62fd952431438fe86c6496..41c37d10dbd60e71e04f0ec51ccaf0aff0e36966 100644 |
| --- a/src/ia32/lithium-ia32.cc |
| +++ b/src/ia32/lithium-ia32.cc |
| @@ -1008,11 +1008,12 @@ LEnvironment* LChunkBuilder::CreateEnvironment( |
| LEnvironment* outer = |
| CreateEnvironment(hydrogen_env->outer(), argument_index_accumulator); |
| int ast_id = hydrogen_env->ast_id(); |
| - ASSERT(ast_id != AstNode::kNoNumber || hydrogen_env->is_arguments_adaptor()); |
| + ASSERT(ast_id != AstNode::kNoNumber || |
| + hydrogen_env->frame_type() != JS_FUNCTION); |
| int value_count = hydrogen_env->length(); |
| LEnvironment* result = |
| new(zone()) LEnvironment(hydrogen_env->closure(), |
| - hydrogen_env->is_arguments_adaptor(), |
| + hydrogen_env->frame_type(), |
| ast_id, |
| hydrogen_env->parameter_count(), |
| argument_count_, |
| @@ -1034,7 +1035,7 @@ LEnvironment* LChunkBuilder::CreateEnvironment( |
| result->AddValue(op, value->representation()); |
| } |
| - if (!hydrogen_env->is_arguments_adaptor()) { |
| + if (hydrogen_env->frame_type() == JS_FUNCTION) { |
| *argument_index_accumulator = argument_index; |
| } |
| @@ -2209,6 +2210,14 @@ LInstruction* LChunkBuilder::DoStringLength(HStringLength* instr) { |
| } |
| +LInstruction* LChunkBuilder::DoAllocateObject(HAllocateObject* instr) { |
| + LOperand* context = UseFixed(instr->context(), esi); |
| + LOperand* function = UseRegister(instr->function()); |
|
Vyacheslav Egorov (Chromium)
2012/02/13 15:01:39
I wonder if this is needed. We don't use this regi
Michael Starzinger
2012/02/27 14:16:32
Done.
|
| + LAllocateObject* result = new(zone()) LAllocateObject(context, function); |
| + return AssignPointerMap(DefineAsRegister(result)); |
| +} |
| + |
| + |
| LInstruction* LChunkBuilder::DoArrayLiteral(HArrayLiteral* instr) { |
| LOperand* context = UseFixed(instr->context(), esi); |
| return MarkAsCall( |
| @@ -2382,7 +2391,8 @@ LInstruction* LChunkBuilder::DoEnterInlined(HEnterInlined* instr) { |
| instr->arguments_count(), |
| instr->function(), |
| undefined, |
| - instr->call_kind()); |
| + instr->call_kind(), |
| + instr->is_construct()); |
| current_block_->UpdateEnvironment(inner); |
| chunk_->AddInlinedClosure(instr->closure()); |
| return NULL; |