OLD | NEW |
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 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 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 | 96 |
97 // Make sure that there are no register conflicts. | 97 // Make sure that there are no register conflicts. |
98 ASSERT(!scratch.is(receiver)); | 98 ASSERT(!scratch.is(receiver)); |
99 ASSERT(!scratch.is(name)); | 99 ASSERT(!scratch.is(name)); |
100 | 100 |
101 // Check that the receiver isn't a smi. | 101 // Check that the receiver isn't a smi. |
102 __ tst(receiver, Operand(kSmiTagMask)); | 102 __ tst(receiver, Operand(kSmiTagMask)); |
103 __ b(eq, &miss); | 103 __ b(eq, &miss); |
104 | 104 |
105 // Get the map of the receiver and compute the hash. | 105 // Get the map of the receiver and compute the hash. |
106 __ ldr(scratch, FieldMemOperand(receiver, HeapObject::kMapOffset)); | 106 __ ldr(scratch, FieldMemOperand(name, String::kLengthOffset)); |
107 __ ldr(ip, FieldMemOperand(name, String::kLengthOffset)); | 107 __ ldr(ip, FieldMemOperand(receiver, HeapObject::kMapOffset)); |
108 __ add(scratch, scratch, Operand(ip)); | 108 __ add(scratch, scratch, Operand(ip)); |
109 __ eor(scratch, scratch, Operand(flags)); | 109 __ eor(scratch, scratch, Operand(flags)); |
110 __ and_(scratch, | 110 __ and_(scratch, |
111 scratch, | 111 scratch, |
112 Operand((kPrimaryTableSize - 1) << kHeapObjectTagSize)); | 112 Operand((kPrimaryTableSize - 1) << kHeapObjectTagSize)); |
113 | 113 |
114 // Probe the primary table. | 114 // Probe the primary table. |
115 ProbeTable(masm, flags, kPrimary, name, scratch); | 115 ProbeTable(masm, flags, kPrimary, name, scratch); |
116 | 116 |
117 // Primary miss: Compute hash for secondary probe. | 117 // Primary miss: Compute hash for secondary probe. |
(...skipping 679 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
797 String* name) { | 797 String* name) { |
798 UNIMPLEMENTED(); | 798 UNIMPLEMENTED(); |
799 return Heap::undefined_value(); | 799 return Heap::undefined_value(); |
800 } | 800 } |
801 | 801 |
802 | 802 |
803 | 803 |
804 #undef __ | 804 #undef __ |
805 | 805 |
806 } } // namespace v8::internal | 806 } } // namespace v8::internal |
OLD | NEW |