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

Unified Diff: runtime/vm/stub_code_arm.cc

Issue 2818273002: Remove parent_level field of function type parameters. (Closed)
Patch Set: address comments Created 3 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 | « runtime/vm/simulator_dbc.cc ('k') | runtime/vm/stub_code_arm64.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/stub_code_arm.cc
diff --git a/runtime/vm/stub_code_arm.cc b/runtime/vm/stub_code_arm.cc
index d8cf21cb95914ba70e13edbfaec9469fa3bc2d67..1ab83806be88062609fc493387b8bf038893ca2a 100644
--- a/runtime/vm/stub_code_arm.cc
+++ b/runtime/vm/stub_code_arm.cc
@@ -1789,8 +1789,12 @@ static void GenerateSubtypeNTestCacheStub(Assembler* assembler, int n) {
// R4: instance type arguments (still null if closure).
__ SmiTag(R8);
__ CompareImmediate(R8, Smi::RawValue(kClosureCid));
- __ ldr(R4, FieldAddress(R0, Closure::instantiator_offset()), EQ);
- __ ldr(R8, FieldAddress(R0, Closure::function_offset()), EQ);
+ __ b(&loop, NE);
+ __ ldr(R4, FieldAddress(R0, Closure::function_type_arguments_offset()));
+ __ CompareObject(R4, Object::null_object());
+ __ b(&not_found, NE); // Cache cannot be used for generic closures.
+ __ ldr(R4, FieldAddress(R0, Closure::instantiator_type_arguments_offset()));
+ __ ldr(R8, FieldAddress(R0, Closure::function_offset()));
// R8: instance class id as Smi or function.
__ Bind(&loop);
__ ldr(R9,
« no previous file with comments | « runtime/vm/simulator_dbc.cc ('k') | runtime/vm/stub_code_arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698