Bug 27294 - Performance - getTypeSignature should not rescan element names
Summary: Performance - getTypeSignature should not rescan element names
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 2.1   Edit
Hardware: PC Windows 2000
: P3 critical (vote)
Target Milestone: 2.1 M4   Edit
Assignee: Jerome Lanneluc CLA
QA Contact:
URL:
Whiteboard:
Keywords: performance
: 27330 (view as bug list)
Depends on:
Blocks:
 
Reported: 2002-11-28 06:00 EST by Philipe Mulet CLA
Modified: 2002-12-18 09:41 EST (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Philipe Mulet CLA 2002-11-28 06:00:25 EST
Build 2.1-M3

Accessing the signature of a field member uses a public Signature entry point, 
and thus ends up rescanning the signature to check it is valid.
However, since it came through an info, it is guaranteed to be already correct.

Trusted clients should benefit from priviledged signature computation.

==================
        at org.eclipse.jdt.internal.compiler.parser.Scanner.<init>
(Scanner.java:134)
        at org.eclipse.jdt.internal.compiler.parser.Scanner.<init>
(Scanner.java:169)
        at org.eclipse.jdt.core.Signature.createCharArrayTypeSignature
(Signature.java:438)
        at org.eclipse.jdt.core.Signature.createTypeSignature
(Signature.java:417)
        at org.eclipse.jdt.internal.core.SourceFieldElementInfo.getTypeSignature
(SourceFieldElementInfo.java:51)
        at org.eclipse.jdt.internal.core.SourceField.getTypeSignature
(SourceField.java:55)
        at 
org.eclipse.jdt.internal.ui.viewsupport.JavaElementLabels.getFieldLabel
(JavaElementLabels.java:426)
        at 
org.eclipse.jdt.internal.ui.viewsupport.JavaElementLabels.getElementLabel
(JavaElementLabels.java:295)
        at 
org.eclipse.jdt.internal.ui.viewsupport.JavaElementLabels.getElementLabel
(JavaElementLabels.java:272)
        at 
org.eclipse.jdt.internal.ui.viewsupport.JavaElementLabels.getTextLabel
(JavaElementLabels.java:257)
        at org.eclipse.jdt.internal.ui.viewsupport.JavaUILabelProvider.getText
(JavaUILabelProvider.java:118)
        at org.eclipse.jface.viewers.DecoratingLabelProvider.getText
(DecoratingLabelProvider.java:100)
        at org.eclipse.jface.viewers.TreeViewer.doUpdateItem(TreeViewer.java:82)
        at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem
(AbstractTreeViewer.java:353)
        at org.eclipse.jface.viewers.StructuredViewer.updateItem
(StructuredViewer.java:1132)
        at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh
(AbstractTreeViewer.java:833)
        at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh
(AbstractTreeViewer.java:847)
        at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh
(AbstractTreeViewer.java:847)
        at org.eclipse.jface.viewers.AbstractTreeViewer.labelProviderChanged
(AbstractTreeViewer.java:935)
        at org.eclipse.jface.viewers.ContentViewer.handleLabelProviderChanged
(ContentViewer.java:155)
        at org.eclipse.jface.viewers.StructuredViewer.handleLabelProviderChanged
(StructuredViewer.java:524)
        at 
org.eclipse.jdt.internal.ui.javaeditor.JavaOutlinePage$JavaOutlineViewer.handleL
abelProviderChanged(JavaOutlinePage.java:635)
        at org.eclipse.jface.viewers.ContentViewer$1.labelProviderChanged
(ContentViewer.java:68)
        at org.eclipse.ui.internal.DecoratorManager.fireListeners
(DecoratorManager.java:141)
        at org.eclipse.ui.internal.DecoratorManager.labelProviderChanged
(DecoratorManager.java:431)
        at org.eclipse.jface.viewers.LabelProvider.fireLabelProviderChanged
(LabelProvider.java:54)
        at org.eclipse.team.internal.ccvs.ui.CVSDecorator.access$2
(CVSDecorator.java:1)
        at org.eclipse.team.internal.ccvs.ui.CVSDecorator$3.run
(CVSDecorator.java:406)
        at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:31)
        at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages
