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

Unified Diff: src/objects.cc

Issue 109015: Revert workaround for http://crbug.com/9746. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 11 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | test/cctest/test-debug.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/objects.cc
===================================================================
--- src/objects.cc (revision 1858)
+++ src/objects.cc (working copy)
@@ -3305,13 +3305,6 @@
}
ASSERT(string_tag == kExternalStringTag);
ExternalTwoByteString* ext = ExternalTwoByteString::cast(string);
- // This is a workaround for Chromium bug 9746: http://crbug.com/9746
- // For external strings with a deleted resource we return a special
- // Vector which will not compare to any string when doing SymbolTable
- // lookups.
- if (ext->resource() == NULL) {
- return Vector<const uc16>(NULL, length);
- }
const uc16* start =
reinterpret_cast<const uc16*>(ext->resource()->data());
return Vector<const uc16>(start + offset, length);
@@ -4128,18 +4121,6 @@
}
-// This is a workaround for Chromium bug 9746: http://crbug.com/9746
-// Returns true if this Vector matches the problem exposed in the bug.
-template <typename T>
-static bool CheckVectorForBug9746(Vector<T> vec) {
- // The problem is that somehow external string entries in the symbol
- // table can have their resources collected while they are still in the
- // table. This should not happen according to the test in the function
- // DisposeExternalString in api.cc, but we have evidence that it does.
- return (vec.start() == NULL) ? true : false;
-}
-
-
static StringInputBuffer string_compare_buffer_b;
@@ -4150,9 +4131,7 @@
VectorIterator<char> ib(b->ToAsciiVector());
return CompareStringContents(ia, &ib);
} else {
- Vector<const uc16> vb = b->ToUC16Vector();
- if (CheckVectorForBug9746(vb)) return false;
- VectorIterator<uc16> ib(vb);
+ VectorIterator<uc16> ib(b->ToUC16Vector());
return CompareStringContents(ia, &ib);
}
} else {
@@ -4194,9 +4173,7 @@
return CompareRawStringContents(vec1, vec2);
} else {
VectorIterator<char> buf1(vec1);
- Vector<const uc16> vec2 = other->ToUC16Vector();
- if (CheckVectorForBug9746(vec2)) return false;
- VectorIterator<uc16> ib(vec2);
+ VectorIterator<uc16> ib(other->ToUC16Vector());
return CompareStringContents(&buf1, &ib);
}
} else {
@@ -4206,15 +4183,13 @@
}
} else {
Vector<const uc16> vec1 = this->ToUC16Vector();
- if (CheckVectorForBug9746(vec1)) return false;
if (other->IsFlat()) {
if (other->IsAsciiRepresentation()) {
VectorIterator<uc16> buf1(vec1);
VectorIterator<char> ib(other->ToAsciiVector());
return CompareStringContents(&buf1, &ib);
} else {
- Vector<const uc16> vec2 = other->ToUC16Vector();
- if (CheckVectorForBug9746(vec2)) return false;
+ Vector<const uc16> vec2(other->ToUC16Vector());
return CompareRawStringContents(vec1, vec2);
}
} else {
@@ -4259,18 +4234,6 @@
bool String::IsEqualTo(Vector<const char> str) {
- // This is a workaround for Chromium bug 9746: http://crbug.com/9746
- // The problem is that somehow external string entries in the symbol
- // table can have their resources deleted while they are still in the
- // table. This should not happen according to the test in the function
- // DisposeExternalString in api.cc but we have evidence that it does.
- // Thus we add this bailout here.
- StringShape shape(this);
- if (shape.IsExternalTwoByte()) {
- ExternalTwoByteString* ext = ExternalTwoByteString::cast(this);
- if (ext->resource() == NULL) return false;
- }
-
int slen = length();
Access<Scanner::Utf8Decoder> decoder(Scanner::utf8_decoder());
decoder->Reset(str.start(), str.length());
« no previous file with comments | « no previous file | test/cctest/test-debug.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698