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

Unified Diff: runtime/vm/code_generator.cc

Issue 1533383003: Remove instantiator argument in generated code for type tests. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: fix typo Created 5 years 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/bootstrap_natives.h ('k') | runtime/vm/constant_propagator.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/code_generator.cc
diff --git a/runtime/vm/code_generator.cc b/runtime/vm/code_generator.cc
index b9816081ac5d1da86fff3c7c282555eb5fedcff1..a93487b3fbb544fb28703169671e3596efab3018 100644
--- a/runtime/vm/code_generator.cc
+++ b/runtime/vm/code_generator.cc
@@ -338,11 +338,9 @@ static void PrintTypeCheck(
// case it contains just the result of the class subtype test, not including
// the evaluation of type arguments.
// This operation is currently very slow (lookup of code is not efficient yet).
-// 'instantiator' can be null, in which case inst_targ
static void UpdateTypeTestCache(
const Instance& instance,
const AbstractType& type,
- const Instance& instantiator,
const TypeArguments& instantiator_type_arguments,
const Bool& result,
const SubtypeTestCache& new_cache) {
@@ -447,18 +445,16 @@ static void UpdateTypeTestCache(
// Tested instance may not be null, because the null test is inlined.
// Arg0: instance being checked.
// Arg1: type.
-// Arg2: instantiator (or null).
-// Arg3: type arguments of the instantiator of the type.
-// Arg4: SubtypeTestCache.
+// Arg2: type arguments of the instantiator of the type.
+// Arg3: SubtypeTestCache.
// Return value: true or false, or may throw a type error in checked mode.
-DEFINE_RUNTIME_ENTRY(Instanceof, 5) {
+DEFINE_RUNTIME_ENTRY(Instanceof, 4) {
const Instance& instance = Instance::CheckedHandle(arguments.ArgAt(0));
const AbstractType& type = AbstractType::CheckedHandle(arguments.ArgAt(1));
- const Instance& instantiator = Instance::CheckedHandle(arguments.ArgAt(2));
const TypeArguments& instantiator_type_arguments =
- TypeArguments::CheckedHandle(arguments.ArgAt(3));
+ TypeArguments::CheckedHandle(arguments.ArgAt(2));
const SubtypeTestCache& cache =
- SubtypeTestCache::CheckedHandle(arguments.ArgAt(4));
+ SubtypeTestCache::CheckedHandle(arguments.ArgAt(3));
ASSERT(type.IsFinalized());
ASSERT(!type.IsDynamicType()); // No need to check assignment.
ASSERT(!type.IsMalformed()); // Already checked in code generator.
@@ -482,8 +478,8 @@ DEFINE_RUNTIME_ENTRY(Instanceof, 5) {
Symbols::Empty(), bound_error_message);
UNREACHABLE();
}
- UpdateTypeTestCache(instance, type, instantiator,
- instantiator_type_arguments, result, cache);
+ UpdateTypeTestCache(
+ instance, type, instantiator_type_arguments, result, cache);
arguments.SetReturn(result);
}
@@ -492,22 +488,19 @@ DEFINE_RUNTIME_ENTRY(Instanceof, 5) {
// can therefore be assigned.
// Arg0: instance being assigned.
// Arg1: type being assigned to.
-// Arg2: instantiator (or null).
-// Arg3: type arguments of the instantiator of the type being assigned to.
-// Arg4: name of variable being assigned to.
-// Arg5: SubtypeTestCache.
+// Arg2: type arguments of the instantiator of the type being assigned to.
+// Arg3: name of variable being assigned to.
+// Arg4: SubtypeTestCache.
// Return value: instance if a subtype, otherwise throw a TypeError.
-DEFINE_RUNTIME_ENTRY(TypeCheck, 6) {
+DEFINE_RUNTIME_ENTRY(TypeCheck, 5) {
const Instance& src_instance = Instance::CheckedHandle(arguments.ArgAt(0));
const AbstractType& dst_type =
AbstractType::CheckedHandle(arguments.ArgAt(1));
- const Instance& dst_instantiator =
- Instance::CheckedHandle(arguments.ArgAt(2));
const TypeArguments& instantiator_type_arguments =
- TypeArguments::CheckedHandle(arguments.ArgAt(3));
- const String& dst_name = String::CheckedHandle(arguments.ArgAt(4));
+ TypeArguments::CheckedHandle(arguments.ArgAt(2));
+ const String& dst_name = String::CheckedHandle(arguments.ArgAt(3));
const SubtypeTestCache& cache =
- SubtypeTestCache::CheckedHandle(arguments.ArgAt(5));
+ SubtypeTestCache::CheckedHandle(arguments.ArgAt(4));
ASSERT(!dst_type.IsDynamicType()); // No need to check assignment.
ASSERT(!dst_type.IsMalformed()); // Already checked in code generator.
ASSERT(!dst_type.IsMalbounded()); // Already checked in code generator.
@@ -565,9 +558,8 @@ DEFINE_RUNTIME_ENTRY(TypeCheck, 6) {
dst_name, bound_error_message);
UNREACHABLE();
}
- UpdateTypeTestCache(src_instance, dst_type,
- dst_instantiator, instantiator_type_arguments,
- Bool::True(), cache);
+ UpdateTypeTestCache(
+ src_instance, dst_type, instantiator_type_arguments, Bool::True(), cache);
arguments.SetReturn(src_instance);
}
« no previous file with comments | « runtime/vm/bootstrap_natives.h ('k') | runtime/vm/constant_propagator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698