Index: runtime/vm/object_test.cc |
diff --git a/runtime/vm/object_test.cc b/runtime/vm/object_test.cc |
index b1243e9db216c85c60729117eb7df465086baade..62718becd5238434a94c08f32ed970a0e056ad2f 100644 |
--- a/runtime/vm/object_test.cc |
+++ b/runtime/vm/object_test.cc |
@@ -37,7 +37,7 @@ static RawClass* CreateDummyClass(const String& class_name, |
VM_TEST_CASE(Class) { |
// Allocate the class first. |
- const String& class_name = String::Handle(Symbols::New("MyClass")); |
+ const String& class_name = String::Handle(Symbols::New(thread, "MyClass")); |
const Script& script = Script::Handle(); |
const Class& cls = Class::Handle(CreateDummyClass(class_name, script)); |
@@ -49,10 +49,10 @@ VM_TEST_CASE(Class) { |
const Array& interfaces = Array::Handle(Array::New(2)); |
Class& interface = Class::Handle(); |
String& interface_name = String::Handle(); |
- interface_name = Symbols::New("Harley"); |
+ interface_name = Symbols::New(thread, "Harley"); |
interface = CreateDummyClass(interface_name, script); |
interfaces.SetAt(0, Type::Handle(Type::NewNonParameterizedType(interface))); |
- interface_name = Symbols::New("Norton"); |
+ interface_name = Symbols::New(thread, "Norton"); |
interface = CreateDummyClass(interface_name, script); |
interfaces.SetAt(1, Type::Handle(Type::NewNonParameterizedType(interface))); |
cls.set_interfaces(interfaces); |
@@ -65,12 +65,12 @@ VM_TEST_CASE(Class) { |
const Array& functions = Array::Handle(Array::New(6)); |
Function& function = Function::Handle(); |
String& function_name = String::Handle(); |
- function_name = Symbols::New("foo"); |
+ function_name = Symbols::New(thread, "foo"); |
function = Function::New( |
function_name, RawFunction::kRegularFunction, |
false, false, false, false, false, cls, TokenPosition::kMinSource); |
functions.SetAt(0, function); |
- function_name = Symbols::New("bar"); |
+ function_name = Symbols::New(thread, "bar"); |
function = Function::New( |
function_name, RawFunction::kRegularFunction, |
false, false, false, false, false, cls, TokenPosition::kMinSource); |
@@ -83,24 +83,24 @@ VM_TEST_CASE(Class) { |
kAreOptionalPositional); |
functions.SetAt(1, function); |
- function_name = Symbols::New("baz"); |
+ function_name = Symbols::New(thread, "baz"); |
function = Function::New( |
function_name, RawFunction::kRegularFunction, |
false, false, false, false, false, cls, TokenPosition::kMinSource); |
functions.SetAt(2, function); |
- function_name = Symbols::New("Foo"); |
+ function_name = Symbols::New(thread, "Foo"); |
function = Function::New( |
function_name, RawFunction::kRegularFunction, |
true, false, false, false, false, cls, TokenPosition::kMinSource); |
functions.SetAt(3, function); |
- function_name = Symbols::New("Bar"); |
+ function_name = Symbols::New(thread, "Bar"); |
function = Function::New( |
function_name, RawFunction::kRegularFunction, |
true, false, false, false, false, cls, TokenPosition::kMinSource); |
functions.SetAt(4, function); |
- function_name = Symbols::New("BaZ"); |
+ function_name = Symbols::New(thread, "BaZ"); |
function = Function::New( |
function_name, RawFunction::kRegularFunction, |
true, false, false, false, false, cls, TokenPosition::kMinSource); |
@@ -258,7 +258,7 @@ TEST_CASE(Class_ComputeEndTokenPos) { |
VM_TEST_CASE(InstanceClass) { |
// Allocate the class first. |
- String& class_name = String::Handle(Symbols::New("EmptyClass")); |
+ String& class_name = String::Handle(Symbols::New(thread, "EmptyClass")); |
Script& script = Script::Handle(); |
const Class& empty_class = |
Class::Handle(CreateDummyClass(class_name, script)); |
@@ -274,7 +274,7 @@ VM_TEST_CASE(InstanceClass) { |
Instance& instance = Instance::Handle(Instance::New(empty_class)); |
EXPECT_EQ(empty_class.raw(), instance.clazz()); |
- class_name = Symbols::New("OneFieldClass"); |
+ class_name = Symbols::New(thread, "OneFieldClass"); |
const Class& one_field_class = |
Class::Handle(CreateDummyClass(class_name, script)); |
@@ -285,7 +285,7 @@ VM_TEST_CASE(InstanceClass) { |
ClassFinalizer::FinalizeTypesInClass(one_field_class); |
const Array& one_fields = Array::Handle(Array::New(1)); |
- const String& field_name = String::Handle(Symbols::New("the_field")); |
+ const String& field_name = String::Handle(Symbols::New(thread, "the_field")); |
const Field& field = Field::Handle( |
Field::New(field_name, false, false, false, true, one_field_class, |
Object::dynamic_type(), TokenPosition::kMinSource)); |
@@ -1826,84 +1826,85 @@ VM_TEST_CASE(ExternalTwoByteString) { |
VM_TEST_CASE(Symbol) { |
- const String& one = String::Handle(Symbols::New("Eins")); |
+ const String& one = String::Handle(Symbols::New(thread, "Eins")); |
EXPECT(one.IsSymbol()); |
- const String& two = String::Handle(Symbols::New("Zwei")); |
- const String& three = String::Handle(Symbols::New("Drei")); |
- const String& four = String::Handle(Symbols::New("Vier")); |
- const String& five = String::Handle(Symbols::New("Fuenf")); |
- const String& six = String::Handle(Symbols::New("Sechs")); |
- const String& seven = String::Handle(Symbols::New("Sieben")); |
- const String& eight = String::Handle(Symbols::New("Acht")); |
- const String& nine = String::Handle(Symbols::New("Neun")); |
- const String& ten = String::Handle(Symbols::New("Zehn")); |
- String& eins = String::Handle(Symbols::New("Eins")); |
+ const String& two = String::Handle(Symbols::New(thread, "Zwei")); |
+ const String& three = String::Handle(Symbols::New(thread, "Drei")); |
+ const String& four = String::Handle(Symbols::New(thread, "Vier")); |
+ const String& five = String::Handle(Symbols::New(thread, "Fuenf")); |
+ const String& six = String::Handle(Symbols::New(thread, "Sechs")); |
+ const String& seven = String::Handle(Symbols::New(thread, "Sieben")); |
+ const String& eight = String::Handle(Symbols::New(thread, "Acht")); |
+ const String& nine = String::Handle(Symbols::New(thread, "Neun")); |
+ const String& ten = String::Handle(Symbols::New(thread, "Zehn")); |
+ String& eins = String::Handle(Symbols::New(thread, "Eins")); |
EXPECT_EQ(one.raw(), eins.raw()); |
EXPECT(one.raw() != two.raw()); |
EXPECT(two.Equals(String::Handle(String::New("Zwei")))); |
- EXPECT_EQ(two.raw(), Symbols::New("Zwei")); |
- EXPECT_EQ(three.raw(), Symbols::New("Drei")); |
- EXPECT_EQ(four.raw(), Symbols::New("Vier")); |
- EXPECT_EQ(five.raw(), Symbols::New("Fuenf")); |
- EXPECT_EQ(six.raw(), Symbols::New("Sechs")); |
- EXPECT_EQ(seven.raw(), Symbols::New("Sieben")); |
- EXPECT_EQ(eight.raw(), Symbols::New("Acht")); |
- EXPECT_EQ(nine.raw(), Symbols::New("Neun")); |
- EXPECT_EQ(ten.raw(), Symbols::New("Zehn")); |
+ EXPECT_EQ(two.raw(), Symbols::New(thread, "Zwei")); |
+ EXPECT_EQ(three.raw(), Symbols::New(thread, "Drei")); |
+ EXPECT_EQ(four.raw(), Symbols::New(thread, "Vier")); |
+ EXPECT_EQ(five.raw(), Symbols::New(thread, "Fuenf")); |
+ EXPECT_EQ(six.raw(), Symbols::New(thread, "Sechs")); |
+ EXPECT_EQ(seven.raw(), Symbols::New(thread, "Sieben")); |
+ EXPECT_EQ(eight.raw(), Symbols::New(thread, "Acht")); |
+ EXPECT_EQ(nine.raw(), Symbols::New(thread, "Neun")); |
+ EXPECT_EQ(ten.raw(), Symbols::New(thread, "Zehn")); |
// Make sure to cause symbol table overflow. |
for (int i = 0; i < 1024; i++) { |
char buf[256]; |
OS::SNPrint(buf, sizeof(buf), "%d", i); |
- Symbols::New(buf); |
+ Symbols::New(thread, buf); |
} |
- eins = Symbols::New("Eins"); |
+ eins = Symbols::New(thread, "Eins"); |
EXPECT_EQ(one.raw(), eins.raw()); |
- EXPECT_EQ(two.raw(), Symbols::New("Zwei")); |
- EXPECT_EQ(three.raw(), Symbols::New("Drei")); |
- EXPECT_EQ(four.raw(), Symbols::New("Vier")); |
- EXPECT_EQ(five.raw(), Symbols::New("Fuenf")); |
- EXPECT_EQ(six.raw(), Symbols::New("Sechs")); |
- EXPECT_EQ(seven.raw(), Symbols::New("Sieben")); |
- EXPECT_EQ(eight.raw(), Symbols::New("Acht")); |
- EXPECT_EQ(nine.raw(), Symbols::New("Neun")); |
- EXPECT_EQ(ten.raw(), Symbols::New("Zehn")); |
+ EXPECT_EQ(two.raw(), Symbols::New(thread, "Zwei")); |
+ EXPECT_EQ(three.raw(), Symbols::New(thread, "Drei")); |
+ EXPECT_EQ(four.raw(), Symbols::New(thread, "Vier")); |
+ EXPECT_EQ(five.raw(), Symbols::New(thread, "Fuenf")); |
+ EXPECT_EQ(six.raw(), Symbols::New(thread, "Sechs")); |
+ EXPECT_EQ(seven.raw(), Symbols::New(thread, "Sieben")); |
+ EXPECT_EQ(eight.raw(), Symbols::New(thread, "Acht")); |
+ EXPECT_EQ(nine.raw(), Symbols::New(thread, "Neun")); |
+ EXPECT_EQ(ten.raw(), Symbols::New(thread, "Zehn")); |
// Symbols from Strings. |
eins = String::New("Eins"); |
EXPECT(!eins.IsSymbol()); |
- String& ein_symbol = String::Handle(Symbols::New(eins)); |
+ String& ein_symbol = String::Handle(Symbols::New(thread, eins)); |
EXPECT_EQ(one.raw(), ein_symbol.raw()); |
EXPECT(one.raw() != eins.raw()); |
uint16_t char16[] = { 'E', 'l', 'f' }; |
- String& elf1 = String::Handle(Symbols::FromUTF16(char16, 3)); |
+ String& elf1 = String::Handle(Symbols::FromUTF16(thread, char16, 3)); |
int32_t char32[] = { 'E', 'l', 'f' }; |
- String& elf2 = String::Handle(Symbols::FromUTF32(char32, 3)); |
+ String& elf2 = String::Handle(Symbols::FromUTF32(thread, char32, 3)); |
EXPECT(elf1.IsSymbol()); |
EXPECT(elf2.IsSymbol()); |
- EXPECT_EQ(elf1.raw(), Symbols::New("Elf")); |
- EXPECT_EQ(elf2.raw(), Symbols::New("Elf")); |
+ EXPECT_EQ(elf1.raw(), Symbols::New(thread, "Elf")); |
+ EXPECT_EQ(elf2.raw(), Symbols::New(thread, "Elf")); |
} |
VM_TEST_CASE(SymbolUnicode) { |
uint16_t monkey_utf16[] = { 0xd83d, 0xdc35 }; // Unicode Monkey Face. |
- String& monkey = String::Handle(Symbols::FromUTF16(monkey_utf16, 2)); |
+ String& monkey = String::Handle(Symbols::FromUTF16(thread, monkey_utf16, 2)); |
EXPECT(monkey.IsSymbol()); |
const char monkey_utf8[] = {'\xf0', '\x9f', '\x90', '\xb5', 0}; |
- EXPECT_EQ(monkey.raw(), Symbols::New(monkey_utf8)); |
+ EXPECT_EQ(monkey.raw(), Symbols::New(thread, monkey_utf8)); |
int32_t kMonkeyFace = 0x1f435; |
- String& monkey2 = String::Handle(Symbols::FromCharCode(kMonkeyFace)); |
+ String& monkey2 = String::Handle(Symbols::FromCharCode(thread, kMonkeyFace)); |
EXPECT_EQ(monkey.raw(), monkey2.raw()); |
// Unicode cat face with tears of joy. |
int32_t kCatFaceWithTearsOfJoy = 0x1f639; |
- String& cat = String::Handle(Symbols::FromCharCode(kCatFaceWithTearsOfJoy)); |
+ String& cat = String::Handle(Symbols::FromCharCode(thread, |
+ kCatFaceWithTearsOfJoy)); |
uint16_t cat_utf16[] = { 0xd83d, 0xde39 }; |
- String& cat2 = String::Handle(Symbols::FromUTF16(cat_utf16, 2)); |
+ String& cat2 = String::Handle(Symbols::FromUTF16(thread, cat_utf16, 2)); |
EXPECT(cat2.IsSymbol()); |
EXPECT_EQ(cat2.raw(), cat.raw()); |
} |
@@ -2541,17 +2542,17 @@ VM_TEST_CASE(ContextScope) { |
new LocalScope(parent_scope, local_scope_function_level, 0); |
const Type& dynamic_type = Type::ZoneHandle(Type::DynamicType()); |
- const String& a = String::ZoneHandle(Symbols::New("a")); |
+ const String& a = String::ZoneHandle(Symbols::New(thread, "a")); |
LocalVariable* var_a = |
new LocalVariable(TokenPosition::kNoSource, a, dynamic_type); |
parent_scope->AddVariable(var_a); |
- const String& b = String::ZoneHandle(Symbols::New("b")); |
+ const String& b = String::ZoneHandle(Symbols::New(thread, "b")); |
LocalVariable* var_b = |
new LocalVariable(TokenPosition::kNoSource, b, dynamic_type); |
local_scope->AddVariable(var_b); |
- const String& c = String::ZoneHandle(Symbols::New("c")); |
+ const String& c = String::ZoneHandle(Symbols::New(thread, "c")); |
LocalVariable* var_c = |
new LocalVariable(TokenPosition::kNoSource, c, dynamic_type); |
parent_scope->AddVariable(var_c); |
@@ -2620,14 +2621,14 @@ VM_TEST_CASE(ContextScope) { |
VM_TEST_CASE(Closure) { |
// Allocate the class first. |
- const String& class_name = String::Handle(Symbols::New("MyClass")); |
+ const String& class_name = String::Handle(Symbols::New(thread, "MyClass")); |
const Script& script = Script::Handle(); |
const Class& cls = Class::Handle(CreateDummyClass(class_name, script)); |
const Array& functions = Array::Handle(Array::New(1)); |
const Context& context = Context::Handle(Context::New(0)); |
Function& parent = Function::Handle(); |
- const String& parent_name = String::Handle(Symbols::New("foo_papa")); |
+ const String& parent_name = String::Handle(Symbols::New(thread, "foo_papa")); |
parent = Function::New(parent_name, RawFunction::kRegularFunction, |
false, false, false, false, false, cls, |
TokenPosition::kMinSource); |
@@ -2635,7 +2636,7 @@ VM_TEST_CASE(Closure) { |
cls.SetFunctions(functions); |
Function& function = Function::Handle(); |
- const String& function_name = String::Handle(Symbols::New("foo")); |
+ const String& function_name = String::Handle(Symbols::New(thread, "foo")); |
function = Function::NewClosureFunction( |
function_name, parent, TokenPosition::kMinSource); |
const Closure& closure = Closure::Handle(Closure::New(function, context)); |
@@ -2690,15 +2691,16 @@ VM_TEST_CASE(CheckedHandle) { |
static RawFunction* CreateFunction(const char* name) { |
- const String& class_name = String::Handle(Symbols::New("ownerClass")); |
- const String& lib_name = String::Handle(Symbols::New("ownerLibrary")); |
+ Thread* thread = Thread::Current(); |
+ const String& class_name = String::Handle(Symbols::New(thread, "ownerClass")); |
+ const String& lib_name = String::Handle(Symbols::New(thread, "ownerLibrary")); |
const Script& script = Script::Handle(); |
const Class& owner_class = |
Class::Handle(CreateDummyClass(class_name, script)); |
const Library& owner_library = |
Library::Handle(CreateDummyLibrary(lib_name)); |
owner_class.set_library(owner_library); |
- const String& function_name = String::ZoneHandle(Symbols::New(name)); |
+ const String& function_name = String::ZoneHandle(Symbols::New(thread, name)); |
return Function::New(function_name, RawFunction::kRegularFunction, |
true, false, false, false, false, owner_class, |
TokenPosition::kMinSource); |
@@ -2967,7 +2969,8 @@ VM_TEST_CASE(PcDescriptorsLargeDeltas) { |
static RawClass* CreateTestClass(const char* name) { |
- const String& class_name = String::Handle(Symbols::New(name)); |
+ const String& class_name = String::Handle(Symbols::New(Thread::Current(), |
+ name)); |
const Class& cls = Class::Handle( |
CreateDummyClass(class_name, Script::Handle())); |
return cls.raw(); |
@@ -2976,7 +2979,8 @@ static RawClass* CreateTestClass(const char* name) { |
static RawField* CreateTestField(const char* name) { |
const Class& cls = Class::Handle(CreateTestClass("global:")); |
- const String& field_name = String::Handle(Symbols::New(name)); |
+ const String& field_name = String::Handle(Symbols::New(Thread::Current(), |
+ name)); |
const Field& field = |
Field::Handle(Field::New(field_name, true, false, false, true, cls, |
Object::dynamic_type(), TokenPosition::kMinSource)); |
@@ -3008,7 +3012,8 @@ VM_TEST_CASE(ClassDictionaryIterator) { |
static RawFunction* GetDummyTarget(const char* name) { |
- const String& function_name = String::Handle(Symbols::New(name)); |
+ const String& function_name = String::Handle(Symbols::New(Thread::Current(), |
+ name)); |
const Class& cls = Class::Handle( |
CreateDummyClass(function_name, Script::Handle())); |
const bool is_static = false; |
@@ -3032,7 +3037,7 @@ VM_TEST_CASE(ICData) { |
Function& function = Function::Handle(GetDummyTarget("Bern")); |
const intptr_t id = 12; |
const intptr_t num_args_tested = 1; |
- const String& target_name = String::Handle(Symbols::New("Thun")); |
+ const String& target_name = String::Handle(Symbols::New(thread, "Thun")); |
const Array& args_descriptor = |
Array::Handle(ArgumentsDescriptor::New(1, Object::null_array())); |
ICData& o1 = ICData::Handle(); |
@@ -3101,7 +3106,7 @@ VM_TEST_CASE(ICData) { |
VM_TEST_CASE(SubtypeTestCache) { |
- String& class_name = String::Handle(Symbols::New("EmptyClass")); |
+ String& class_name = String::Handle(Symbols::New(thread, "EmptyClass")); |
Script& script = Script::Handle(); |
const Class& empty_class = |
Class::Handle(CreateDummyClass(class_name, script)); |
@@ -3781,7 +3786,7 @@ static RawField* GetField(const Class& cls, const char* name) { |
static RawClass* GetClass(const Library& lib, const char* name) { |
const Class& cls = Class::Handle( |
- lib.LookupClass(String::Handle(Symbols::New(name)))); |
+ lib.LookupClass(String::Handle(Symbols::New(Thread::Current(), name)))); |
EXPECT(!cls.IsNull()); // No ambiguity error expected. |
return cls.raw(); |
} |
@@ -3789,14 +3794,14 @@ static RawClass* GetClass(const Library& lib, const char* name) { |
VM_TEST_CASE(FindClosureIndex) { |
// Allocate the class first. |
- const String& class_name = String::Handle(Symbols::New("MyClass")); |
+ const String& class_name = String::Handle(Symbols::New(thread, "MyClass")); |
const Script& script = Script::Handle(); |
const Class& cls = Class::Handle(CreateDummyClass(class_name, script)); |
const Array& functions = Array::Handle(Array::New(1)); |
const Isolate* iso = Isolate::Current(); |
Function& parent = Function::Handle(); |
- const String& parent_name = String::Handle(Symbols::New("foo_papa")); |
+ const String& parent_name = String::Handle(Symbols::New(thread, "foo_papa")); |
parent = Function::New(parent_name, RawFunction::kRegularFunction, |
false, false, false, false, false, cls, |
TokenPosition::kMinSource); |
@@ -3804,7 +3809,7 @@ VM_TEST_CASE(FindClosureIndex) { |
cls.SetFunctions(functions); |
Function& function = Function::Handle(); |
- const String& function_name = String::Handle(Symbols::New("foo")); |
+ const String& function_name = String::Handle(Symbols::New(thread, "foo")); |
function = Function::NewClosureFunction(function_name, parent, |
TokenPosition::kMinSource); |
// Add closure function to class. |
@@ -3826,14 +3831,14 @@ VM_TEST_CASE(FindClosureIndex) { |
VM_TEST_CASE(FindInvocationDispatcherFunctionIndex) { |
- const String& class_name = String::Handle(Symbols::New("MyClass")); |
+ const String& class_name = String::Handle(Symbols::New(thread, "MyClass")); |
const Script& script = Script::Handle(); |
const Class& cls = Class::Handle(CreateDummyClass(class_name, script)); |
ClassFinalizer::FinalizeTypesInClass(cls); |
const Array& functions = Array::Handle(Array::New(1)); |
Function& parent = Function::Handle(); |
- const String& parent_name = String::Handle(Symbols::New("foo_papa")); |
+ const String& parent_name = String::Handle(Symbols::New(thread, "foo_papa")); |
parent = Function::New(parent_name, RawFunction::kRegularFunction, |
false, false, false, false, false, cls, |
TokenPosition::kMinSource); |
@@ -3843,7 +3848,7 @@ VM_TEST_CASE(FindInvocationDispatcherFunctionIndex) { |
// Add invocation dispatcher. |
const String& invocation_dispatcher_name = |
- String::Handle(Symbols::New("myMethod")); |
+ String::Handle(Symbols::New(thread, "myMethod")); |
const Array& args_desc = Array::Handle(ArgumentsDescriptor::New(1)); |
Function& invocation_dispatcher = Function::Handle(); |
invocation_dispatcher ^= |
@@ -3944,17 +3949,18 @@ TEST_CASE(Metadata) { |
res = lib.GetMetadata(func); |
PrintMetadata("A.aFunc", res); |
- func = lib.LookupLocalFunction(String::Handle(Symbols::New("main"))); |
+ func = lib.LookupLocalFunction(String::Handle(Symbols::New(thread, "main"))); |
EXPECT(!func.IsNull()); |
res = lib.GetMetadata(func); |
PrintMetadata("main", res); |
- func = lib.LookupLocalFunction(String::Handle(Symbols::New("get:tlGetter"))); |
+ func = lib.LookupLocalFunction(String::Handle(Symbols::New(thread, |
+ "get:tlGetter"))); |
EXPECT(!func.IsNull()); |
res = lib.GetMetadata(func); |
PrintMetadata("tlGetter", res); |
- field = lib.LookupLocalField(String::Handle(Symbols::New("gVar"))); |
+ field = lib.LookupLocalField(String::Handle(Symbols::New(thread, "gVar"))); |
EXPECT(!field.IsNull()); |
res = lib.GetMetadata(field); |
PrintMetadata("gVar", res); |
@@ -4006,9 +4012,9 @@ TEST_CASE(FunctionSourceFingerprint) { |
EXPECT(!lib.IsNull()); |
const Class& class_a = Class::Handle( |
- lib.LookupClass(String::Handle(Symbols::New("A")))); |
+ lib.LookupClass(String::Handle(Symbols::New(thread, "A")))); |
const Class& class_b = Class::Handle( |
- lib.LookupClass(String::Handle(Symbols::New("B")))); |
+ lib.LookupClass(String::Handle(Symbols::New(thread, "B")))); |
const Function& a_test1 = |
Function::Handle(GetStaticFunction(class_a, "test1")); |
const Function& b_test1 = |
@@ -4070,7 +4076,7 @@ TEST_CASE(FunctionWithBreakpointNotInlined) { |
const Library& vmlib = Library::Handle(Library::LookupLibrary(name)); |
EXPECT(!vmlib.IsNull()); |
const Class& class_a = Class::Handle( |
- vmlib.LookupClass(String::Handle(Symbols::New("A")))); |
+ vmlib.LookupClass(String::Handle(Symbols::New(thread, "A")))); |
const Function& func_b = |
Function::Handle(GetFunction(class_a, "b")); |
EXPECT(func_b.CanBeInlined()); |
@@ -4611,14 +4617,16 @@ TEST_CASE(LinkedHashMap_iteration) { |
static void CheckConcatAll(const String* data[], intptr_t n) { |
- Zone* zone = Thread::Current()->zone(); |
+ Thread* thread = Thread::Current(); |
+ Zone* zone = thread->zone(); |
GrowableHandlePtrArray<const String> pieces(zone, n); |
const Array& array = Array::Handle(zone, Array::New(n)); |
for (int i = 0; i < n; i++) { |
pieces.Add(*data[i]); |
array.SetAt(i, *data[i]); |
} |
- const String& res1 = String::Handle(zone, Symbols::FromConcatAll(pieces)); |
+ const String& res1 = String::Handle(zone, Symbols::FromConcatAll(thread, |
+ pieces)); |
const String& res2 = String::Handle(zone, String::ConcatAll(array)); |
EXPECT(res1.Equals(res2)); |
} |