Chromium Code Reviews| Index: runtime/vm/assembler_arm.cc |
| =================================================================== |
| --- runtime/vm/assembler_arm.cc (revision 40703) |
| +++ runtime/vm/assembler_arm.cc (working copy) |
| @@ -1728,25 +1728,23 @@ |
| } |
| -void Assembler::LoadClassById(Register result, Register class_id) { |
| +void Assembler::LoadClassById(Register result, |
| + Register class_id, |
| + Isolate* isolate) { |
|
Vyacheslav Egorov (Google)
2014/09/26 13:09:43
Can we make isolate member of the assembler?
Florian Schneider
2014/09/26 14:05:02
Yes, this would be a bigger change (since we shoul
|
| ASSERT(result != class_id); |
| - ldr(result, FieldAddress(CTX, Context::isolate_offset())); |
| - const intptr_t table_offset_in_isolate = |
| - Isolate::class_table_offset() + ClassTable::table_offset(); |
| - LoadFromOffset(kWord, result, result, table_offset_in_isolate); |
| + LoadImmediate(result, isolate->ClassTableAddress()); |
| + LoadFromOffset(kWord, result, result, 0); |
| ldr(result, Address(result, class_id, LSL, 2)); |
| } |
| -void Assembler::LoadClass(Register result, Register object, Register scratch) { |
| +void Assembler::LoadClass(Register result, |
| + Register object, |
| + Register scratch, |
| + Isolate* isolate) { |
| ASSERT(scratch != result); |
| LoadClassId(scratch, object); |
| - |
| - ldr(result, FieldAddress(CTX, Context::isolate_offset())); |
| - const intptr_t table_offset_in_isolate = |
| - Isolate::class_table_offset() + ClassTable::table_offset(); |
| - LoadFromOffset(kWord, result, result, table_offset_in_isolate); |
| - ldr(result, Address(result, scratch, LSL, 2)); |
| + LoadClassById(result, scratch, isolate); |
| } |