Commit 2923136f authored by yangguo@chromium.org's avatar yangguo@chromium.org

Fixing performance regression in issue 1787.

BUG=v8:1787

Review URL: http://codereview.chromium.org/8390050

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9812 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 973383f4
...@@ -6839,6 +6839,11 @@ void StringDictionaryLookupStub::GeneratePositiveLookup(MacroAssembler* masm, ...@@ -6839,6 +6839,11 @@ void StringDictionaryLookupStub::GeneratePositiveLookup(MacroAssembler* masm,
Register name, Register name,
Register scratch1, Register scratch1,
Register scratch2) { Register scratch2) {
ASSERT(!elements.is(scratch1));
ASSERT(!elements.is(scratch2));
ASSERT(!name.is(scratch1));
ASSERT(!name.is(scratch2));
// Assert that name contains a string. // Assert that name contains a string.
if (FLAG_debug_code) __ AbortIfNotString(name); if (FLAG_debug_code) __ AbortIfNotString(name);
...@@ -6882,8 +6887,14 @@ void StringDictionaryLookupStub::GeneratePositiveLookup(MacroAssembler* masm, ...@@ -6882,8 +6887,14 @@ void StringDictionaryLookupStub::GeneratePositiveLookup(MacroAssembler* masm,
~(scratch1.bit() | scratch2.bit()); ~(scratch1.bit() | scratch2.bit());
__ stm(db_w, sp, spill_mask); __ stm(db_w, sp, spill_mask);
__ Move(r0, elements); if (name.is(r0)) {
__ Move(r1, name); ASSERT(!elements.is(r1));
__ Move(r1, name);
__ Move(r0, elements);
} else {
__ Move(r0, elements);
__ Move(r1, name);
}
StringDictionaryLookupStub stub(POSITIVE_LOOKUP); StringDictionaryLookupStub stub(POSITIVE_LOOKUP);
__ CallStub(&stub); __ CallStub(&stub);
__ tst(r0, Operand(r0)); __ tst(r0, Operand(r0));
......
...@@ -6673,6 +6673,11 @@ void StringDictionaryLookupStub::GeneratePositiveLookup(MacroAssembler* masm, ...@@ -6673,6 +6673,11 @@ void StringDictionaryLookupStub::GeneratePositiveLookup(MacroAssembler* masm,
Register name, Register name,
Register r0, Register r0,
Register r1) { Register r1) {
ASSERT(!elements.is(r0));
ASSERT(!elements.is(r1));
ASSERT(!name.is(r0));
ASSERT(!name.is(r1));
// Assert that name contains a string. // Assert that name contains a string.
if (FLAG_debug_code) __ AbortIfNotString(name); if (FLAG_debug_code) __ AbortIfNotString(name);
......
...@@ -5595,6 +5595,11 @@ void StringDictionaryLookupStub::GeneratePositiveLookup(MacroAssembler* masm, ...@@ -5595,6 +5595,11 @@ void StringDictionaryLookupStub::GeneratePositiveLookup(MacroAssembler* masm,
Register name, Register name,
Register r0, Register r0,
Register r1) { Register r1) {
ASSERT(!elements.is(r0));
ASSERT(!elements.is(r1));
ASSERT(!name.is(r0));
ASSERT(!name.is(r1));
// Assert that name contains a string. // Assert that name contains a string.
if (FLAG_debug_code) __ AbortIfNotString(name); if (FLAG_debug_code) __ AbortIfNotString(name);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment