Fix failure in unit tests

R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/25665006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17083 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
danno@chromium.org 2013-10-02 16:13:49 +00:00
parent d4bcf5d730
commit 79a14d3f73
2 changed files with 12 additions and 8 deletions

View File

@ -1932,17 +1932,23 @@ class HEnterInlined V8_FINAL : public HTemplateInstruction<0> {
class HLeaveInlined V8_FINAL : public HTemplateInstruction<0> {
public:
explicit HLeaveInlined(int drop_count) : drop_count_(drop_count) { }
HLeaveInlined(HEnterInlined* entry,
int drop_count)
: entry_(entry),
drop_count_(drop_count) { }
virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
return Representation::None();
}
virtual int argument_delta() const V8_OVERRIDE { return -drop_count_; }
virtual int argument_delta() const V8_OVERRIDE {
return entry_->arguments_pushed() ? -drop_count_ : 0;
}
DECLARE_CONCRETE_INSTRUCTION(LeaveInlined)
private:
HEnterInlined* entry_;
int drop_count_;
};

View File

@ -217,9 +217,8 @@ void HBasicBlock::Goto(HBasicBlock* block,
if (block->IsInlineReturnTarget()) {
HEnvironment* env = last_environment();
int argument_count = state->entry()->arguments_pushed()
? env->arguments_environment()->parameter_count() : 0;
AddInstruction(new(zone()) HLeaveInlined(argument_count));
int argument_count = env->arguments_environment()->parameter_count();
AddInstruction(new(zone()) HLeaveInlined(state->entry(), argument_count));
UpdateEnvironment(last_environment()->DiscardInlined(drop_extra));
}
@ -237,9 +236,8 @@ void HBasicBlock::AddLeaveInlined(HValue* return_value,
ASSERT(target->IsInlineReturnTarget());
ASSERT(return_value != NULL);
HEnvironment* env = last_environment();
int argument_count = state->entry()->arguments_pushed()
? env->arguments_environment()->parameter_count() : 0;
AddInstruction(new(zone()) HLeaveInlined(argument_count));
int argument_count = env->arguments_environment()->parameter_count();
AddInstruction(new(zone()) HLeaveInlined(state->entry(), argument_count));
UpdateEnvironment(last_environment()->DiscardInlined(drop_extra));
last_environment()->Push(return_value);
AddNewSimulate(BailoutId::None());