| Index: runtime/vm/code_generator.cc
|
| diff --git a/runtime/vm/code_generator.cc b/runtime/vm/code_generator.cc
|
| index b1f11df6a68f805e53a64c67ffdb625ada54e2ea..98350dd9cf47090bf2bb534bb3730a6d8f2088cc 100644
|
| --- a/runtime/vm/code_generator.cc
|
| +++ b/runtime/vm/code_generator.cc
|
| @@ -1380,7 +1380,7 @@ DEOPT_REASONS(DEOPT_REASON_ID_TO_TEXT)
|
| }
|
|
|
|
|
| -static void DeoptimizeAt(const Code& optimized_code, uword pc) {
|
| +void DeoptimizeAt(const Code& optimized_code, uword pc) {
|
| intptr_t deopt_reason = kDeoptUnknown;
|
| const DeoptInfo& deopt_info =
|
| DeoptInfo::Handle(optimized_code.GetDeoptInfoAtPc(pc, &deopt_reason));
|
| @@ -1733,4 +1733,17 @@ double DartModulo(double left, double right) {
|
| return remainder;
|
| }
|
|
|
| +
|
| +// Update global type feedback recorded for a field recording the assignment
|
| +// of the value with the given class id.
|
| +// Arg0: Field object;
|
| +// Arg1: Value's cid as a smi.
|
| +DEFINE_RUNTIME_ENTRY(UpdateFieldCid, 2) {
|
| + ASSERT(arguments.ArgCount() == kUpdateFieldCidRuntimeEntry.argument_count());
|
| + const Field& field = Field::CheckedHandle(arguments.ArgAt(0));
|
| + const Smi& value_cid = Smi::CheckedHandle(arguments.ArgAt(1));
|
| +
|
| + field.UpdateCid(value_cid.Value());
|
| +}
|
| +
|
| } // namespace dart
|
|
|