Index: src/ia32/lithium-ia32.cc |
diff --git a/src/ia32/lithium-ia32.cc b/src/ia32/lithium-ia32.cc |
index 8ebf5ae0cee65f732b62fd952431438fe86c6496..8da3586347a8144f149e99deeac3078e6f05e8f5 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,13 @@ LInstruction* LChunkBuilder::DoStringLength(HStringLength* instr) { |
} |
+LInstruction* LChunkBuilder::DoAllocateObject(HAllocateObject* instr) { |
+ LOperand* context = UseFixed(instr->context(), esi); |
+ LAllocateObject* result = new(zone()) LAllocateObject(context); |
+ return AssignPointerMap(DefineAsRegister(result)); |
+} |
+ |
+ |
LInstruction* LChunkBuilder::DoArrayLiteral(HArrayLiteral* instr) { |
LOperand* context = UseFixed(instr->context(), esi); |
return MarkAsCall( |
@@ -2382,7 +2390,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; |