Index: runtime/vm/object.cc |
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc |
index a368c52bdb2f1d0cc1725961cad6cc3099b3d3b2..d80c2000f1d1a8090cfc71bd0b6300be801c77ff 100644 |
--- a/runtime/vm/object.cc |
+++ b/runtime/vm/object.cc |
@@ -11925,8 +11925,8 @@ RawScript* CodeSourceMap::ScriptForPCOffset(const Code& code, |
void CodeSourceMap::Dump(const CodeSourceMap& code_source_map, |
const Code& code, |
const Function& function) { |
- const String& code_name = String::Handle(code.QualifiedName()); |
- THR_Print("Dumping Code Source Map for %s\n", code_name.ToCString()); |
+ const char* code_name = code.QualifiedName(); |
+ THR_Print("Dumping Code Source Map for %s\n", code_name); |
if (code_source_map.Length() == 0) { |
THR_Print("<empty>\n"); |
return; |
@@ -11949,7 +11949,7 @@ void CodeSourceMap::Dump(const CodeSourceMap& code_source_map, |
THR_Print("%#-*" Px "\t%s\t%s\n", addr_width, |
pc_offset, |
tp.ToCString(), |
- code_name.ToCString()); |
+ code_name); |
continue; |
} |
const String& uri = String::Handle(current_script.url()); |
@@ -14444,7 +14444,7 @@ const char* Code::ToCString() const { |
} |
-RawString* Code::Name() const { |
+const char* Code::Name() const { |
const Object& obj = Object::Handle(owner()); |
if (obj.IsNull()) { |
// Regular stub. |
@@ -14454,7 +14454,7 @@ RawString* Code::Name() const { |
ASSERT(name != NULL); |
char* stub_name = OS::SCreate(zone, |
"%s%s", Symbols::StubPrefix().ToCString(), name); |
- return Symbols::New(thread, stub_name, strlen(stub_name)); |
+ return stub_name; |
} else if (obj.IsClass()) { |
// Allocation stub. |
Thread* thread = Thread::Current(); |
@@ -14462,19 +14462,23 @@ RawString* Code::Name() const { |
const Class& cls = Class::Cast(obj); |
String& cls_name = String::Handle(zone, cls.ScrubbedName()); |
ASSERT(!cls_name.IsNull()); |
- return Symbols::FromConcat(thread, Symbols::AllocationStubFor(), cls_name); |
+ char* stub_name = OS::SCreate(zone, |
+ "%s%s", Symbols::AllocationStubFor().ToCString(), cls_name.ToCString()); |
+ return stub_name; |
} else { |
ASSERT(obj.IsFunction()); |
// Dart function. |
- return Function::Cast(obj).UserVisibleName(); // Same as scrubbed name. |
+ // Same as scrubbed name. |
+ return String::Handle(Function::Cast(obj).UserVisibleName()).ToCString(); |
} |
} |
-RawString* Code::QualifiedName() const { |
+const char* Code::QualifiedName() const { |
const Object& obj = Object::Handle(owner()); |
if (obj.IsFunction()) { |
- return Function::Cast(obj).QualifiedScrubbedName(); |
+ return String::Handle( |
+ Function::Cast(obj).QualifiedScrubbedName()).ToCString(); |
} |
return Name(); |
} |
@@ -16374,32 +16378,6 @@ RawString* AbstractType::BuildName(NameVisibility name_visibility) const { |
} |
-// Same as user visible name, but including the URI of each occuring type. |
-// Used to report errors involving types with identical names. |
-// |
-// e.g. |
-// MyClass<String> -> MyClass<String> where |
-// MyClass is from my_uri |
-// String is from dart:core |
-// MyClass<dynamic, T> -> MyClass<dynamic, T> where |
-// MyClass is from my_uri |
-// T of OtherClass is from other_uri |
-// (MyClass) => int -> (MyClass) => int where |
-// MyClass is from my_uri |
-// int is from dart:core |
-RawString* AbstractType::UserVisibleNameWithURI() const { |
- Thread* thread = Thread::Current(); |
- Zone* zone = thread->zone(); |
- GrowableHandlePtrArray<const String> pieces(zone, 3); |
- pieces.Add(String::Handle(zone, BuildName(kUserVisibleName))); |
- if (!IsDynamicType() && !IsVoidType()) { |
- pieces.Add(Symbols::SpaceWhereNewLine()); |
- pieces.Add(String::Handle(zone, EnumerateURIs())); |
- } |
- return Symbols::FromConcatAll(thread, pieces); |
-} |
- |
- |
RawString* AbstractType::ClassName() const { |
ASSERT(!IsFunctionType()); |
if (HasResolvedTypeClass()) { |
@@ -20478,7 +20456,7 @@ static int32_t MergeHexCharacters(int32_t c1, int32_t c2) { |
} |
-RawString* String::EncodeIRI(const String& str) { |
+const char* String::EncodeIRI(const String& str) { |
const intptr_t len = Utf8::Length(str); |
Zone* zone = Thread::Current()->zone(); |
uint8_t* utf8 = zone->Alloc<uint8_t>(len); |
@@ -20490,27 +20468,22 @@ RawString* String::EncodeIRI(const String& str) { |
num_escapes += 2; |
} |
} |
- const String& dststr = String::Handle( |
- OneByteString::New(len + num_escapes, Heap::kNew)); |
- { |
- intptr_t index = 0; |
- for (int i = 0; i < len; ++i) { |
- uint8_t byte = utf8[i]; |
- if (!IsURISafeCharacter(byte)) { |
- OneByteString::SetCharAt(dststr, index, '%'); |
- OneByteString::SetCharAt(dststr, index + 1, |
- GetHexCharacter(byte >> 4)); |
- OneByteString::SetCharAt(dststr, index + 2, |
- GetHexCharacter(byte & 0xF)); |
- index += 3; |
- } else { |
- ASSERT(byte <= 127); |
- OneByteString::SetCharAt(dststr, index, byte); |
- index += 1; |
- } |
+ intptr_t cstr_len = len + num_escapes + 1; |
+ char* cstr = zone->Alloc<char>(cstr_len); |
+ intptr_t index = 0; |
+ for (int i = 0; i < len; ++i) { |
+ uint8_t byte = utf8[i]; |
+ if (!IsURISafeCharacter(byte)) { |
+ cstr[index++] = '%'; |
+ cstr[index++] = GetHexCharacter(byte >> 4); |
+ cstr[index++] = GetHexCharacter(byte & 0xF); |
+ } else { |
+ ASSERT(byte <= 127); |
+ cstr[index++] = byte; |
} |
} |
- return dststr.raw(); |
+ cstr[index] = '\0'; |
+ return cstr; |
} |