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

Side by Side Diff: src/api.cc

Issue 9817005: Unbork Windows 64 bit build and guard against overlong UTF-8 (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 8 years, 9 months 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 | Annotate | Revision Log
« 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 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 3703 matching lines...) Expand 10 before | Expand all | Expand 10 after
3714 const uint16_t* data = i::ExternalTwoByteString::cast(string)-> 3714 const uint16_t* data = i::ExternalTwoByteString::cast(string)->
3715 ExternalTwoByteStringGetData(0); 3715 ExternalTwoByteStringGetData(0);
3716 char* current = buffer; 3716 char* current = buffer;
3717 for (int i = start; i < end; i++) { 3717 for (int i = start; i < end; i++) {
3718 uint16_t character = data[i]; 3718 uint16_t character = data[i];
3719 current += 3719 current +=
3720 unibrow::Utf8::Encode(current, character, previous_character); 3720 unibrow::Utf8::Encode(current, character, previous_character);
3721 previous_character = character; 3721 previous_character = character;
3722 } 3722 }
3723 *last_character = previous_character; 3723 *last_character = previous_character;
3724 return utf8_bytes + current - buffer; 3724 return static_cast<int>(utf8_bytes + current - buffer);
3725 } 3725 }
3726 case i::kSeqStringTag: { 3726 case i::kSeqStringTag: {
3727 const uint16_t* data = 3727 const uint16_t* data =
3728 i::SeqTwoByteString::cast(string)->SeqTwoByteStringGetData(0); 3728 i::SeqTwoByteString::cast(string)->SeqTwoByteStringGetData(0);
3729 char* current = buffer; 3729 char* current = buffer;
3730 for (int i = start; i < end; i++) { 3730 for (int i = start; i < end; i++) {
3731 uint16_t character = data[i]; 3731 uint16_t character = data[i];
3732 current += 3732 current +=
3733 unibrow::Utf8::Encode(current, character, previous_character); 3733 unibrow::Utf8::Encode(current, character, previous_character);
3734 previous_character = character; 3734 previous_character = character;
3735 } 3735 }
3736 *last_character = previous_character; 3736 *last_character = previous_character;
3737 return utf8_bytes + current - buffer; 3737 return static_cast<int>(utf8_bytes + current - buffer);
3738 } 3738 }
3739 case i::kSlicedStringTag: { 3739 case i::kSlicedStringTag: {
3740 i::SlicedString* slice = i::SlicedString::cast(string); 3740 i::SlicedString* slice = i::SlicedString::cast(string);
3741 unsigned offset = slice->offset(); 3741 unsigned offset = slice->offset();
3742 string = slice->parent(); 3742 string = slice->parent();
3743 start += offset; 3743 start += offset;
3744 end += offset; 3744 end += offset;
3745 continue; 3745 continue;
3746 } 3746 }
3747 case i::kConsStringTag: { 3747 case i::kConsStringTag: {
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
3811 } 3811 }
3812 i::String::WriteToFlat(*str, buffer, 0, len); 3812 i::String::WriteToFlat(*str, buffer, 0, len);
3813 if (nchars_ref != NULL) *nchars_ref = len; 3813 if (nchars_ref != NULL) *nchars_ref = len;
3814 if (!(options & NO_NULL_TERMINATION) && capacity > len) { 3814 if (!(options & NO_NULL_TERMINATION) && capacity > len) {
3815 buffer[len] = '\0'; 3815 buffer[len] = '\0';
3816 return len + 1; 3816 return len + 1;
3817 } 3817 }
3818 return len; 3818 return len;
3819 } 3819 }
3820 3820
3821 if (capacity == -1 || capacity >= string_length * 3) { 3821 if (capacity == -1 || capacity / 3 >= string_length) {
3822 int32_t previous = unibrow::Utf16::kNoPreviousCharacter; 3822 int32_t previous = unibrow::Utf16::kNoPreviousCharacter;
3823 const int kMaxRecursion = 100; 3823 const int kMaxRecursion = 100;
3824 int utf8_bytes = 3824 int utf8_bytes =
3825 RecursivelySerializeToUtf8(*str, 3825 RecursivelySerializeToUtf8(*str,
3826 buffer, 3826 buffer,
3827 0, 3827 0,
3828 string_length, 3828 string_length,
3829 kMaxRecursion, 3829 kMaxRecursion,
3830 previous, 3830 previous,
3831 &previous); 3831 &previous);
(...skipping 2524 matching lines...) Expand 10 before | Expand all | Expand 10 after
6356 6356
6357 6357
6358 char* HandleScopeImplementer::Iterate(ObjectVisitor* v, char* storage) { 6358 char* HandleScopeImplementer::Iterate(ObjectVisitor* v, char* storage) {
6359 HandleScopeImplementer* scope_implementer = 6359 HandleScopeImplementer* scope_implementer =
6360 reinterpret_cast<HandleScopeImplementer*>(storage); 6360 reinterpret_cast<HandleScopeImplementer*>(storage);
6361 scope_implementer->IterateThis(v); 6361 scope_implementer->IterateThis(v);
6362 return storage + ArchiveSpacePerThread(); 6362 return storage + ArchiveSpacePerThread();
6363 } 6363 }
6364 6364
6365 } } // namespace v8::internal 6365 } } // namespace v8::internal
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