blob: eb5bf6bcc01d50cc46e572172cf4ff6a1fb2e660 [file] [log] [blame]
<head>
<link rel="import" href="class_ref.html">
<link rel="import" href="code_ref.html">
<link rel="import" href="function_ref.html">
<link rel="import" href="library_ref.html">
<link rel="import" href="observatory_element.html">
<link rel="import" href="nav_bar.html">
<link rel="import" href="script_inset.html">
<link rel="import" href="script_ref.html">
</head>
<polymer-element name="function-view" extends="observatory-element">
<template>
<link rel="stylesheet" href="css/shared.css">
<nav-bar>
<top-nav-menu></top-nav-menu>
<isolate-nav-menu isolate="{{ function.isolate }}"></isolate-nav-menu>
<template if="{{ function['owner'].serviceType == 'Class' }}">
<!-- TODO(turnidge): Add library nav menu here. -->
<class-nav-menu cls="{{ function['owner'] }}"></class-nav-menu>
</template>
<template if="{{ function['owner'].serviceType == 'Library' }}">
<library-nav-menu library="{{ function['owner'] }}"></library-nav-menu>
</template>
<nav-menu link="{{ function.hashLink }}" anchor="{{ function.name }}" last="{{ true }}"></nav-menu>
<nav-refresh callback="{{ refresh }}"></nav-refresh>
</nav-bar>
<div class="content">
<h1>function {{ qualifiedName }}</h1>
<div class="memberList">
<div class="memberItem">
<div class="memberName">kind</div>
<div class="memberValue">
<template if="{{ function['is_static'] }}">static</template>
<template if="{{ function['is_const'] }}">const</template>
{{ kind }}
</div>
</div>
<template if="{{ function['parent'] != null }}">
<div class="memberItem">
<div class="memberName">parent function</div>
<div class="memberValue">
<function-ref ref="{{ function['parent'] }}"></function-ref>
</div>
</div>
</template>
<div class="memberItem">
<div class="memberName">owner</div>
<div class="memberValue">
<template if="{{ function['owner'].serviceType == 'Class' }}">
<class-ref ref="{{ function['owner'] }}"></class-ref>
</template>
<template if="{{ function['owner'].serviceType != 'Class' }}">
<library-ref ref="{{ function['owner'] }}"></library-ref>
</template>
</div>
</div>
<div class="memberItem">
<div class="memberName">script</div>
<div class="memberValue">
<script-ref ref="{{ function['script'] }}"
pos="{{ function['tokenPos'] }}">
</script-ref>
</div>
</div>
<div class="memberItem">&nbsp;</div>
<template if="{{ function['code'] != null }}">
<div class="memberItem">
<div class="memberName">optimized code</div>
<div class="memberValue">
<code-ref ref="{{ function['code'] }}"></code-ref>
</div>
</div>
</template>
<template if="{{ function['unoptimized_code'] != null }}">
<div class="memberItem">
<div class="memberName">unoptimized code</div>
<div class="memberValue">
<code-ref ref="{{ function['unoptimized_code'] }}"></code-ref>
</div>
<div class="memberValue">
<span title="This count is used to determine when a function will be optimized. It is a combination of call counts and other factors.">
(usage count: {{ function['usage_counter'] }})
</span>
</div>
</div>
</template>
<div class="memberItem">
<div class="memberName">deoptimizations</div>
<div class="memberValue">{{ function['deoptimizations'] }}</div>
</div>
<div class="memberItem">
<div class="memberName">optimizable</div>
<div class="memberValue">{{ function['is_optimizable'] }}</div>
</div>
<div class="memberItem">
<div class="memberName">inlinable</div>
<div class="memberValue">{{ function['is_inlinable'] }}</div>
</div>
<template if="{{ function.name != function.vmName }}">
<div class="memberItem">
<div class="memberName">vm name</div>
<div class="memberValue">{{ function.vmName }}</div>
</div>
</template>
</div>
</div>
<hr>
<script-inset script="{{ function['script'] }}" pos="{{ function['tokenPos'] }}" endPos="{{ function['endTokenPos'] }}">
</script-inset>
<br>
</template>
<script type="application/dart" src="function_view.dart"></script>
</polymer-element>