| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 5189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5200 __ jmp(&done); | 5200 __ jmp(&done); |
| 5201 | 5201 |
| 5202 __ bind(&is_smi); | 5202 __ bind(&is_smi); |
| 5203 __ ClampUint8(result_reg, scratch); | 5203 __ ClampUint8(result_reg, scratch); |
| 5204 | 5204 |
| 5205 __ bind(&done); | 5205 __ bind(&done); |
| 5206 } | 5206 } |
| 5207 | 5207 |
| 5208 | 5208 |
| 5209 void LCodeGen::DoCheckPrototypeMaps(LCheckPrototypeMaps* instr) { | 5209 void LCodeGen::DoCheckPrototypeMaps(LCheckPrototypeMaps* instr) { |
| 5210 ASSERT(instr->temp()->Equals(instr->result())); | |
| 5211 Register prototype_reg = ToRegister(instr->temp()); | 5210 Register prototype_reg = ToRegister(instr->temp()); |
| 5212 Register map_reg = ToRegister(instr->temp2()); | 5211 Register map_reg = ToRegister(instr->temp2()); |
| 5213 | 5212 |
| 5214 ZoneList<Handle<JSObject> >* prototypes = instr->prototypes(); | 5213 ZoneList<Handle<JSObject> >* prototypes = instr->prototypes(); |
| 5215 ZoneList<Handle<Map> >* maps = instr->maps(); | 5214 ZoneList<Handle<Map> >* maps = instr->maps(); |
| 5216 | 5215 |
| 5217 ASSERT(prototypes->length() == maps->length()); | 5216 ASSERT(prototypes->length() == maps->length()); |
| 5218 | 5217 |
| 5219 if (instr->hydrogen()->CanOmitPrototypeChecks()) { | 5218 if (instr->hydrogen()->CanOmitPrototypeChecks()) { |
| 5220 for (int i = 0; i < maps->length(); i++) { | 5219 for (int i = 0; i < maps->length(); i++) { |
| 5221 prototype_maps_.Add(maps->at(i), info()->zone()); | 5220 prototype_maps_.Add(maps->at(i), info()->zone()); |
| 5222 } | 5221 } |
| 5223 __ LoadHeapObject(prototype_reg, | |
| 5224 prototypes->at(prototypes->length() - 1)); | |
| 5225 } else { | 5222 } else { |
| 5226 for (int i = 0; i < prototypes->length(); i++) { | 5223 for (int i = 0; i < prototypes->length(); i++) { |
| 5227 __ LoadHeapObject(prototype_reg, prototypes->at(i)); | 5224 __ LoadHeapObject(prototype_reg, prototypes->at(i)); |
| 5228 __ lw(map_reg, FieldMemOperand(prototype_reg, HeapObject::kMapOffset)); | 5225 __ lw(map_reg, FieldMemOperand(prototype_reg, HeapObject::kMapOffset)); |
| 5229 DoCheckMapCommon(map_reg, | 5226 DoCheckMapCommon(map_reg, |
| 5230 maps->at(i), | 5227 maps->at(i), |
| 5231 ALLOW_ELEMENT_TRANSITION_MAPS, | 5228 ALLOW_ELEMENT_TRANSITION_MAPS, |
| 5232 instr->environment()); | 5229 instr->environment()); |
| 5233 } | 5230 } |
| 5234 } | 5231 } |
| (...skipping 865 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6100 __ Subu(scratch, result, scratch); | 6097 __ Subu(scratch, result, scratch); |
| 6101 __ lw(result, FieldMemOperand(scratch, | 6098 __ lw(result, FieldMemOperand(scratch, |
| 6102 FixedArray::kHeaderSize - kPointerSize)); | 6099 FixedArray::kHeaderSize - kPointerSize)); |
| 6103 __ bind(&done); | 6100 __ bind(&done); |
| 6104 } | 6101 } |
| 6105 | 6102 |
| 6106 | 6103 |
| 6107 #undef __ | 6104 #undef __ |
| 6108 | 6105 |
| 6109 } } // namespace v8::internal | 6106 } } // namespace v8::internal |
| OLD | NEW |