diff options
author | 2022-06-07 22:32:46 -0700 | |
---|---|---|
committer | 2022-06-07 22:32:46 -0700 | |
commit | 43de33afc7fcc4cab25f578566e225ba9e4d4258 (patch) | |
tree | 141676095981741c3a5740093fee79ed12d4edcd /src/javascript/jsc/bindings/BunGCOutputConstraint.cpp | |
parent | 958fc3d4f5ba2a1fb5b5e1e2b9fe3a4500dbefc6 (diff) | |
download | bun-43de33afc7fcc4cab25f578566e225ba9e4d4258.tar.gz bun-43de33afc7fcc4cab25f578566e225ba9e4d4258.tar.zst bun-43de33afc7fcc4cab25f578566e225ba9e4d4258.zip |
Web Streams API (#176)
* [bun.js] `WritableStream`, `ReadableStream`, `TransformStream`, `WritableStreamDefaultController`, `ReadableStreamDefaultController` & more
* Implement `Blob.stream()`
* Update streams.test.js
* Fix sourcemaps crash
* [TextEncoder] 3x faster in hot loops
* reading almost works
* start to implement native streams
* Implement `Blob.stream()`
* Implement `Bun.file(pathOrFd).stream()`
* Add an extra function
* [fs.readFile] Improve performance
* make jsc bindings a little easier to work with
* fix segfault
* faster async/await + readablestream optimizations
* WebKit updates
* More WebKit updates
* Add releaseWEakrefs binding
* `bun:jsc`
* More streams
* Update streams.test.js
* Update Makefile
* Update mimalloc
* Update WebKit
* Create bun-jsc.test.js
* Faster ReadableStream
* Fix off by one & exceptions
* Handle empty files/blobs
* Update streams.test.js
* Move streams to it's own file
* temp
* impl #1
* take two
* good enough for now
* Implement `readableStreamToArray`, `readableStreamToArrayBuffer`, `concatArrayBuffers`
* jsxOptimizationInlining
* Fix crash
* Add `jsxOptimizationInline` to Bun.Transpiler
* Update Transpiler types
* Update js_ast.zig
* Automatically choose production mode when NODE_ENV="production"
* Update cli.zig
* [jsx] Handle defaultProps when inlining
* Update transpiler.test.js
* uncomment some tests
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Diffstat (limited to 'src/javascript/jsc/bindings/BunGCOutputConstraint.cpp')
-rw-r--r-- | src/javascript/jsc/bindings/BunGCOutputConstraint.cpp | 198 |
1 files changed, 99 insertions, 99 deletions
diff --git a/src/javascript/jsc/bindings/BunGCOutputConstraint.cpp b/src/javascript/jsc/bindings/BunGCOutputConstraint.cpp index ec487edc9..97ee0761b 100644 --- a/src/javascript/jsc/bindings/BunGCOutputConstraint.cpp +++ b/src/javascript/jsc/bindings/BunGCOutputConstraint.cpp @@ -31,105 +31,105 @@ #include "JavaScriptCore/VM.h" #include "JavaScriptCore/MarkingConstraint.h" -namespace JSC { - -class VisitCounter { -public: - VisitCounter() {} - - VisitCounter(AbstractSlotVisitor& visitor) - : m_visitor(&visitor) - , m_initialVisitCount(visitor.visitCount()) - { - } - - AbstractSlotVisitor& visitor() const { return *m_visitor; } - - size_t visitCount() const - { - return m_visitor->visitCount() - m_initialVisitCount; - } - -private: - AbstractSlotVisitor* m_visitor { nullptr }; - size_t m_initialVisitCount { 0 }; -}; - -static constexpr bool verboseMarkingConstraint = false; - -MarkingConstraint::MarkingConstraint(CString abbreviatedName, CString name, ConstraintVolatility volatility, ConstraintConcurrency concurrency, ConstraintParallelism parallelism) - : m_abbreviatedName(abbreviatedName) - , m_name(WTFMove(name)) - , m_volatility(volatility) - , m_concurrency(concurrency) - , m_parallelism(parallelism) -{ -} - -MarkingConstraint::~MarkingConstraint() -{ -} - -void MarkingConstraint::resetStats() -{ - m_lastVisitCount = 0; -} - -void MarkingConstraint::execute(SlotVisitor& visitor) -{ - ASSERT(!visitor.heap()->isMarkingForGCVerifier()); - VisitCounter visitCounter(visitor); - executeImpl(visitor); - m_lastVisitCount += visitCounter.visitCount(); - if (verboseMarkingConstraint && visitCounter.visitCount()) - dataLog("(", abbreviatedName(), " visited ", visitCounter.visitCount(), " in execute)"); -} - -void MarkingConstraint::executeSynchronously(AbstractSlotVisitor& visitor) -{ - prepareToExecuteImpl(NoLockingNecessary, visitor); - executeImpl(visitor); -} - -double MarkingConstraint::quickWorkEstimate(SlotVisitor&) -{ - return 0; -} - -double MarkingConstraint::workEstimate(SlotVisitor& visitor) -{ - return lastVisitCount() + quickWorkEstimate(visitor); -} - -void MarkingConstraint::prepareToExecute(const AbstractLocker& constraintSolvingLocker, SlotVisitor& visitor) -{ - ASSERT(!visitor.heap()->isMarkingForGCVerifier()); - dataLogIf(Options::logGC(), abbreviatedName()); - VisitCounter visitCounter(visitor); - prepareToExecuteImpl(constraintSolvingLocker, visitor); - m_lastVisitCount = visitCounter.visitCount(); - if (verboseMarkingConstraint && visitCounter.visitCount()) - dataLog("(", abbreviatedName(), " visited ", visitCounter.visitCount(), " in prepareToExecute)"); -} - -void MarkingConstraint::doParallelWork(SlotVisitor& visitor, SharedTask<void(SlotVisitor&)>& task) -{ - ASSERT(!visitor.heap()->isMarkingForGCVerifier()); - VisitCounter visitCounter(visitor); - task.run(visitor); - if (verboseMarkingConstraint && visitCounter.visitCount()) - dataLog("(", abbreviatedName(), " visited ", visitCounter.visitCount(), " in doParallelWork)"); - { - Locker locker { m_lock }; - m_lastVisitCount += visitCounter.visitCount(); - } -} - -void MarkingConstraint::prepareToExecuteImpl(const AbstractLocker&, AbstractSlotVisitor&) -{ -} - -} // namespace JSC +// namespace JSC { + +// class VisitCounter { +// public: +// VisitCounter() {} + +// VisitCounter(AbstractSlotVisitor& visitor) +// : m_visitor(&visitor) +// , m_initialVisitCount(visitor.visitCount()) +// { +// } + +// AbstractSlotVisitor& visitor() const { return *m_visitor; } + +// size_t visitCount() const +// { +// return m_visitor->visitCount() - m_initialVisitCount; +// } + +// private: +// AbstractSlotVisitor* m_visitor { nullptr }; +// size_t m_initialVisitCount { 0 }; +// }; + +// static constexpr bool verboseMarkingConstraint = false; + +// MarkingConstraint::MarkingConstraint(CString abbreviatedName, CString name, ConstraintVolatility volatility, ConstraintConcurrency concurrency, ConstraintParallelism parallelism) +// : m_abbreviatedName(abbreviatedName) +// , m_name(WTFMove(name)) +// , m_volatility(volatility) +// , m_concurrency(concurrency) +// , m_parallelism(parallelism) +// { +// } + +// MarkingConstraint::~MarkingConstraint() +// { +// } + +// void MarkingConstraint::resetStats() +// { +// m_lastVisitCount = 0; +// } + +// void MarkingConstraint::execute(SlotVisitor& visitor) +// { +// ASSERT(!visitor.heap()->isMarkingForGCVerifier()); +// VisitCounter visitCounter(visitor); +// executeImpl(visitor); +// m_lastVisitCount += visitCounter.visitCount(); +// if (verboseMarkingConstraint && visitCounter.visitCount()) +// dataLog("(", abbreviatedName(), " visited ", visitCounter.visitCount(), " in execute)"); +// } + +// void MarkingConstraint::executeSynchronously(AbstractSlotVisitor& visitor) +// { +// prepareToExecuteImpl(NoLockingNecessary, visitor); +// executeImpl(visitor); +// } + +// double MarkingConstraint::quickWorkEstimate(SlotVisitor&) +// { +// return 0; +// } + +// double MarkingConstraint::workEstimate(SlotVisitor& visitor) +// { +// return lastVisitCount() + quickWorkEstimate(visitor); +// } + +// void MarkingConstraint::prepareToExecute(const AbstractLocker& constraintSolvingLocker, SlotVisitor& visitor) +// { +// ASSERT(!visitor.heap()->isMarkingForGCVerifier()); +// dataLogIf(Options::logGC(), abbreviatedName()); +// VisitCounter visitCounter(visitor); +// prepareToExecuteImpl(constraintSolvingLocker, visitor); +// m_lastVisitCount = visitCounter.visitCount(); +// if (verboseMarkingConstraint && visitCounter.visitCount()) +// dataLog("(", abbreviatedName(), " visited ", visitCounter.visitCount(), " in prepareToExecute)"); +// } + +// void MarkingConstraint::doParallelWork(SlotVisitor& visitor, SharedTask<void(SlotVisitor&)>& task) +// { +// ASSERT(!visitor.heap()->isMarkingForGCVerifier()); +// VisitCounter visitCounter(visitor); +// task.run(visitor); +// if (verboseMarkingConstraint && visitCounter.visitCount()) +// dataLog("(", abbreviatedName(), " visited ", visitCounter.visitCount(), " in doParallelWork)"); +// { +// Locker locker { m_lock }; +// m_lastVisitCount += visitCounter.visitCount(); +// } +// } + +// void MarkingConstraint::prepareToExecuteImpl(const AbstractLocker&, AbstractSlotVisitor&) +// { +// } + +// } // namespace JSC #include "BunGCOutputConstraint.h" |