91ed534139
- Don't use PC-relative calls when calling between loading units. - Sort the contents of the code cluster by loading unit, then by text offset. - Handle binding PC-relatives calls and inserting trampolines per loading unit. - Create one code order table per loading unit to implement PC -> Code lookup. - Read code order tables directly, instead of copying into malloc'd memory. --use_table_dispatch still not yet supported. This slightly shrinks non-split binaries (~2% clustered part, 0.4% total snapshot) due to the new delta encoding when Code references Instructions. Bug: https://github.com/dart-lang/sdk/issues/41974 Change-Id: I51052ebc7b4968b554897d1710135a6c41821302 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/157820 Commit-Queue: Ryan Macnak <rmacnak@google.com> Reviewed-by: Alexander Markov <alexmarkov@google.com> Reviewed-by: Tess Strickland <sstrickl@google.com>
26 lines
689 B
C++
26 lines
689 B
C++
// Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
#ifndef RUNTIME_VM_REVERSE_PC_LOOKUP_CACHE_H_
|
|
#define RUNTIME_VM_REVERSE_PC_LOOKUP_CACHE_H_
|
|
|
|
#include "vm/allocation.h"
|
|
#include "vm/globals.h"
|
|
#include "vm/tagged_pointer.h"
|
|
|
|
namespace dart {
|
|
|
|
class IsolateGroup;
|
|
|
|
class ReversePc : public AllStatic {
|
|
public:
|
|
static CodePtr Lookup(IsolateGroup* group,
|
|
uword pc,
|
|
bool is_return_address = false);
|
|
};
|
|
|
|
} // namespace dart
|
|
|
|
#endif // RUNTIME_VM_REVERSE_PC_LOOKUP_CACHE_H_
|