OLD | NEW |
1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 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 7576 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7587 right_res.Unuse(); | 7587 right_res.Unuse(); |
7588 left_res.Unuse(); | 7588 left_res.Unuse(); |
7589 tmp_res.Unuse(); | 7589 tmp_res.Unuse(); |
7590 __ cmp(left, Operand(right)); | 7590 __ cmp(left, Operand(right)); |
7591 destination()->true_target()->Branch(equal); | 7591 destination()->true_target()->Branch(equal); |
7592 // Fail if either is a non-HeapObject. | 7592 // Fail if either is a non-HeapObject. |
7593 __ mov(tmp, left); | 7593 __ mov(tmp, left); |
7594 __ and_(Operand(tmp), right); | 7594 __ and_(Operand(tmp), right); |
7595 __ test(Operand(tmp), Immediate(kSmiTagMask)); | 7595 __ test(Operand(tmp), Immediate(kSmiTagMask)); |
7596 destination()->false_target()->Branch(equal); | 7596 destination()->false_target()->Branch(equal); |
7597 __ mov(tmp, FieldOperand(left, HeapObject::kMapOffset)); | 7597 __ CmpObjectType(left, JS_REGEXP_TYPE, tmp); |
7598 __ cmpb(FieldOperand(tmp, Map::kInstanceTypeOffset), | |
7599 static_cast<int8_t>(JS_REGEXP_TYPE)); | |
7600 destination()->false_target()->Branch(not_equal); | 7598 destination()->false_target()->Branch(not_equal); |
7601 __ cmp(tmp, FieldOperand(right, HeapObject::kMapOffset)); | 7599 __ cmp(tmp, FieldOperand(right, HeapObject::kMapOffset)); |
7602 destination()->false_target()->Branch(not_equal); | 7600 destination()->false_target()->Branch(not_equal); |
7603 __ mov(tmp, FieldOperand(left, JSRegExp::kDataOffset)); | 7601 __ mov(tmp, FieldOperand(left, JSRegExp::kDataOffset)); |
7604 __ cmp(tmp, FieldOperand(right, JSRegExp::kDataOffset)); | 7602 __ cmp(tmp, FieldOperand(right, JSRegExp::kDataOffset)); |
7605 destination()->Split(equal); | 7603 destination()->Split(equal); |
7606 } | 7604 } |
7607 | 7605 |
7608 | 7606 |
7609 void CodeGenerator::VisitCallRuntime(CallRuntime* node) { | 7607 void CodeGenerator::VisitCallRuntime(CallRuntime* node) { |
(...skipping 6430 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
14040 masm.GetCode(&desc); | 14038 masm.GetCode(&desc); |
14041 // Call the function from C++. | 14039 // Call the function from C++. |
14042 return FUNCTION_CAST<MemCopyFunction>(buffer); | 14040 return FUNCTION_CAST<MemCopyFunction>(buffer); |
14043 } | 14041 } |
14044 | 14042 |
14045 #undef __ | 14043 #undef __ |
14046 | 14044 |
14047 } } // namespace v8::internal | 14045 } } // namespace v8::internal |
14048 | 14046 |
14049 #endif // V8_TARGET_ARCH_IA32 | 14047 #endif // V8_TARGET_ARCH_IA32 |
OLD | NEW |