0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-10-31 09:14:20 -04:00
denoland-deno/ext/node/polyfills/v8.ts
Bartek Iwańczuk b40086fd7d
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-05 02:31:38 +00:00

113 lines
2.8 KiB
TypeScript

// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
// Copyright Joyent and Node contributors. All rights reserved. MIT license.
import { notImplemented } from "internal:deno_node/_utils.ts";
const { ops } = globalThis.__bootstrap.core;
export function cachedDataVersionTag() {
return ops.op_v8_cached_data_version_tag();
}
export function getHeapCodeStatistics() {
notImplemented("v8.getHeapCodeStatistics");
}
export function getHeapSnapshot() {
notImplemented("v8.getHeapSnapshot");
}
export function getHeapSpaceStatistics() {
notImplemented("v8.getHeapSpaceStatistics");
}
const buffer = new Float64Array(14);
export function getHeapStatistics() {
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],
};
}
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,
};