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 5454 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5465 } | 5465 } |
5466 | 5466 |
5467 | 5467 |
5468 // ------------------------------------------------------------------------- | 5468 // ------------------------------------------------------------------------- |
5469 // StringCharFromCodeGenerator | 5469 // StringCharFromCodeGenerator |
5470 | 5470 |
5471 void StringCharFromCodeGenerator::GenerateFast(MacroAssembler* masm) { | 5471 void StringCharFromCodeGenerator::GenerateFast(MacroAssembler* masm) { |
5472 // Fast case of Heap::LookupSingleCharacterStringFromCode. | 5472 // Fast case of Heap::LookupSingleCharacterStringFromCode. |
5473 STATIC_ASSERT(kSmiTag == 0); | 5473 STATIC_ASSERT(kSmiTag == 0); |
5474 STATIC_ASSERT(kSmiShiftSize == 0); | 5474 STATIC_ASSERT(kSmiShiftSize == 0); |
5475 ASSERT(IsPowerOf2(String::kMaxAsciiCharCode + 1)); | 5475 ASSERT(IsPowerOf2(String::kMaxOneByteCharCode + 1)); |
5476 __ test(code_, | 5476 __ test(code_, |
5477 Immediate(kSmiTagMask | | 5477 Immediate(kSmiTagMask | |
5478 ((~String::kMaxAsciiCharCode) << kSmiTagSize))); | 5478 ((~String::kMaxOneByteCharCode) << kSmiTagSize))); |
5479 __ j(not_zero, &slow_case_); | 5479 __ j(not_zero, &slow_case_); |
5480 | 5480 |
5481 Factory* factory = masm->isolate()->factory(); | 5481 Factory* factory = masm->isolate()->factory(); |
5482 __ Set(result_, Immediate(factory->single_character_string_cache())); | 5482 __ Set(result_, Immediate(factory->single_character_string_cache())); |
5483 STATIC_ASSERT(kSmiTag == 0); | 5483 STATIC_ASSERT(kSmiTag == 0); |
5484 STATIC_ASSERT(kSmiTagSize == 1); | 5484 STATIC_ASSERT(kSmiTagSize == 1); |
5485 STATIC_ASSERT(kSmiShiftSize == 0); | 5485 STATIC_ASSERT(kSmiShiftSize == 0); |
5486 // At this point code register contains smi tagged ASCII char code. | 5486 // At this point code register contains smi tagged ASCII char code. |
5487 __ mov(result_, FieldOperand(result_, | 5487 __ mov(result_, FieldOperand(result_, |
5488 code_, times_half_pointer_size, | 5488 code_, times_half_pointer_size, |
(...skipping 1987 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7476 // Restore ecx. | 7476 // Restore ecx. |
7477 __ pop(ecx); | 7477 __ pop(ecx); |
7478 __ ret(0); | 7478 __ ret(0); |
7479 } | 7479 } |
7480 | 7480 |
7481 #undef __ | 7481 #undef __ |
7482 | 7482 |
7483 } } // namespace v8::internal | 7483 } } // namespace v8::internal |
7484 | 7484 |
7485 #endif // V8_TARGET_ARCH_IA32 | 7485 #endif // V8_TARGET_ARCH_IA32 |
OLD | NEW |