Index: src/hydrogen.cc |
diff --git a/src/hydrogen.cc b/src/hydrogen.cc |
index 44f9b8a64be51c79fd50bb24d569d57c5730ebc2..57fd079d13eada739da5bf06d2005b636563b46e 100644 |
--- a/src/hydrogen.cc |
+++ b/src/hydrogen.cc |
@@ -168,9 +168,10 @@ void HBasicBlock::Finish(HControlInstruction* end) { |
void HBasicBlock::Goto(HBasicBlock* block, FunctionState* state) { |
bool drop_extra = state != NULL && |
state->inlining_kind() == DROP_EXTRA_ON_RETURN; |
+ bool arguments_pushed = state != NULL && state->arguments_pushed(); |
if (block->IsInlineReturnTarget()) { |
- AddInstruction(new(zone()) HLeaveInlined()); |
+ AddInstruction(new(zone()) HLeaveInlined(arguments_pushed)); |
last_environment_ = last_environment()->DiscardInlined(drop_extra); |
} |
@@ -184,10 +185,11 @@ void HBasicBlock::AddLeaveInlined(HValue* return_value, |
FunctionState* state) { |
HBasicBlock* target = state->function_return(); |
bool drop_extra = state->inlining_kind() == DROP_EXTRA_ON_RETURN; |
+ bool arguments_pushed = state->arguments_pushed(); |
ASSERT(target->IsInlineReturnTarget()); |
ASSERT(return_value != NULL); |
- AddInstruction(new(zone()) HLeaveInlined()); |
+ AddInstruction(new(zone()) HLeaveInlined(arguments_pushed)); |
last_environment_ = last_environment()->DiscardInlined(drop_extra); |
last_environment()->Push(return_value); |
AddSimulate(BailoutId::None()); |
@@ -3430,8 +3432,6 @@ class BoundsCheckKey : public ZoneObject { |
static BoundsCheckKey* Create(Zone* zone, |
HBoundsCheck* check, |
int32_t* offset) { |
- if (!check->index()->representation().IsInteger32()) return NULL; |
- |
HValue* index_base = NULL; |
HConstant* constant = NULL; |
bool is_sub = false; |
@@ -3682,7 +3682,6 @@ void HGraph::EliminateRedundantBoundsChecks(HBasicBlock* bb, |
int32_t offset; |
BoundsCheckKey* key = |
BoundsCheckKey::Create(zone(), check, &offset); |
- if (key == NULL) continue; |
BoundsCheckBbData** data_p = table->LookupOrInsert(key, zone()); |
BoundsCheckBbData* data = *data_p; |
if (data == NULL) { |
@@ -6551,7 +6550,6 @@ void HGraphBuilder::EnsureArgumentsArePushedForAccess() { |
// Push arguments when entering inlined function. |
HEnterInlined* entry = function_state()->entry(); |
- entry->set_arguments_pushed(); |
ZoneList<HValue*>* arguments_values = entry->arguments_values(); |
@@ -9394,7 +9392,6 @@ HEnvironment::HEnvironment(HEnvironment* outer, |
specials_count_(1), |
local_count_(0), |
outer_(outer), |
- entry_(NULL), |
pop_count_(0), |
push_count_(0), |
ast_id_(BailoutId::None()), |
@@ -9411,7 +9408,6 @@ HEnvironment::HEnvironment(const HEnvironment* other, Zone* zone) |
specials_count_(1), |
local_count_(0), |
outer_(NULL), |
- entry_(NULL), |
pop_count_(0), |
push_count_(0), |
ast_id_(other->ast_id()), |
@@ -9432,7 +9428,6 @@ HEnvironment::HEnvironment(HEnvironment* outer, |
parameter_count_(arguments), |
local_count_(0), |
outer_(outer), |
- entry_(NULL), |
pop_count_(0), |
push_count_(0), |
ast_id_(BailoutId::None()), |
@@ -9461,7 +9456,6 @@ void HEnvironment::Initialize(const HEnvironment* other) { |
parameter_count_ = other->parameter_count_; |
local_count_ = other->local_count_; |
if (other->outer_ != NULL) outer_ = other->outer_->Copy(); // Deep copy. |
- entry_ = other->entry_; |
pop_count_ = other->pop_count_; |
push_count_ = other->push_count_; |
ast_id_ = other->ast_id_; |