__asm__ 
   To inline JavaScript code in the middle of genericjs section code, use the __asm__ keyword. Similar to a traditional architecture, the __asm__ keyword lets you to write native (JavaScript) code. This functionality can be used to interface with external JS libraries which have no Cheerp-compatible headers yet.
__asm__(code : output constraints : input constraints : clobber constraints)- __asm__is only supported in functions tagged with the- [[genericjs]]attribute.
- Code inside __asm__should never throw to the external scope, and should consist of a single JS expression or statement without the final;.
- Both the input constraints and clobber constraints parts are optional.
- Only the "r"constraint is supported. It represents a local variable in the generated JS code (equivalent to a register on traditional architecture).
- Only integral types, floating point types and pointers to object in the clientnamespace (i.e. DOM or native JavaScript objects) can be used.
Example
__asm__("alert('Alert from __asm__')");It is possible to pass arguments and get values back from inline JavaScript:
int stringLength;client::String* stringFromDom = ...;__asm__("%1.length" : "=r"(stringLength) : "r"(stringFromDom));assert(stringLength == stringFromDom->get_length());