JS::SourceBufferHolder 编辑
This article covers features introduced in SpiderMonkey 31
Container class for passing in script source buffers to the JS engine.
Constructor
enum Ownership {
NoOwnership,
GiveOwnership
};
JS::SourceBufferHolder(const char16_t *data, size_t dataLength,
Ownership ownership);
Name | Type | Description |
---|---|---|
data | const char16_t * | Source buffer containing the script to compile. |
dataLength | size_t | The length of data , in characters. |
ownership | Ownership | See description. |
Description
JS::SourceBufferHolder
is the container class for passing in script source buffers to the JS engine. This not only groups the buffer and length values, it also provides a way to optionally pass ownership of the buffer to the JS engine without copying. Rules for use:
- The data array must be allocated with
js_malloc
orjs_realloc
ifownership
is being granted to theSourceBufferHolder
. - If
ownership
is not given to theSourceBufferHolder
, then the memory must be kept alive until the JS compilation is complete. - Any code calling
SourceBufferHolder::take()
must guarantee to keep the memory alive until JS compilation completes. Normally only the JS engine should be callingtake()
.
Example
size_t length = 512; char16_t* chars = static_cast<char16_t*>(js_malloc(sizeof(char16_t) * length)); JS::SourceBufferHolder srcBuf(chars, length, JS::SourceBufferHolder::GiveOwnership); JS::Compile(cx, obj, options, srcBuf);
See Also
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论