| Index: runtime/vm/flow_graph_compiler_x64.cc
|
| ===================================================================
|
| --- runtime/vm/flow_graph_compiler_x64.cc (revision 7346)
|
| +++ runtime/vm/flow_graph_compiler_x64.cc (working copy)
|
| @@ -342,10 +342,11 @@
|
| __ pushq(Immediate(Smi::RawValue(cid))); // Computation id.
|
| __ pushq(RAX); // Push the source object.
|
| __ PushObject(dst_type); // Push the type of the destination.
|
| - if (!dst_type.IsInstantiated()) {
|
| + __ pushq(raw_null); // TODO(srdjan): Instantiator.
|
| + if (dst_type.IsInstantiated()) {
|
| + __ pushq(raw_null); // Null instantiator type arguments.
|
| + } else {
|
| __ pushq(RDX); // Instantiator type arguments.
|
| - } else {
|
| - __ pushq(raw_null); // Null instantiator.
|
| }
|
| __ PushObject(dst_name); // Push the name of the destination.
|
| __ pushq(raw_null); // SubtypeTestCache not yet supported.
|
| @@ -355,7 +356,7 @@
|
| kTypeCheckRuntimeEntry);
|
| // Pop the parameters supplied to the runtime entry. The result of the
|
| // type check runtime call is the checked value.
|
| - __ addq(RSP, Immediate(7 * kWordSize));
|
| + __ addq(RSP, Immediate(8 * kWordSize));
|
| __ popq(RAX);
|
|
|
| __ Bind(&is_assignable);
|
| @@ -839,16 +840,17 @@
|
| __ pushq(Immediate(Smi::RawValue(cid))); // Computation id.
|
| __ pushq(RAX); // Push the instance.
|
| __ PushObject(type); // Push the type.
|
| - if (!type.IsInstantiated()) {
|
| + __ pushq(raw_null); // TODO(srdjan): Pass instantiator instead of null.
|
| + if (type.IsInstantiated()) {
|
| + __ pushq(raw_null); // Null instantiator type arguments.
|
| + } else {
|
| __ pushq(RDX); // Instantiator type arguments.
|
| - } else {
|
| - __ pushq(raw_null); // Null instantiator.
|
| }
|
| __ pushq(raw_null); // SubtypeTestCache not yet supported.
|
| GenerateCallRuntime(cid, token_index, try_index, kInstanceofRuntimeEntry);
|
| // Pop the two parameters supplied to the runtime entry. The result of the
|
| // instanceof runtime call will be left as the result of the operation.
|
| - __ addq(RSP, Immediate(6 * kWordSize));
|
| + __ addq(RSP, Immediate(7 * kWordSize));
|
| Label done;
|
| if (negate_result) {
|
| __ popq(RDX);
|
|
|