Skip to content

Commit 7fd0d07

Browse files
alexmarkovCommit Queue
authored andcommitted
[vm] Cleanup experimental createUriForKernelBlob API
This API was added in https://dart-review.googlesource.com/c/sdk/+/232682 in order to support one of the strategies for running macros, but it is no longer needed. TEST=ci Change-Id: I8da233932351f27fd5dfd01b66f481195d7ca0e1 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/407540 Reviewed-by: Ryan Macnak <[email protected]> Commit-Queue: Alexander Markov <[email protected]> Reviewed-by: Johnni Winther <[email protected]>
1 parent 66300e9 commit 7fd0d07

File tree

15 files changed

+13
-405
lines changed

15 files changed

+13
-405
lines changed

pkg/frontend_server/test/frontend_server_test.dart

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1773,11 +1773,6 @@ extension type Foo(int value) {
17731773
}
17741774
}
17751775

1776-
Uri registerKernelBlob(Uint8List bytes) {
1777-
bytes = new Uint8List.fromList(bytes);
1778-
return (Isolate.current as dynamic).createUriForKernelBlob(bytes);
1779-
}
1780-
17811776
Future<void> runWithServer(
17821777
Future<void> Function(RequestChannel) f,
17831778
) async {
@@ -1941,11 +1936,6 @@ void main(List<String> arguments, SendPort sendPort) {
19411936
);
19421937

19431938
expect(kernelBytes, hasLength(greaterThan(200)));
1944-
final Uri kernelUri = registerKernelBlob(kernelBytes);
1945-
1946-
final ReceivePort receivePort = new ReceivePort();
1947-
await Isolate.spawnUri(kernelUri, [], receivePort.sendPort);
1948-
expect(await receivePort.first, 42);
19491939
});
19501940
});
19511941
});

runtime/bin/dfe.cc

Lines changed: 5 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
#include "bin/error_exit.h"
1010
#include "bin/exe_utils.h"
1111
#include "bin/file.h"
12-
#include "bin/lockers.h"
1312
#include "bin/platform.h"
1413
#include "bin/snapshot_utils.h"
1514
#include "bin/utils.h"
@@ -67,9 +66,7 @@ DFE::DFE()
6766
use_incremental_compiler_(false),
6867
frontend_filename_(nullptr),
6968
application_kernel_buffer_(nullptr),
70-
application_kernel_buffer_size_(0),
71-
kernel_blobs_(&SimpleHashMap::SameStringValue, 4),
72-
kernel_blobs_lock_() {}
69+
application_kernel_buffer_size_(0) {}
7370

