}
-String::FlatContent String::GetFlatContent(const AssertNoAllocation& promise) {
- // Argument isn't used, it's only there to ensure that the user is
- // aware that the extracted vectors may not survive a GC.
+String::FlatContent String::GetFlatContent() {
int length = this->length();
StringShape shape(this);
String* string = this;
if (str_ == NULL) return;
Handle<String> str(str_);
ASSERT(str->IsFlat());
- AssertNoAllocation no_alloc;
- String::FlatContent content = str->GetFlatContent(no_alloc);
- ASSERT(content.is_flat());
+ String::FlatContent content = str->GetFlatContent();
+ ASSERT(content.IsFlat());
is_ascii_ = content.IsAscii();
if (is_ascii_) {
start_ = content.ToAsciiVector().start();
static inline bool CompareStringContentsPartial(Isolate* isolate,
IteratorA* ia,
String* b) {
- AssertNoAllocation no_alloc;
- String::FlatContent content = b->GetFlatContent(no_alloc);
+ String::FlatContent content = b->GetFlatContent();
if (content.IsFlat()) {
if (content.IsAscii()) {
VectorIterator<char> ib(content.ToAsciiVector());
String* lhs = this->TryFlattenGetString();
String* rhs = other->TryFlattenGetString();
- AssertNoAllocation no_alloc;
-
if (StringShape(lhs).IsSequentialAscii() &&
StringShape(rhs).IsSequentialAscii()) {
const char* str1 = SeqAsciiString::cast(lhs)->GetChars();
}
Isolate* isolate = GetIsolate();
- String::FlatContent lhs_content = lhs->GetFlatContent(no_alloc);
- String::FlatContent rhs_content = rhs->GetFlatContent(no_alloc);
+ String::FlatContent lhs_content = lhs->GetFlatContent();
+ String::FlatContent rhs_content = rhs->GetFlatContent();
if (lhs_content.IsFlat()) {
if (lhs_content.IsAscii()) {
Vector<const char> vec1 = lhs_content.ToAsciiVector();
bool String::IsAsciiEqualTo(Vector<const char> str) {
- AssertNoAllocation no_alloc;
int slen = length();
if (str.length() != slen) return false;
- FlatContent content = GetFlatContent(no_alloc);
+ FlatContent content = GetFlatContent();
if (content.IsAscii()) {
return CompareChars(content.ToAsciiVector().start(),
str.start(), slen) == 0;
bool String::IsTwoByteEqualTo(Vector<const uc16> str) {
- AssertNoAllocation no_alloc;
int slen = length();
if (str.length() != slen) return false;
- FlatContent content = GetFlatContent(no_alloc);
+ FlatContent content = GetFlatContent();
if (content.IsTwoByte()) {
return CompareChars(content.ToUC16Vector().start(), str.start(), slen) == 0;
}
int subject_length) {
{
AssertNoAllocation no_alloc;
- String::FlatContent content = replacement->GetFlatContent(no_alloc);
+ String::FlatContent content = replacement->GetFlatContent();
ASSERT(content.IsFlat());
if (content.IsAscii()) {
ParseReplacementPattern(&parts_,
AssertNoAllocation no_heap_allocation; // ensure vectors stay valid
// Extract flattened substrings of cons strings before determining asciiness.
- String::FlatContent seq_sub = sub->GetFlatContent(no_heap_allocation);
- String::FlatContent seq_pat = pat->GetFlatContent(no_heap_allocation);
+ String::FlatContent seq_sub = sub->GetFlatContent();
+ String::FlatContent seq_pat = pat->GetFlatContent();
// dispatch on type of strings
if (seq_pat.IsAscii()) {
int position = -1;
AssertNoAllocation no_heap_allocation; // ensure vectors stay valid
- String::FlatContent sub_content = sub->GetFlatContent(no_heap_allocation);
- String::FlatContent pat_content = pat->GetFlatContent(no_heap_allocation);
+ String::FlatContent sub_content = sub->GetFlatContent();
+ String::FlatContent pat_content = pat->GetFlatContent();
if (pat_content.IsAscii()) {
Vector<const char> pat_vector = pat_content.ToAsciiVector();
for (;;) { // Break when search complete.
builder->EnsureCapacity(kMaxBuilderEntriesPerRegExpMatch);
AssertNoAllocation no_gc;
- String::FlatContent subject_content = subject->GetFlatContent(no_gc);
- String::FlatContent pattern_content = pattern->GetFlatContent(no_gc);
+ String::FlatContent subject_content = subject->GetFlatContent();
+ String::FlatContent pattern_content = pattern->GetFlatContent();
if (subject_content.IsAscii()) {
Vector<const char> subject_vector = subject_content.ToAsciiVector();
if (pattern_content.IsAscii()) {
str = String::cast(flat);
ASSERT(str->IsFlat());
}
- AssertNoAllocation no_alloc;
- String::FlatContent flat = str->GetFlatContent(no_alloc);
+ String::FlatContent flat = str->GetFlatContent();
ASSERT(flat.IsFlat());
if (flat.IsTwoByte()) {
return QuoteJsonString<uc16, SeqTwoByteString, false>(isolate,
str = String::cast(flat);
ASSERT(str->IsFlat());
}
- AssertNoAllocation no_alloc;
- String::FlatContent flat = str->GetFlatContent(no_alloc);
+ String::FlatContent flat = str->GetFlatContent();
if (flat.IsTwoByte()) {
return QuoteJsonString<uc16, SeqTwoByteString, true>(isolate,
flat.ToUC16Vector());
for (int i = 0; i < length; i++) {
if (i != 0) *(write_cursor++) = ',';
String* str = String::cast(array->get(i));
- String::FlatContent content = str->GetFlatContent(no_gc);
+ String::FlatContent content = str->GetFlatContent();
ASSERT(content.IsFlat());
if (content.IsTwoByte()) {
write_cursor = WriteQuoteJsonString<Char, uc16>(isolate,
// No allocation block.
{
AssertNoAllocation no_gc;
- String::FlatContent subject_content = subject->GetFlatContent(no_gc);
- String::FlatContent pattern_content = pattern->GetFlatContent(no_gc);
+ String::FlatContent subject_content = subject->GetFlatContent();
+ String::FlatContent pattern_content = pattern->GetFlatContent();
ASSERT(subject_content.IsFlat());
ASSERT(pattern_content.IsFlat());
if (subject_content.IsAscii()) {
const char* chars,
FixedArray* elements,
int length) {
- AssertNoAllocation nogc;
+ AssertNoAllocation no_gc;
FixedArray* ascii_cache = heap->single_character_string_cache();
Object* undefined = heap->undefined_value();
int i;
isolate->heap()->AllocateUninitializedFixedArray(length);
if (!maybe_obj->ToObject(&obj)) return maybe_obj;
}
- AssertNoAllocation no_alloc;
elements = Handle<FixedArray>(FixedArray::cast(obj), isolate);
- String::FlatContent content = s->GetFlatContent(no_alloc);
+ String::FlatContent content = s->GetFlatContent();
if (content.IsAscii()) {
Vector<const char> chars = content.ToAsciiVector();
// Note, this will initialize all elements (not only the prefix)
static Object* FlatStringCompare(String* x, String* y) {
ASSERT(x->IsFlat());
ASSERT(y->IsFlat());
- AssertNoAllocation no_alloc;
Object* equal_prefix_result = Smi::FromInt(EQUAL);
int prefix_length = x->length();
if (y->length() < prefix_length) {
equal_prefix_result = Smi::FromInt(LESS);
}
int r;
- String::FlatContent x_content = x->GetFlatContent(no_alloc);
- String::FlatContent y_content = y->GetFlatContent(no_alloc);
+ String::FlatContent x_content = x->GetFlatContent();
+ String::FlatContent y_content = y->GetFlatContent();
if (x_content.IsAscii()) {
Vector<const char> x_chars = x_content.ToAsciiVector();
if (y_content.IsAscii()) {
FixedArray* output_array = FixedArray::cast(output->elements());
RUNTIME_ASSERT(output_array->length() >= DateParser::OUTPUT_SIZE);
bool result;
- String::FlatContent str_content = str->GetFlatContent(no_allocation);
+ String::FlatContent str_content = str->GetFlatContent();
if (str_content.IsAscii()) {
result = DateParser::Parse(str_content.ToAsciiVector(),
output_array,
RUNTIME_FUNCTION(MaybeObject*, Runtime_Log) {
ASSERT(args.length() == 2);
- AssertNoAllocation no_alloc;
CONVERT_CHECKED(String, format, args[0]);
CONVERT_CHECKED(JSArray, elms, args[1]);
- String::FlatContent format_content = format->GetFlatContent(no_alloc);
+ String::FlatContent format_content = format->GetFlatContent();
RUNTIME_ASSERT(format_content.IsAscii());
Vector<const char> chars = format_content.ToAsciiVector();
LOGGER->LogRuntime(chars, elms);