Thanks for using Compiler Explorer
Sponsors
Jakt
C++
Ada
Analysis
Android Java
Android Kotlin
Assembly
C
C3
Carbon
C++ (Circle)
CIRCT
Clean
CMake
CMakeScript
COBOL
C++ for OpenCL
MLIR
Cppx
Cppx-Blue
Cppx-Gold
Cpp2-cppfront
Crystal
C#
CUDA C++
D
Dart
Elixir
Erlang
Fortran
F#
Go
Haskell
HLSL
Hook
Hylo
ispc
Java
Julia
Kotlin
LLVM IR
LLVM MIR
Modula-2
Nim
Objective-C
Objective-C++
OCaml
OpenCL C
Pascal
Pony
Python
Racket
Ruby
Rust
Snowball
Scala
Solidity
Spice
Swift
LLVM TableGen
Toit
TypeScript Native
V
Vala
Visual Basic
WASM
Zig
Javascript
GIMPLE
javascript source #1
Output
Compile to binary object
Link to binary
Execute the code
Intel asm syntax
Demangle identifiers
Verbose demangling
Filters
Unused labels
Library functions
Directives
Comments
Horizontal whitespace
Debug intrinsics
Compiler
v8 (trunk)
v8 11.3
Options
Source code
'use strict'; function Unit() { } var Unit_instance; function Unit_getInstance() { return Unit_instance; } function implement(interfaces) { var maxSize = 1; var masks = []; var inductionVariable = 0; var last = interfaces.length; while (inductionVariable < last) { var i = interfaces[inductionVariable]; inductionVariable = inductionVariable + 1 | 0; var currentSize = maxSize; var tmp1_elvis_lhs = i.prototype.$imask$; var imask = tmp1_elvis_lhs == null ? i.$imask$ : tmp1_elvis_lhs; if (!(imask == null)) { masks.push(imask); currentSize = imask.length; } var iid = i.$metadata$.iid; var tmp; if (iid == null) { tmp = null; } else { // Inline function 'kotlin.let' call // Inline function 'kotlin.contracts.contract' call // Inline function 'kotlin.js.implement.<anonymous>' call tmp = bitMaskWith(iid); } var iidImask = tmp; if (!(iidImask == null)) { masks.push(iidImask); currentSize = Math.max(currentSize, iidImask.length); } if (currentSize > maxSize) { maxSize = currentSize; } } return compositeBitMask(maxSize, masks); } function bitMaskWith(activeBit) { var numberIndex = activeBit >> 5; var intArray = new Int32Array(numberIndex + 1 | 0); var positionInNumber = activeBit & 31; var numberWithSettledBit = 1 << positionInNumber; intArray[numberIndex] = intArray[numberIndex] | numberWithSettledBit; return intArray; } function compositeBitMask(capacity, masks) { var tmp = 0; var tmp_0 = new Int32Array(capacity); while (tmp < capacity) { var tmp_1 = tmp; var result = 0; var inductionVariable = 0; var last = masks.length; while (inductionVariable < last) { var mask = masks[inductionVariable]; inductionVariable = inductionVariable + 1 | 0; if (tmp_1 < mask.length) { result = result | mask[tmp_1]; } } tmp_0[tmp_1] = result; tmp = tmp + 1 | 0; } return tmp_0; } function objectCreate(proto) { proto = proto === VOID ? null : proto; return Object.create(proto); } function defineProp(obj, name, getter, setter) { return Object.defineProperty(obj, name, {configurable: true, get: getter, set: setter}); } function equals(obj1, obj2) { if (obj1 == null) { return obj2 == null; } if (obj2 == null) { return false; } if (typeof obj1 === 'object' && typeof obj1.equals === 'function') { return obj1.equals(obj2); } if (obj1 !== obj1) { return obj2 !== obj2; } if (typeof obj1 === 'number' && typeof obj2 === 'number') { var tmp; if (obj1 === obj2) { var tmp_0; if (obj1 !== 0) { tmp_0 = true; } else { // Inline function 'kotlin.js.asDynamic' call var tmp_1 = 1 / obj1; // Inline function 'kotlin.js.asDynamic' call tmp_0 = tmp_1 === 1 / obj2; } tmp = tmp_0; } else { tmp = false; } return tmp; } return obj1 === obj2; } function protoOf(constructor) { return constructor.prototype; } function createMetadata(kind, name, defaultConstructor, associatedObjectKey, associatedObjects, suspendArity) { var undef = VOID; var iid = kind === 'interface' ? generateInterfaceId() : VOID; return {kind: kind, simpleName: name, associatedObjectKey: associatedObjectKey, associatedObjects: associatedObjects, suspendArity: suspendArity, $kClass$: undef, defaultConstructor: defaultConstructor, iid: iid}; } function generateInterfaceId() { if (globalInterfaceId === VOID) { globalInterfaceId = 0; } // Inline function 'kotlin.js.unsafeCast' call globalInterfaceId = globalInterfaceId + 1 | 0; // Inline function 'kotlin.js.unsafeCast' call return globalInterfaceId; } var globalInterfaceId; function initMetadataFor(kind, ctor, name, defaultConstructor, parent, interfaces, suspendArity, associatedObjectKey, associatedObjects) { if (!(parent == null)) { ctor.prototype = Object.create(parent.prototype); ctor.prototype.constructor = ctor; } var metadata = createMetadata(kind, name, defaultConstructor, associatedObjectKey, associatedObjects, suspendArity); ctor.$metadata$ = metadata; if (!(interfaces == null)) { var receiver = !equals(metadata.iid, VOID) ? ctor : ctor.prototype; receiver.$imask$ = implement(interfaces); } } function initMetadataForClass(ctor, name, defaultConstructor, parent, interfaces, suspendArity, associatedObjectKey, associatedObjects) { var kind = 'class'; initMetadataFor(kind, ctor, name, defaultConstructor, parent, interfaces, suspendArity, associatedObjectKey, associatedObjects); } function initMetadataForObject(ctor, name, defaultConstructor, parent, interfaces, suspendArity, associatedObjectKey, associatedObjects) { var kind = 'object'; initMetadataFor(kind, ctor, name, defaultConstructor, parent, interfaces, suspendArity, associatedObjectKey, associatedObjects); } function initMetadataForLambda(ctor, parent, interfaces, suspendArity) { initMetadataForClass(ctor, 'Lambda', VOID, parent, interfaces, suspendArity, VOID, VOID); } function initMetadataForCoroutine(ctor, parent, interfaces, suspendArity) { initMetadataForClass(ctor, 'Coroutine', VOID, parent, interfaces, suspendArity, VOID, VOID); } function initMetadataForFunctionReference(ctor, parent, interfaces, suspendArity) { initMetadataForClass(ctor, 'FunctionReference', VOID, parent, interfaces, suspendArity, VOID, VOID); } function initMetadataForCompanion(ctor, parent, interfaces, suspendArity) { initMetadataForObject(ctor, 'Companion', VOID, parent, interfaces, suspendArity, VOID, VOID); } function get_VOID() { _init_properties_void_kt__3zg9as(); return VOID; } var VOID; var properties_initialized_void_kt_e4ret2; function _init_properties_void_kt__3zg9as() { if (!properties_initialized_void_kt_e4ret2) { properties_initialized_void_kt_e4ret2 = true; VOID = void 0; } } function _UInt___init__impl__l7qpdl(data) { return data; } function _UInt___get_data__impl__f0vqqw($this) { return $this; } function stuff() { // Inline function 'kotlin.apply' call var this_0 = new Buffer(); // Inline function 'kotlin.contracts.contract' call // Inline function 'stuff.<anonymous>' call this_0.writeString_npol3u_k$('sup'); var buffer = this_0; // Inline function 'kotlin.UInt.toInt' call var this_1 = buffer.size_1; return _UInt___get_data__impl__f0vqqw(this_1); } function Buffer() { this.size_1 = _UInt___init__impl__l7qpdl(0); } protoOf(Buffer).writeString_npol3u_k$ = function (string) { var tmp = this; // Inline function 'kotlin.UInt.plus' call var this_0 = this.size_1; // Inline function 'kotlin.toUInt' call var this_1 = string.length; var other = _UInt___init__impl__l7qpdl(this_1); tmp.size_1 = _UInt___init__impl__l7qpdl(_UInt___get_data__impl__f0vqqw(this_0) + _UInt___get_data__impl__f0vqqw(other) | 0); }; //region block: init Unit_instance = new Unit(); //endregion %PrepareFunctionForOptimization(protoOf(Buffer).writeString_npol3u_k$); for (let i = 0; i < 3; i++) stuff(); %OptimizeFunctionOnNextCall(protoOf(Buffer).writeString_npol3u_k$); stuff();
Become a Patron
Sponsor on GitHub
Donate via PayPal
Source on GitHub
Mailing list
Installed libraries
Wiki
Report an issue
How it works
Contact the author
CE on Mastodon
About the author
Statistics
Changelog
Version tree