Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(46)

Side by Side Diff: src/mips/code-stubs-mips.cc

Issue 8417050: MIPS: Fixed wrong register usage in StringDictionaryLookupStub::GenerateNegativeLookup. (Closed)
Patch Set: Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 6961 matching lines...) Expand 10 before | Expand all | Expand 10 after
6972 6972
6973 // Scale the index by multiplying by the entry size. 6973 // Scale the index by multiplying by the entry size.
6974 ASSERT(StringDictionary::kEntrySize == 3); 6974 ASSERT(StringDictionary::kEntrySize == 3);
6975 __ sll(at, index, 1); 6975 __ sll(at, index, 1);
6976 __ Addu(index, index, at); 6976 __ Addu(index, index, at);
6977 6977
6978 Register entity_name = scratch0; 6978 Register entity_name = scratch0;
6979 // Having undefined at this place means the name is not contained. 6979 // Having undefined at this place means the name is not contained.
6980 ASSERT_EQ(kSmiTagSize, 1); 6980 ASSERT_EQ(kSmiTagSize, 1);
6981 Register tmp = properties; 6981 Register tmp = properties;
6982 __ sll(tmp, index, 1); 6982 __ sll(scratch0, index, 1);
6983 __ Addu(tmp, properties, tmp); 6983 __ Addu(tmp, properties, scratch0);
6984 __ lw(entity_name, FieldMemOperand(tmp, kElementsStartOffset)); 6984 __ lw(entity_name, FieldMemOperand(tmp, kElementsStartOffset));
6985 6985
6986 ASSERT(!tmp.is(entity_name)); 6986 ASSERT(!tmp.is(entity_name));
6987 __ LoadRoot(tmp, Heap::kUndefinedValueRootIndex); 6987 __ LoadRoot(tmp, Heap::kUndefinedValueRootIndex);
6988 __ Branch(done, eq, entity_name, Operand(tmp)); 6988 __ Branch(done, eq, entity_name, Operand(tmp));
6989 6989
6990 if (i != kInlinedProbes - 1) { 6990 if (i != kInlinedProbes - 1) {
6991 // Stop if found the property. 6991 // Stop if found the property.
6992 __ Branch(miss, eq, entity_name, Operand(Handle<String>(name))); 6992 __ Branch(miss, eq, entity_name, Operand(Handle<String>(name)));
6993 6993
6994 // Check if the entry name is not a symbol. 6994 // Check if the entry name is not a symbol.
6995 __ lw(entity_name, FieldMemOperand(entity_name, HeapObject::kMapOffset)); 6995 __ lw(entity_name, FieldMemOperand(entity_name, HeapObject::kMapOffset));
6996 __ lbu(entity_name, 6996 __ lbu(entity_name,
6997 FieldMemOperand(entity_name, Map::kInstanceTypeOffset)); 6997 FieldMemOperand(entity_name, Map::kInstanceTypeOffset));
6998 __ And(tmp, entity_name, Operand(kIsSymbolMask)); 6998 __ And(scratch0, entity_name, Operand(kIsSymbolMask));
6999 __ Branch(miss, eq, tmp, Operand(zero_reg)); 6999 __ Branch(miss, eq, scratch0, Operand(zero_reg));
7000 7000
7001 // Restore the properties. 7001 // Restore the properties.
7002 __ lw(properties, 7002 __ lw(properties,
7003 FieldMemOperand(receiver, JSObject::kPropertiesOffset)); 7003 FieldMemOperand(receiver, JSObject::kPropertiesOffset));
7004 } 7004 }
7005 } 7005 }
7006 7006
7007 const int spill_mask = 7007 const int spill_mask =
7008 (ra.bit() | t2.bit() | t1.bit() | t0.bit() | a3.bit() | 7008 (ra.bit() | t2.bit() | t1.bit() | t0.bit() | a3.bit() |
7009 a2.bit() | a1.bit() | a0.bit() | v0.bit()); 7009 a2.bit() | a1.bit() | a0.bit() | v0.bit());
(...skipping 536 matching lines...) Expand 10 before | Expand all | Expand 10 after
7546 7546
7547 // Fall through when we need to inform the incremental marker. 7547 // Fall through when we need to inform the incremental marker.
7548 } 7548 }
7549 7549
7550 7550
7551 #undef __ 7551 #undef __
7552 7552
7553 } } // namespace v8::internal 7553 } } // namespace v8::internal
7554 7554
7555 #endif // V8_TARGET_ARCH_MIPS 7555 #endif // V8_TARGET_ARCH_MIPS
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698