7471
DFE::~DFE() {
7572
if (frontend_filename_ != nullptr) {
@@ -80,9 +77,6 @@ DFE::~DFE() {
8077
free(application_kernel_buffer_);
8178
application_kernel_buffer_ = nullptr;
8279
application_kernel_buffer_size_ = 0;
83-
84-
kernel_blobs_.Clear(
85-
[](void* value) { delete reinterpret_cast<KernelBlob*>(value); });
8680
}
8781

8882
void DFE::Init() {
@@ -242,19 +236,14 @@ void DFE::ReadScript(const char* script_uri,
242236
const AppSnapshot* app_snapshot,
243237
uint8_t** kernel_buffer,
244238
intptr_t* kernel_buffer_size,
245-
bool decode_uri,
246-
std::shared_ptr<uint8_t>* kernel_blob_ptr) {
239+
bool decode_uri) const {
247240
int64_t start = Dart_TimelineGetMicros();
248241
if (!TryReadKernelFile(script_uri, app_snapshot, kernel_buffer,
249-
kernel_buffer_size, decode_uri, kernel_blob_ptr)) {
242+
kernel_buffer_size, decode_uri)) {
250243
return;
251244
}
252245
if (!Dart_IsKernel(*kernel_buffer, *kernel_buffer_size)) {
253-
if (kernel_blob_ptr != nullptr && *kernel_blob_ptr) {
254-
*kernel_blob_ptr = nullptr;
255-
} else {
256-
free(*kernel_buffer);
257-
}
246+
free(*kernel_buffer);
258247
*kernel_buffer = nullptr;
259248
*kernel_buffer_size = -1;
260249
}
@@ -438,20 +427,10 @@ bool DFE::TryReadKernelFile(const char* script_uri,
438427
const AppSnapshot* app_snapshot,
439428
uint8_t** kernel_ir,
440429
intptr_t* kernel_ir_size,
441-
bool decode_uri,
442-
std::shared_ptr<uint8_t>* kernel_blob_ptr) {
430+
bool decode_uri) const {
443431
*kernel_ir = nullptr;
444432
*kernel_ir_size = -1;
445433

446-
if (decode_uri && kernel_blob_ptr != nullptr) {
447-
*kernel_blob_ptr = TryFindKernelBlob(script_uri, kernel_ir_size);
448-
if (*kernel_blob_ptr) {
449-
*kernel_ir = kernel_blob_ptr->get();
450-
ASSERT(DartUtils::SniffForMagicNumber(*kernel_ir, *kernel_ir_size) ==
451-
DartUtils::kKernelMagicNumber);
452-
return true;
453-
}
454-
}
455434
if (app_snapshot == nullptr || app_snapshot->IsKernel() ||
456435
app_snapshot->IsKernelList()) {
457436
uint8_t* buffer;
@@ -479,72 +458,5 @@ bool DFE::TryReadKernelFile(const char* script_uri,
479458
return false;
480459
}
481460

482-
const char* DFE::RegisterKernelBlob(const uint8_t* kernel_buffer,
483-
intptr_t kernel_buffer_size) {
484-
ASSERT(DartUtils::SniffForMagicNumber(kernel_buffer, kernel_buffer_size) ==
485-
DartUtils::kKernelMagicNumber);
486-
uint8_t* buffer_copy = reinterpret_cast<uint8_t*>(malloc(kernel_buffer_size));
487-
if (buffer_copy == nullptr) {
488-
return nullptr;
489-
}
490-
memmove(buffer_copy, kernel_buffer, kernel_buffer_size);
491-
492-
MutexLocker ml(&kernel_blobs_lock_);
493-
++kernel_blob_counter_;
494-
char* uri =
495-
Utils::SCreate("dart-kernel-blob://blob%" Pd, kernel_blob_counter_);
496-
KernelBlob* blob = new KernelBlob(uri, buffer_copy, kernel_buffer_size);
497-
498-
const uint32_t hash = SimpleHashMap::StringHash(uri);
499-
SimpleHashMap::Entry* entry =
500-
kernel_blobs_.Lookup(uri, hash, /*insert=*/true);
501-
ASSERT(entry != nullptr);
502-
ASSERT(entry->value == nullptr);
503-
entry->value = blob;
504-
505-
return uri;
506-
}
507-
508-
std::shared_ptr<uint8_t> DFE::TryFindKernelBlob(const char* uri,
509-
intptr_t* kernel_length) {
510-
*kernel_length = -1;
511-
512-
MutexLocker ml(&kernel_blobs_lock_);
513-
if (kernel_blob_counter_ == 0) {
514-
return nullptr;
515-
}
516-
517-
// This const_cast is safe as this 'key' is only used to find entry, not add.
518-
void* key = const_cast<char*>(uri);
519-
const uint32_t hash = SimpleHashMap::StringHash(uri);
520-
SimpleHashMap::Entry* entry =
521-
kernel_blobs_.Lookup(key, hash, /*insert=*/false);
522-
if (entry == nullptr) {
523-
return nullptr;
524-
}
525-
526-
KernelBlob* blob = reinterpret_cast<KernelBlob*>(entry->value);
527-
*kernel_length = blob->size();
528-
return blob->buffer();
529-
}
530-
531-
void DFE::UnregisterKernelBlob(const char* uri) {
532-
MutexLocker ml(&kernel_blobs_lock_);
533-
534-
// This const_cast is safe as this 'key' is only used to find entry, not add.
535-
void* key = const_cast<char*>(uri);
536-
const uint32_t hash = SimpleHashMap::StringHash(uri);
537-
SimpleHashMap::Entry* entry =
538-
kernel_blobs_.Lookup(key, hash, /*insert=*/false);
539-
if (entry == nullptr) {
540-
return;
541-
}
542-
543-
KernelBlob* blob = reinterpret_cast<KernelBlob*>(entry->value);
544-
entry->value = nullptr;
545-
kernel_blobs_.Remove(key, hash);
546-
delete blob;
547-
}
548-
549461
} // namespace bin
550462
} // namespace dart

runtime/bin/dfe.h

Lines changed: 4 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,10 @@
77

88
#include <memory>
99

10-
#include "bin/thread.h"
1110
#include "include/dart_api.h"
1211
#include "include/dart_native_api.h"
1312
#include "platform/assert.h"
1413
#include "platform/globals.h"
15-
#include "platform/hashmap.h"
1614
#include "platform/utils.h"
1715

1816
namespace dart {
@@ -97,34 +95,26 @@ class DFE {
9795
// Returns an in memory kernel representation of the specified script is a
9896
// valid kernel file, sets 'kernel_buffer' to nullptr otherwise.
9997
//
100-
// If 'kernel_blob_ptr' is not nullptr, then this function can also
101-
// read kernel blobs. In such case it sets 'kernel_blob_ptr'
102-
// to a shared pointer which owns the kernel buffer.
103-
// Otherwise, the caller is responsible for free()ing 'kernel_buffer'.
98+
// The caller is responsible for free()ing 'kernel_buffer'.
10499
void ReadScript(const char* script_uri,
105100
const AppSnapshot* app_snapshot,
106101
uint8_t** kernel_buffer,
107102
intptr_t* kernel_buffer_size,
108-
bool decode_uri = true,
109-
std::shared_ptr<uint8_t>* kernel_blob_ptr = nullptr);
103+
bool decode_uri = true) const;
110104

111105
bool KernelServiceDillAvailable() const;
112106

113107
// Tries to read 'script_uri' as a Kernel IR file.
114108
// Returns `true` if successful and sets 'kernel_buffer' and 'kernel_length'
115109
// to be the kernel IR contents.
116110
//
117-
// If 'kernel_blob_ptr' is not nullptr, then this function can also
118-
// read kernel blobs. In such case it sets 'kernel_blob_ptr'
119-
// to a shared pointer which owns the kernel buffer.
120-
// Otherwise, the caller is responsible for free()ing 'kernel_buffer'
111+
// The caller is responsible for free()ing 'kernel_buffer'
121112
// if `true` was returned.
122113
bool TryReadKernelFile(const char* script_uri,
123114
const AppSnapshot* app_snapshot,
124115
uint8_t** kernel_buffer,
125116
intptr_t* kernel_buffer_size,
126-
bool decode_uri = true,
127-
std::shared_ptr<uint8_t>* kernel_blob_ptr = nullptr);
117+
bool decode_uri = true) const;
128118

129119
// We distinguish between "intent to use Dart frontend" vs "can actually
130120
// use Dart frontend". The method UseDartFrontend tells us about the
@@ -137,22 +127,6 @@ class DFE {
137127
void LoadKernelService(const uint8_t** kernel_service_buffer,
138128
intptr_t* kernel_service_buffer_size);
139129

140-
// Registers given kernel blob and returns blob URI which
141-
// can be used in TryReadKernelFile later to load the given kernel.
142-
// Data from [kernel_buffer] is copied, it doesn't need to stay alive.
143-
// Returns nullptr if failed to allocate memory.
144-
const char* RegisterKernelBlob(const uint8_t* kernel_buffer,
145-
intptr_t kernel_buffer_size);
146-
147-
// Looks for kernel blob using the given [uri].
148-
// Returns non-null pointer to the kernel blob if successful and
149-
// sets [kernel_length].
150-
std::shared_ptr<uint8_t> TryFindKernelBlob(const char* uri,
151-
intptr_t* kernel_length);
152-
153-
// Unregisters kernel blob with given URI.
154-
void UnregisterKernelBlob(const char* uri);
155-
156130
private:
157131
bool use_dfe_;
158132
bool use_incremental_compiler_;
@@ -164,33 +138,11 @@ class DFE {
164138
uint8_t* application_kernel_buffer_;
165139
intptr_t application_kernel_buffer_size_;
166140

167-
// Registry of kernel blobs. Maps URI (char *) to KernelBlob.
168-
SimpleHashMap kernel_blobs_;
169-
intptr_t kernel_blob_counter_ = 0;
170-
Mutex kernel_blobs_lock_;
171-
172141
void InitKernelServiceAndPlatformDills();
173142

174143
DISALLOW_COPY_AND_ASSIGN(DFE);
175144
};
176145

177-
class KernelBlob {
178-
public:
179-
// Takes ownership over [uri] and [buffer].
180-
KernelBlob(char* uri, uint8_t* buffer, intptr_t size)
181-
: uri_(uri), buffer_(buffer, std::free), size_(size) {}
182-
183-
std::shared_ptr<uint8_t> buffer() { return buffer_; }
184-
intptr_t size() const { return size_; }
185-
186-
private:
187-
CStringUniquePtr uri_;
188-
std::shared_ptr<uint8_t> buffer_;
189-
const intptr_t size_;
190-
191-
DISALLOW_COPY_AND_ASSIGN(KernelBlob);
192-
};
193-
194146
class PathSanitizer {
195147
public:
196148
explicit PathSanitizer(const char* path);

runtime/bin/isolate_data.h

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -66,16 +66,6 @@ class IsolateGroupData {
6666
kernel_buffer_size_ = size;
6767
}
6868

69-
// Associate the given kernel buffer with this IsolateGroupData and give it
70-
// ownership of the buffer. The buffer is already owned by another
71-
// IsolateGroupData.
72-
void SetKernelBufferAlreadyOwned(std::shared_ptr<uint8_t> buffer,
73-
intptr_t size) {
74-
ASSERT(kernel_buffer_.get() == nullptr);
75-
kernel_buffer_ = std::move(buffer);
76-
kernel_buffer_size_ = size;
77-
}
78-
7969
const char* resolved_packages_config() const {
8070
return resolved_packages_config_;
8171
}

runtime/bin/main_impl.cc

Lines changed: 3 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -696,7 +696,6 @@ static Dart_Isolate CreateIsolateGroupAndSetupHelper(
696696
int64_t start = Dart_TimelineGetMicros();
697697
ASSERT(script_uri != nullptr);
698698
uint8_t* kernel_buffer = nullptr;
699-
std::shared_ptr<uint8_t> kernel_buffer_ptr;
700699
intptr_t kernel_buffer_size = 0;
701700
AppSnapshot* app_snapshot = nullptr;
702701

@@ -762,8 +761,7 @@ static Dart_Isolate CreateIsolateGroupAndSetupHelper(
762761

763762
if (kernel_buffer == nullptr && !isolate_run_app_snapshot) {
764763
dfe.ReadScript(script_uri, app_snapshot, &kernel_buffer,
765-
&kernel_buffer_size, /*decode_uri=*/true,
766-
&kernel_buffer_ptr);
764+
&kernel_buffer_size, /*decode_uri=*/true);
767765
}
768766
PathSanitizer script_uri_sanitizer(script_uri);
769767
PathSanitizer packages_config_sanitizer(packages_config);
@@ -772,13 +770,8 @@ static Dart_Isolate CreateIsolateGroupAndSetupHelper(
772770
auto isolate_group_data = new IsolateGroupData(
773771
script_uri, packages_config, app_snapshot, isolate_run_app_snapshot);
774772
if (kernel_buffer != nullptr) {
775-
if (kernel_buffer_ptr) {
776-
isolate_group_data->SetKernelBufferAlreadyOwned(
777-
std::move(kernel_buffer_ptr), kernel_buffer_size);
778-
} else {
779-
isolate_group_data->SetKernelBufferNewlyOwned(kernel_buffer,
780-
kernel_buffer_size);
781-
}
773+
isolate_group_data->SetKernelBufferNewlyOwned(kernel_buffer,
774+
kernel_buffer_size);
782775
}
783776

784777
Dart_Isolate isolate = nullptr;
@@ -896,16 +889,6 @@ static Dart_Isolate CreateIsolateGroupAndSetup(const char* script_uri,
896889
error, &exit_code);
897890
}
898891

899-
#if !defined(DART_PRECOMPILED_RUNTIME)
900-
static const char* RegisterKernelBlob(const uint8_t* kernel_buffer,
901-
intptr_t kernel_buffer_size) {
902-
return dfe.RegisterKernelBlob(kernel_buffer, kernel_buffer_size);
903-
}
904-
static void UnregisterKernelBlob(const char* kernel_blob_uri) {
905-
dfe.UnregisterKernelBlob(kernel_blob_uri);
906-
}
907-
#endif // !defined(DART_PRECOMPILED_RUNTIME)
908-
909892
static void OnIsolateShutdown(void* isolate_group_data, void* isolate_data) {
910893
Dart_EnterScope();
911894
Dart_Handle sticky_error = Dart_GetStickyError();
@@ -1399,10 +1382,6 @@ void main(int argc, char** argv) {
13991382
#if !defined(DART_PRECOMPILED_RUNTIME)
14001383
init_params.start_kernel_isolate =
14011384
dfe.UseDartFrontend() && dfe.CanUseDartFrontend();
1402-
if (init_params.start_kernel_isolate) {
1403-
init_params.register_kernel_blob = RegisterKernelBlob;
1404-
init_params.unregister_kernel_blob = UnregisterKernelBlob;
1405-
}
14061385
#else
14071386
init_params.start_kernel_isolate = false;
14081387
#endif

0 commit comments

Comments
 (0)