Buckets:
| /** | |
| * @license | |
| * Copyright 2014 The Emscripten Authors | |
| * SPDX-License-Identifier: MIT | |
| */ | |
| var LibraryTracing = { | |
| $EmscriptenTrace__deps: [ | |
| '$traceConfigure', 'emscripten_trace_configure_for_google_wtf', | |
| '$traceEnterContext', 'emscripten_trace_exit_context', | |
| '$traceLogMessage', '$traceMark', | |
| 'emscripten_get_now', | |
| '$jsStackTrace' | |
| ], | |
| $EmscriptenTrace__postset: 'EmscriptenTrace.init()', | |
| $EmscriptenTrace: { | |
| worker: null, | |
| collectorEnabled: false, | |
| googleWTFEnabled: false, | |
| testingEnabled: false, | |
| googleWTFData: { | |
| 'scopeStack': [], | |
| 'cachedScopes': {} | |
| }, | |
| DATA_VERSION: 1, | |
| EVENT_ALLOCATE: 'allocate', | |
| EVENT_ANNOTATE_TYPE: 'annotate-type', | |
| EVENT_APPLICATION_NAME: 'application-name', | |
| EVENT_ASSOCIATE_STORAGE_SIZE: 'associate-storage-size', | |
| EVENT_ENTER_CONTEXT: 'enter-context', | |
| EVENT_EXIT_CONTEXT: 'exit-context', | |
| EVENT_FRAME_END: 'frame-end', | |
| EVENT_FRAME_RATE: 'frame-rate', | |
| EVENT_FRAME_START: 'frame-start', | |
| EVENT_FREE: 'free', | |
| EVENT_LOG_MESSAGE: 'log-message', | |
| EVENT_MEMORY_LAYOUT: 'memory-layout', | |
| EVENT_OFF_HEAP: 'off-heap', | |
| EVENT_REALLOCATE: 'reallocate', | |
| EVENT_REPORT_ERROR: 'report-error', | |
| EVENT_SBRK_GROW: 'sbrk-grow', | |
| EVENT_SESSION_NAME: 'session-name', | |
| EVENT_TASK_ASSOCIATE_DATA: 'task-associate-data', | |
| EVENT_TASK_END: 'task-end', | |
| EVENT_TASK_RESUME: 'task-resume', | |
| EVENT_TASK_START: 'task-start', | |
| EVENT_TASK_SUSPEND: 'task-suspend', | |
| EVENT_USER_NAME: 'user-name', | |
| init: () => { | |
| Module['emscripten_trace_configure'] = traceConfigure; | |
| Module['emscripten_trace_configure_for_google_wtf'] = _emscripten_trace_configure_for_google_wtf; | |
| Module['emscripten_trace_enter_context'] = traceEnterContext; | |
| Module['emscripten_trace_exit_context'] = _emscripten_trace_exit_context; | |
| Module['emscripten_trace_log_message'] = traceLogMessage; | |
| Module['emscripten_trace_mark'] = traceMark; | |
| }, | |
| // Work around CORS issues ... | |
| fetchBlob: async (url) => { | |
| var rsp = await fetch(url); | |
| return rsp.blob(); | |
| }, | |
| configure: async (collector_url, application) => { | |
| EmscriptenTrace.now = _emscripten_get_now; | |
| var now = new Date(); | |
| var session_id = now.getTime().toString() + '_' + | |
| Math.floor((Math.random() * 100) + 1).toString(); | |
| var blob = await EmscriptenTrace.fetchBlob(collector_url + 'worker.js'); | |
| EmscriptenTrace.worker = new Worker(window.URL.createObjectURL(blob)); | |
| EmscriptenTrace.worker.addEventListener('error', (e) => { | |
| out('TRACE WORKER ERROR:'); | |
| out(e); | |
| }, false); | |
| EmscriptenTrace.worker.postMessage({ 'cmd': 'configure', | |
| 'data_version': EmscriptenTrace.DATA_VERSION, | |
| 'session_id': session_id, | |
| 'url': collector_url }); | |
| EmscriptenTrace.configured = true; | |
| EmscriptenTrace.collectorEnabled = true; | |
| EmscriptenTrace.postEnabled = true; | |
| EmscriptenTrace.post([EmscriptenTrace.EVENT_APPLICATION_NAME, application]); | |
| EmscriptenTrace.post([EmscriptenTrace.EVENT_SESSION_NAME, now.toISOString()]); | |
| }, | |
| configureForTest: () => { | |
| EmscriptenTrace.postEnabled = true; | |
| EmscriptenTrace.testingEnabled = true; | |
| EmscriptenTrace.now = () => 0.0; | |
| }, | |
| configureForGoogleWTF: () => { | |
| if (window?.['wtf']) { | |
| EmscriptenTrace.googleWTFEnabled = true; | |
| } else { | |
| out('GOOGLE WTF NOT AVAILABLE TO ENABLE'); | |
| } | |
| }, | |
| post: (entry) => { | |
| if (EmscriptenTrace.postEnabled && EmscriptenTrace.collectorEnabled) { | |
| EmscriptenTrace.worker.postMessage({ 'cmd': 'post', | |
| 'entry': entry }); | |
| } else if (EmscriptenTrace.postEnabled && EmscriptenTrace.testingEnabled) { | |
| out('Tracing ' + entry); | |
| } | |
| }, | |
| googleWTFEnterScope: (name) => { | |
| var scopeEvent = EmscriptenTrace.googleWTFData['cachedScopes'][name]; | |
| if (!scopeEvent) { | |
| scopeEvent = window['wtf'].trace.events.createScope(name); | |
| EmscriptenTrace.googleWTFData['cachedScopes'][name] = scopeEvent; | |
| } | |
| var scope = scopeEvent(); | |
| EmscriptenTrace.googleWTFData['scopeStack'].push(scope); | |
| }, | |
| googleWTFExitScope: () => { | |
| var scope = EmscriptenTrace.googleWTFData['scopeStack'].pop(); | |
| window['wtf'].trace.leaveScope(scope); | |
| } | |
| }, | |
| $traceConfigure: (collector_url, application) => { | |
| EmscriptenTrace.configure(collector_url, application); | |
| }, | |
| emscripten_trace_configure: (collector_url, application) => { | |
| EmscriptenTrace.configure(UTF8ToString(collector_url), | |
| UTF8ToString(application)); | |
| }, | |
| emscripten_trace_configure_for_test: () => { | |
| EmscriptenTrace.configureForTest(); | |
| }, | |
| emscripten_trace_configure_for_google_wtf: () => { | |
| EmscriptenTrace.configureForGoogleWTF(); | |
| }, | |
| emscripten_trace_set_enabled: (enabled) => { | |
| EmscriptenTrace.postEnabled = !!enabled; | |
| }, | |
| emscripten_trace_set_session_username: (username) => { | |
| EmscriptenTrace.post(EmscriptenTrace.EVENT_USER_NAME, UTF8ToString(username)); | |
| }, | |
| emscripten_trace_record_frame_start: () => { | |
| if (EmscriptenTrace.postEnabled) { | |
| var now = EmscriptenTrace.now(); | |
| EmscriptenTrace.post([EmscriptenTrace.EVENT_FRAME_START, now]); | |
| } | |
| }, | |
| emscripten_trace_record_frame_end: () => { | |
| if (EmscriptenTrace.postEnabled) { | |
| var now = EmscriptenTrace.now(); | |
| EmscriptenTrace.post([EmscriptenTrace.EVENT_FRAME_END, now]); | |
| } | |
| }, | |
| $traceLogMessage: (channel, message) => { | |
| if (EmscriptenTrace.postEnabled) { | |
| var now = EmscriptenTrace.now(); | |
| EmscriptenTrace.post([EmscriptenTrace.EVENT_LOG_MESSAGE, now, | |
| channel, message]); | |
| } | |
| }, | |
| emscripten_trace_log_message: (channel, message) => { | |
| if (EmscriptenTrace.postEnabled) { | |
| var now = EmscriptenTrace.now(); | |
| EmscriptenTrace.post([EmscriptenTrace.EVENT_LOG_MESSAGE, now, | |
| UTF8ToString(channel), | |
| UTF8ToString(message)]); | |
| } | |
| }, | |
| $traceMark: (message) => { | |
| if (EmscriptenTrace.postEnabled) { | |
| var now = EmscriptenTrace.now(); | |
| EmscriptenTrace.post([EmscriptenTrace.EVENT_LOG_MESSAGE, now, | |
| "MARK", message]); | |
| } | |
| if (EmscriptenTrace.googleWTFEnabled) { | |
| window['wtf'].trace.mark(message); | |
| } | |
| }, | |
| emscripten_trace_mark: (message) => { | |
| if (EmscriptenTrace.postEnabled) { | |
| var now = EmscriptenTrace.now(); | |
| EmscriptenTrace.post([EmscriptenTrace.EVENT_LOG_MESSAGE, now, | |
| "MARK", UTF8ToString(message)]); | |
| } | |
| if (EmscriptenTrace.googleWTFEnabled) { | |
| window['wtf'].trace.mark(UTF8ToString(message)); | |
| } | |
| }, | |
| emscripten_trace_report_error: (error) => { | |
| var now = EmscriptenTrace.now(); | |
| var callstack = (new Error).stack; | |
| EmscriptenTrace.post([EmscriptenTrace.EVENT_REPORT_ERROR, now, | |
| UTF8ToString(error), callstack]); | |
| }, | |
| emscripten_trace_sbrk_grow: (old_brk, new_brk) => { | |
| Module['onSbrkGrow']?.(old_brk, new_brk, jsStackTrace()); | |
| if (EmscriptenTrace.postEnabled) { | |
| var now = EmscriptenTrace.now(); | |
| EmscriptenTrace.post([EmscriptenTrace.EVENT_SBRK_GROW, | |
| now, old_brk, new_brk]); | |
| } | |
| }, | |
| emscripten_trace_record_allocation: (address, size) => { | |
| Module['onMalloc']?.(address, size, jsStackTrace()); | |
| if (EmscriptenTrace.postEnabled) { | |
| var now = EmscriptenTrace.now(); | |
| EmscriptenTrace.post([EmscriptenTrace.EVENT_ALLOCATE, | |
| now, address, size]); | |
| } | |
| }, | |
| emscripten_trace_record_reallocation: (old_address, new_address, size) => { | |
| Module['onRealloc']?.(old_address, new_address, size, jsStackTrace()); | |
| if (EmscriptenTrace.postEnabled) { | |
| var now = EmscriptenTrace.now(); | |
| EmscriptenTrace.post([EmscriptenTrace.EVENT_REALLOCATE, | |
| now, old_address, new_address, size]); | |
| } | |
| }, | |
| emscripten_trace_record_free: (address) => { | |
| Module['onFree']?.(address); | |
| if (EmscriptenTrace.postEnabled) { | |
| var now = EmscriptenTrace.now(); | |
| EmscriptenTrace.post([EmscriptenTrace.EVENT_FREE, | |
| now, address]); | |
| } | |
| }, | |
| emscripten_trace_annotate_address_type: (address, type_name) => { | |
| if (EmscriptenTrace.postEnabled) { | |
| EmscriptenTrace.post([EmscriptenTrace.EVENT_ANNOTATE_TYPE, address, | |
| UTF8ToString(type_name)]); | |
| } | |
| }, | |
| emscripten_trace_associate_storage_size: (address, size) => { | |
| if (EmscriptenTrace.postEnabled) { | |
| EmscriptenTrace.post([EmscriptenTrace.EVENT_ASSOCIATE_STORAGE_SIZE, | |
| address, size]); | |
| } | |
| }, | |
| emscripten_trace_report_memory_layout: () => { | |
| if (EmscriptenTrace.postEnabled) { | |
| var memory_layout = { | |
| 'static_base': {{{ GLOBAL_BASE }}}, | |
| 'stack_base': _emscripten_stack_get_base(), | |
| 'stack_top': _emscripten_stack_get_current(), | |
| 'stack_max': _emscripten_stack_get_end(), | |
| 'dynamic_top': _sbrk(0), | |
| 'total_memory': HEAP8.length | |
| }; | |
| var now = EmscriptenTrace.now(); | |
| EmscriptenTrace.post([EmscriptenTrace.EVENT_MEMORY_LAYOUT, | |
| now, memory_layout]); | |
| } | |
| }, | |
| emscripten_trace_report_off_heap_data: () => { | |
| function openal_audiodata_size() { | |
| if (typeof AL == 'undefined' || !AL.currentContext) { | |
| return 0; | |
| } | |
| var totalMemory = 0; | |
| for (var i in AL.currentContext.buf) { | |
| var buffer = AL.currentContext.buf[i]; | |
| for (var channel = 0; channel < buffer.numberOfChannels; ++channel) { | |
| totalMemory += buffer.getChannelData(channel).length * 4; | |
| } | |
| } | |
| return totalMemory; | |
| } | |
| if (EmscriptenTrace.postEnabled) { | |
| var off_heap_data = { | |
| 'openal': openal_audiodata_size() | |
| } | |
| var now = EmscriptenTrace.now(); | |
| EmscriptenTrace.post([EmscriptenTrace.EVENT_OFF_HEAP, now, off_heap_data]); | |
| } | |
| }, | |
| $traceEnterContext: (name) => { | |
| if (EmscriptenTrace.postEnabled) { | |
| var now = EmscriptenTrace.now(); | |
| EmscriptenTrace.post([EmscriptenTrace.EVENT_ENTER_CONTEXT, | |
| now, name]); | |
| } | |
| if (EmscriptenTrace.googleWTFEnabled) { | |
| EmscriptenTrace.googleWTFEnterScope(name); | |
| } | |
| }, | |
| emscripten_trace_enter_context: (name) => { | |
| if (EmscriptenTrace.postEnabled) { | |
| var now = EmscriptenTrace.now(); | |
| EmscriptenTrace.post([EmscriptenTrace.EVENT_ENTER_CONTEXT, | |
| now, UTF8ToString(name)]); | |
| } | |
| if (EmscriptenTrace.googleWTFEnabled) { | |
| EmscriptenTrace.googleWTFEnterScope(UTF8ToString(name)); | |
| } | |
| }, | |
| emscripten_trace_exit_context: () => { | |
| if (EmscriptenTrace.postEnabled) { | |
| var now = EmscriptenTrace.now(); | |
| EmscriptenTrace.post([EmscriptenTrace.EVENT_EXIT_CONTEXT, now]); | |
| } | |
| if (EmscriptenTrace.googleWTFEnabled) { | |
| EmscriptenTrace.googleWTFExitScope(); | |
| } | |
| }, | |
| emscripten_trace_task_start: (task_id, name) => { | |
| if (EmscriptenTrace.postEnabled) { | |
| var now = EmscriptenTrace.now(); | |
| EmscriptenTrace.post([EmscriptenTrace.EVENT_TASK_START, | |
| now, task_id, UTF8ToString(name)]); | |
| } | |
| }, | |
| emscripten_trace_task_associate_data: (key, value) => { | |
| if (EmscriptenTrace.postEnabled) { | |
| EmscriptenTrace.post([EmscriptenTrace.EVENT_TASK_ASSOCIATE_DATA, | |
| UTF8ToString(key), | |
| UTF8ToString(value)]); | |
| } | |
| }, | |
| emscripten_trace_task_suspend: (explanation) => { | |
| if (EmscriptenTrace.postEnabled) { | |
| var now = EmscriptenTrace.now(); | |
| EmscriptenTrace.post([EmscriptenTrace.EVENT_TASK_SUSPEND, | |
| now, UTF8ToString(explanation)]); | |
| } | |
| }, | |
| emscripten_trace_task_resume: (task_id, explanation) => { | |
| if (EmscriptenTrace.postEnabled) { | |
| var now = EmscriptenTrace.now(); | |
| EmscriptenTrace.post([EmscriptenTrace.EVENT_TASK_RESUME, | |
| now, task_id, UTF8ToString(explanation)]); | |
| } | |
| }, | |
| emscripten_trace_task_end: () => { | |
| if (EmscriptenTrace.postEnabled) { | |
| var now = EmscriptenTrace.now(); | |
| EmscriptenTrace.post([EmscriptenTrace.EVENT_TASK_END, now]); | |
| } | |
| }, | |
| emscripten_trace_close: () => { | |
| EmscriptenTrace.collectorEnabled = false; | |
| EmscriptenTrace.googleWTFEnabled = false; | |
| EmscriptenTrace.postEnabled = false; | |
| EmscriptenTrace.testingEnabled = false; | |
| EmscriptenTrace.worker.postMessage({ 'cmd': 'close' }); | |
| EmscriptenTrace.worker = null; | |
| }, | |
| }; | |
| autoAddDeps(LibraryTracing, '$EmscriptenTrace'); | |
| addToLibrary(LibraryTracing); | |
Xet Storage Details
- Size:
- 13 kB
- Xet hash:
- acbf4bae82c44ddb276a438f08e55e2d7811a6ce236df3660c31293a12ed24a4
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.