Status: Accepted
Owner: [email protected]
Labels: Type-Bug Priority-Medium

New issue 3947 by [email protected]: Simplify and unify the handling of intrinsics in the various compilers
https://code.google.com/p/v8/issues/detail?id=3947

This is a tracking bug for the following problem:

The current trinity of intrinsic lists is highly confusing, inflexible,
and doesn't even reflect reality anymore. We already have e.g. an
intrinsic which is only supported by TurboFan, but not by full code or
Crankshaft. Plan:

Current state:
------------------------------------------------------------------------
* RUNTIME_FUNCTION_LIST:
  * IntrinsicType is Runtime::RUNTIME
  * ID is Runtime::k##name
  * Exposed in JavaScript as %#name
  * Implemented in C++ via Runtime_##name

* INLINE_FUNCTION_LIST
  * IntrinsicType is Runtime::INLINE
  * ID is Runtime::kInline##name
  * Exposed in JavaScript %_#name
  * Implemented in C++ via RuntimeReference_##name
  * Implemented in full code via FullCodeGenerator::Emit##Name
  * Implemented in Crakshaft via
    HOptimizedGraphBuilder::Generate##Name (might bailout)
  * Implemented (partially) in TurboFan via
    Typer::Visitor::TypeJSCallRuntime and JSIntrinsicLowering::Reduce

* INLINE_OPTIMIZED_FUNCTION_LIST
  * IntrinsicType is Runtime::INLINE_OPTIMIZED
  * IDs are Runtime::k##name and Runtime::kInlineOptimized##name
  * Exposed in JavaScript as %#name (runtime call) and %_#name (inlined)
  * Implemented as Runtime_##name in C++
  * HOptimizedGraphBuilder::Generate##Name (might bailout)

Target state:
------------------------------------------------------------------------
* A single list of intrinsics
* Each intrinsic is consistently exposed in JavaScript via 2 names:
  %#name (always a runtime call) and %_#name (can be inlined or just
  a runtime call, the compiler in question decides)
* IntrinsicTypes are Runtime::RUNTIME and  Runtime::INLINE, respectively
* IDs are Runtime::k##name and Runtime::kInline##name, respectively
* Implemented in C++ via Runtime_##name
* Each compiler has an explicit list of intrisics it supports, falling
  back to a simple runtime call if necessary.


--
You received this message because this project is configured to send all issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to