2023-02-14 11:38:45 -05:00
|
|
|
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
|
|
|
|
// Copyright Joyent and Node contributors. All rights reserved. MIT license.
|
|
|
|
|
refactor(core): include_js_files! 'dir' option doesn't change specifiers (#18019)
This commit changes "include_js_files!" macro from "deno_core"
in a way that "dir" option doesn't cause specifiers to be rewritten
to include it.
Example:
```
include_js_files! {
dir "js",
"hello.js",
}
```
The above definition required embedders to use:
`import ... from "internal:<ext_name>/js/hello.js"`.
But with this change, the "js" directory in which the files are stored
is an implementation detail, which for embedders results in:
`import ... from "internal:<ext_name>/hello.js"`.
The directory the files are stored in, is an implementation detail and
in some cases might result in a significant size difference for the
snapshot. As an example, in "deno_node" extension, we store the
source code in "polyfills" directory; which resulted in each specifier
to look like "internal:deno_node/polyfills/<module_name>", but with
this change it's "internal:deno_node/<module_name>".
Given that "deno_node" has over 100 files, many of them having
several import specifiers to the same extension, this change removes
10 characters from each import specifier.
2023-03-04 21:31:38 -05:00
|
|
|
import { notImplemented } from "internal:deno_node/_utils.ts";
|
2023-02-14 11:38:45 -05:00
|
|
|
|
2023-02-17 08:18:09 -05:00
|
|
|
const { ops } = globalThis.__bootstrap.core;
|
|
|
|
|
2023-02-14 11:38:45 -05:00
|
|
|
export function cachedDataVersionTag() {
|
2023-02-17 08:18:09 -05:00
|
|
|
return ops.op_v8_cached_data_version_tag();
|
2023-02-14 11:38:45 -05:00
|
|
|
}
|
|
|
|
export function getHeapCodeStatistics() {
|
|
|
|
notImplemented("v8.getHeapCodeStatistics");
|
|
|
|
}
|
|
|
|
export function getHeapSnapshot() {
|
|
|
|
notImplemented("v8.getHeapSnapshot");
|
|
|
|
}
|
|
|
|
export function getHeapSpaceStatistics() {
|
|
|
|
notImplemented("v8.getHeapSpaceStatistics");
|
|
|
|
}
|
2023-02-17 08:18:09 -05:00
|
|
|
|
|
|
|
const buffer = new Float64Array(14);
|
|
|
|
|
2023-02-14 11:38:45 -05:00
|
|
|
export function getHeapStatistics() {
|
2023-02-17 08:18:09 -05:00
|
|
|
ops.op_v8_get_heap_statistics(buffer);
|
|
|
|
|
|
|
|
return {
|
|
|
|
total_heap_size: buffer[0],
|
|
|
|
total_heap_size_executable: buffer[1],
|
|
|
|
total_physical_size: buffer[2],
|
|
|
|
total_available_size: buffer[3],
|
|
|
|
used_heap_size: buffer[4],
|
|
|
|
heap_size_limit: buffer[5],
|
|
|
|
malloced_memory: buffer[6],
|
|
|
|
peak_malloced_memory: buffer[7],
|
|
|
|
does_zap_garbage: buffer[8],
|
|
|
|
number_of_native_contexts: buffer[9],
|
|
|
|
number_of_detached_contexts: buffer[10],
|
|
|
|
total_global_handles_size: buffer[11],
|
|
|
|
used_global_handles_size: buffer[12],
|
|
|
|
external_memory: buffer[13],
|
|
|
|
};
|
2023-02-14 11:38:45 -05:00
|
|
|
}
|
2023-02-17 08:18:09 -05:00
|
|
|
|
2023-02-14 11:38:45 -05:00
|
|
|
export function setFlagsFromString() {
|
|
|
|
notImplemented("v8.setFlagsFromString");
|
|
|
|
}
|
|
|
|
export function stopCoverage() {
|
|
|
|
notImplemented("v8.stopCoverage");
|
|
|
|
}
|
|
|
|
export function takeCoverage() {
|
|
|
|
notImplemented("v8.takeCoverage");
|
|
|
|
}
|
|
|
|
export function writeHeapSnapshot() {
|
|
|
|
notImplemented("v8.writeHeapSnapshot");
|
|
|
|
}
|
|
|
|
export function serialize() {
|
|
|
|
notImplemented("v8.serialize");
|
|
|
|
}
|
|
|
|
export function deserialize() {
|
|
|
|
notImplemented("v8.deserialize");
|
|
|
|
}
|
|
|
|
export class Serializer {
|
|
|
|
constructor() {
|
|
|
|
notImplemented("v8.Serializer.prototype.constructor");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
export class Deserializer {
|
|
|
|
constructor() {
|
|
|
|
notImplemented("v8.Deserializer.prototype.constructor");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
export class DefaultSerializer {
|
|
|
|
constructor() {
|
|
|
|
notImplemented("v8.DefaultSerializer.prototype.constructor");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
export class DefaultDeserializer {
|
|
|
|
constructor() {
|
|
|
|
notImplemented("v8.DefaultDeserializer.prototype.constructor");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
export const promiseHooks = {
|
|
|
|
onInit() {
|
|
|
|
notImplemented("v8.promiseHooks.onInit");
|
|
|
|
},
|
|
|
|
onSettled() {
|
|
|
|
notImplemented("v8.promiseHooks.onSetttled");
|
|
|
|
},
|
|
|
|
onBefore() {
|
|
|
|
notImplemented("v8.promiseHooks.onBefore");
|
|
|
|
},
|
|
|
|
createHook() {
|
|
|
|
notImplemented("v8.promiseHooks.createHook");
|
|
|
|
},
|
|
|
|
};
|
|
|
|
export default {
|
|
|
|
cachedDataVersionTag,
|
|
|
|
getHeapCodeStatistics,
|
|
|
|
getHeapSnapshot,
|
|
|
|
getHeapSpaceStatistics,
|
|
|
|
getHeapStatistics,
|
|
|
|
setFlagsFromString,
|
|
|
|
stopCoverage,
|
|
|
|
takeCoverage,
|
|
|
|
writeHeapSnapshot,
|
|
|
|
serialize,
|
|
|
|
deserialize,
|
|
|
|
Serializer,
|
|
|
|
Deserializer,
|
|
|
|
DefaultSerializer,
|
|
|
|
DefaultDeserializer,
|
|
|
|
promiseHooks,
|
|
|
|
};
|