(Synchronizer.java:94)
        - locked <07BD91D8> (a org.eclipse.swt.widgets.RunnableLock)
        at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:1669)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1414)
        at org.eclipse.ui.internal.dialogs.EventLoopProgressMonitor.runEventLoop
(EventLoopProgressMonitor.java:88)
        at org.eclipse.ui.internal.dialogs.EventLoopProgressMonitor.subTask
(EventLoopProgressMonitor.java:118)
        at org.eclipse.core.runtime.ProgressMonitorWrapper.subTask
(ProgressMonitorWrapper.java:120)
        at org.eclipse.core.runtime.SubProgressMonitor.subTask
(SubProgressMonitor.java:161)
        at org.eclipse.core.internal.resources.Workspace.endOperation
(Workspace.java:890)
        at org.eclipse.core.internal.resources.Workspace.run
(Workspace.java:1585)
        at org.eclipse.ui.actions.WorkspaceModifyOperation.run
(WorkspaceModifyOperation.java:79)
        - locked <0760E278> (a org.eclipse.ui.texteditor.AbstractTextEditor$10)
        at org.eclipse.ui.texteditor.AbstractTextEditor.performSaveOperation
(AbstractTextEditor.java:2596)
        at 
org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.performSaveOperatio
n(CompilationUnitEditor.java:799)
        at org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor.doSave
(CompilationUnitEditor.java:849)
        - locked <052D8F08> (a org.eclipse.jdt.internal.core.WorkingCopy)
        at org.eclipse.ui.internal.EditorManager$11.run(EditorManager.java:1015)
        at org.eclipse.ui.internal.EditorManager$8.run(EditorManager.java:884)
        at org.eclipse.jface.operation.ModalContext.runInCurrentThread
(ModalContext.java:296)
        at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:246)
        at org.eclipse.jface.window.ApplicationWindow$1.run
(ApplicationWindow.java:391)
        at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:65)
        at org.eclipse.jface.window.ApplicationWindow.run
(ApplicationWindow.java:388)
        at org.eclipse.ui.internal.WorkbenchWindow.run
(WorkbenchWindow.java:1146)
        at org.eclipse.ui.internal.EditorManager.runProgressMonitorOperation
(EditorManager.java:890)
        at org.eclipse.ui.internal.EditorManager.saveEditor
(EditorManager.java:1020)
        at org.eclipse.ui.internal.WorkbenchPage.saveEditor
(WorkbenchPage.java:2050)
        at org.eclipse.ui.internal.SaveAction.run(SaveAction.java:30)
        at org.eclipse.jface.action.Action.runWithEvent(Action.java:769)
        at org.eclipse.ui.internal.WWinKeyBindingService.invoke
(WWinKeyBindingService.java:138)
        at org.eclipse.ui.internal.WWinKeyBindingService.pressed
(WWinKeyBindingService.java:119)
        at org.eclipse.ui.internal.WWinKeyBindingService$5.widgetSelected
(WWinKeyBindingService.java:366)
        at org.eclipse.ui.internal.AcceleratorMenu$2.handleEvent
(AcceleratorMenu.java:55)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:77)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:825)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:1692)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1410)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1435)
        at org.eclipse.ui.internal.Workbench.run(Workbench.java:1418)
        at org.eclipse.core.internal.boot.InternalBootLoader.run
(InternalBootLoader.java:831)
        at org.eclipse.core.boot.BootLoader.run(BootLoader.java:462)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at org.eclipse.core.launcher.Main.basicRun(Main.java:247)
        at org.eclipse.core.launcher.Main.run(Main.java:703)
        at org.eclipse.core.launcher.Main.main(Main.java:539)
Comment 1 Philipe Mulet CLA 2002-11-29 08:59:45 EST
*** Bug 27330 has been marked as a duplicate of this bug. ***
Comment 2 Adam Kiezun CLA 2002-12-03 08:57:18 EST
this would be a nice improvement
calls to Scanner() (via getTypeSignature) account for 23% of time needed to 
open a java editor
Comment 3 Jerome Lanneluc CLA 2002-12-04 12:04:25 EST
Changed implementation to not use Scanner at all and to not create unneeded 
objects.
Comment 4 David Audel CLA 2002-12-18 09:41:44 EST
Verified.