View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0029590 | Open CASCADE | OCCT:Coding | public | 2018-03-19 10:06 | 2020-09-23 09:47 |
Reporter | Assigned To | bugmaster | |||
Priority | normal | Severity | minor | ||
Status | closed | Resolution | fixed | ||
Product Version | 7.2.0 | ||||
Target Version | 7.3.0 | Fixed in Version | 7.3.0 | ||
Summary | 0029590: Coding - avoid usage of Standard_EXPORT attribute for inline methods | ||||
Description | There are some places (around 300) where Standard_EXPORT attribute is attached to inline methods of the classes. On Windows this leads to instantiation of these methods as exported within all DLLs whose code includes corresponding header. | ||||
Steps To Reproduce | 1. Generate C++ file including all headers of OCCT (except ones dependent on VTK -- these use export for whole classes...): cd %CASROOT%/inc echo "#include <windows.h>" >..\all_includes.cpp ls -1 *.hxx | grep -i -v "ivtk" | gawk '{print "#include <" $0 ">"}' >>..\all_includes.cpp 2. Build DLL with the only source being that file, and option /FORCE to ensure creation of DLL even if some symbols remain unresolved (this allows to avoid linking with OCCT libs) 3. List all exports of this DLL (excluding constructor and destructor closure symbols generated automatically for unclear reason): rem Set path to dumpbin.exe if not yet set, on example of VS 2015 set "PATH=%PATH%;%VS140COMNTOOLS%\..\..\VC\BIN" dumpbin /exports all_includes.dll > all_exports.txt undname all_exports.txt | grep -v "structor closure" > all_exports_undecorated.txt The list should be empty | ||||
Tags | No tags attached. | ||||
Test case number | Not needed | ||||
parent of | 0031789 | closed | Open CASCADE | Coding Rules - remove redundant Standard_EXPORT from TKMesh |
2018-03-19 10:11 manager |
all_exports_undecorated.txt (121,899 bytes) |
|
Attached file all_exports_undecorated.txt contains list of all exports generated on current master (with fixes for #22651 and 0029589) using the procedure described above (except that headers of old persistence are removed -- they cause some additional problems on linking). |
|
The size of the DLL produced by the above procedure is 136 KB; on a version with about 1/3 of exports eliminated that size is 100 KB. |
|
When exports of all inline methods are eliminated, empty DLL gets reduced to 32 KB in size; it still defines 128 symbols of the kind '...structor closure' generated automatically. I have no idea now why they are generated and how to avoid this. |
|
Branch CR29590 has been created by abv. SHA-1: 44f526cf60db84a0b517d284071682ac9a871774 Detailed log of new commits: Author: abv Date: Mon Mar 19 10:07:06 2018 +0300 0029590: Coding - avoid usage of Standard_EXPORT attribute for inline methods All occurrences of Standard_EXPORT attached to inline methods in OCCT code are eliminated. Some unused classes and C++ files producing no code are deleted. |
|
Fix is pushed to CR29590, please review. Note that the effect of this change on the DLLs size is minimal; binaries produced on this branch (based on CR22651) are 61.4 KB vs 61.7 KB on master. |
|
Patch looks OK. |
|
For tests, see Jenkins job CR29590-master-abv |
|
Combination - OCCT branch : CR29590 SHA - 44f526cf60db84a0b517d284071682ac9a871774 Products branch : master SHA - 2f8f449f24696d59603ade3d9a086e77e8b9a304 was compiled on Linux, MacOS and Windows platforms and tested in optimize mode. Number of compiler warnings: No new/fixed warnings Regressions/Differences/Improvements: No regressions/differences CPU differences: Debian70-64: OCCT Total CPU difference: 18142.109999999855 / 18107.97999999989 [+0.19%] Products Total CPU difference: 7445.849999999999 / 7427.109999999995 [+0.25%] Windows-64-VC10: OCCT Total CPU difference: 18003.451405998494 / 17842.61437499857 [+0.90%] Products Total CPU difference: 8132.129328699942 / 8148.135031299978 [-0.20%] Image differences : No differences that require special attention Memory differences : No differences that require special attention |
|
Branch CR29590 has been deleted by kgv. SHA-1: 44f526cf60db84a0b517d284071682ac9a871774 |
occt: master 0f57ab75 2018-03-19 07:07:06
Committer: bugmaster Details Diff |
0029590: Coding - avoid usage of Standard_EXPORT attribute for inline methods All occurrences of Standard_EXPORT attached to inline methods in OCCT code are eliminated. Some unused classes and C++ files producing no code are deleted. |
Affected Issues 0029590 |
|
mod - src/AIS/AIS_ConnectedInteractive.hxx | Diff File | ||
mod - src/AIS/AIS_Dimension.hxx | Diff File | ||
mod - src/AIS/AIS_Manipulator.hxx | Diff File | ||
mod - src/AIS/AIS_ManipulatorOwner.hxx | Diff File | ||
mod - src/Aspect/Aspect_NeutralWindow.hxx | Diff File | ||
mod - src/Bnd/Bnd_B2f.hxx | Diff File | ||
mod - src/BOPAlgo/BOPAlgo_BuilderArea.hxx | Diff File | ||
mod - src/BOPAlgo/BOPAlgo_Builder_2.cxx | Diff File | ||
mod - src/BOPAlgo/BOPAlgo_MakerVolume.hxx | Diff File | ||
mod - src/BOPDS/BOPDS_Curve.hxx | Diff File | ||
mod - src/BOPDS/BOPDS_FaceInfo.hxx | Diff File | ||
mod - src/BOPDS/BOPDS_IndexRange.hxx | Diff File | ||
mod - src/BOPDS/BOPDS_IndexRange.lxx | Diff File | ||
mod - src/BOPDS/BOPDS_Pave.hxx | Diff File | ||
mod - src/BOPDS/BOPDS_Pave.lxx | Diff File | ||
rm - src/BOPTools/BOPTools_DataMapOfShapeSet.hxx | Diff File | ||
rm - src/BOPTools/BOPTools_EdgeSet.hxx | Diff File | ||
rm - src/BOPTools/BOPTools_EdgeSet.lxx | Diff File | ||
rm - src/BOPTools/BOPTools_ListOfEdgeSet.hxx | Diff File | ||
rm - src/BOPTools/BOPTools_ListOfShapeSet.hxx | Diff File | ||
rm - src/BOPTools/BOPTools_ShapeSet.cxx | Diff File | ||
rm - src/BOPTools/BOPTools_ShapeSet.hxx | Diff File | ||
rm - src/BOPTools/BOPTools_ShapeSet.lxx | Diff File | ||
mod - src/BOPTools/FILES | Diff File | ||
mod - src/BRepApprox/BRepApprox_TheMultiLineToolOfApprox.hxx | Diff File | ||
mod - src/BRepClass3d/BRepClass3d_SolidPassiveClassifier.hxx | Diff File | ||
mod - src/BRepExtrema/BRepExtrema_DistanceSS.hxx | Diff File | ||
mod - src/BRepExtrema/BRepExtrema_ExtCC.hxx | Diff File | ||
mod - src/BRepExtrema/BRepExtrema_ExtCF.hxx | Diff File | ||
mod - src/BRepExtrema/BRepExtrema_ExtFF.hxx | Diff File | ||
mod - src/BRepExtrema/BRepExtrema_ExtPC.hxx | Diff File | ||
mod - src/BRepExtrema/BRepExtrema_ExtPF.hxx | Diff File | ||
mod - src/BRepFeat/BRepFeat_MakeDPrism.hxx | Diff File | ||
rm - src/BRepFeat/BRepFeat_MakeDPrism.lxx | Diff File | ||
mod - src/BRepFeat/BRepFeat_SplitShape.hxx | Diff File | ||
mod - src/BRepFeat/FILES | Diff File | ||
mod - src/BRepGProp/BRepGProp_VinertGK.hxx | Diff File | ||
rm - src/BRepGProp/BRepGProp_VinertGK.lxx | Diff File | ||
mod - src/BRepGProp/FILES | Diff File | ||
mod - src/BRepMesh/BRepMesh_Classifier.hxx | Diff File | ||
mod - src/BRepMesh/BRepMesh_DiscretFactory.hxx | Diff File | ||
mod - src/ElCLib/ElCLib.hxx | Diff File | ||
mod - src/ElSLib/ElSLib.hxx | Diff File | ||
mod - src/Geom2dHatch/Geom2dHatch_Hatcher.hxx | Diff File | ||
mod - src/GeometryTest/GeometryTest_DrawableQualifiedCurve2d.hxx | Diff File | ||
mod - src/GeomFill/GeomFill_Pipe.hxx | Diff File | ||
mod - src/GeomInt/GeomInt_TheMultiLineToolOfWLApprox.hxx | Diff File | ||
mod - src/HLRAlgo/HLRAlgo_Coincidence.hxx | Diff File | ||
mod - src/HLRBRep/HLRBRep_LineTool.hxx | Diff File | ||
mod - src/HLRBRep/HLRBRep_SLPropsATool.hxx | Diff File | ||
mod - src/IGESCAFControl/IGESCAFControl_Reader.hxx | Diff File | ||
mod - src/IntPatch/IntPatch_Point.hxx | Diff File | ||
mod - src/IntPatch/IntPatch_PrmPrmIntersection.hxx | Diff File | ||
mod - src/IntPatch/IntPatch_RLine.hxx | Diff File | ||
mod - src/IntPatch/IntPatch_WLine.hxx | Diff File | ||
mod - src/LDOM/LDOM_Element.hxx | Diff File | ||
mod - src/LocOpe/FILES | Diff File | ||
mod - src/LocOpe/LocOpe_Gluer.hxx | Diff File | ||
mod - src/LocOpe/LocOpe_PntFace.hxx | Diff File | ||
rm - src/LocOpe/LocOpe_PntFace.lxx | Diff File | ||
mod - src/MAT/MAT_ListOfBisector.hxx | Diff File | ||
mod - src/MAT/MAT_ListOfEdge.hxx | Diff File | ||
mod - src/math/math_BracketMinimum.hxx | Diff File | ||
mod - src/math/math_FunctionSetRoot.hxx | Diff File | ||
mod - src/math/math_IntegerVector.hxx | Diff File | ||
mod - src/MeshVS/MeshVS_SensitiveQuad.hxx | Diff File | ||
mod - src/NCollection/NCollection_SparseArrayBase.hxx | Diff File | ||
mod - src/NCollection/NCollection_UBTree.hxx | Diff File | ||
mod - src/OpenGl/OpenGl_View.hxx | Diff File | ||
mod - src/Prs3d/Prs3d_PresentationShadow.hxx | Diff File | ||
mod - src/Select3D/Select3D_SensitiveTriangle.hxx | Diff File | ||
mod - src/SelectMgr/SelectMgr_BaseFrustum.hxx | Diff File | ||
mod - src/SelectMgr/SelectMgr_ViewerSelector.hxx | Diff File | ||
mod - src/ShapeFix/ShapeFix_Wire.hxx | Diff File | ||
mod - src/ShapePersistent/ShapePersistent.cxx | Diff File | ||
mod - src/ShapePersistent/ShapePersistent_Geom.hxx | Diff File | ||
mod - src/ShapePersistent/ShapePersistent_Geom2d.cxx | Diff File | ||
mod - src/ShapePersistent/ShapePersistent_Geom2d.hxx | Diff File | ||
mod - src/ShapePersistent/ShapePersistent_Geom_Curve.cxx | Diff File | ||
mod - src/ShapePersistent/ShapePersistent_HSequence.hxx | Diff File | ||
mod - src/ShapePersistent/ShapePersistent_TopoDS.hxx | Diff File | ||
mod - src/ShapeProcess/ShapeProcess_ShapeContext.hxx | Diff File | ||
mod - src/StdLPersistent/StdLPersistent_Data.hxx | Diff File | ||
mod - src/StdLPersistent/StdLPersistent_Document.hxx | Diff File | ||
mod - src/StdLPersistent/StdLPersistent_HString.hxx | Diff File | ||
mod - src/StdLPersistent/StdLPersistent_TreeNode.hxx | Diff File | ||
mod - src/StdLPersistent/StdLPersistent_Void.hxx | Diff File | ||
mod - src/StdObjMgt/StdObjMgt_Attribute.hxx | Diff File | ||
mod - src/StdObjMgt/StdObjMgt_Persistent.hxx | Diff File | ||
mod - src/StdObjMgt/StdObjMgt_SharedObject.hxx | Diff File | ||
mod - src/StdPersistent/StdPersistent_TopLoc.hxx | Diff File | ||
mod - src/StepDimTol/StepDimTol_GeoTolAndGeoTolWthDatRef.hxx | Diff File | ||
mod - src/StepDimTol/StepDimTol_GeoTolAndGeoTolWthDatRefAndGeoTolWthMod.hxx | Diff File | ||
mod - src/StepDimTol/StepDimTol_GeoTolAndGeoTolWthMod.hxx | Diff File | ||
mod - src/StepRepr/StepRepr_CharacterizedRepresentation.hxx | Diff File | ||
mod - src/StepVisual/StepVisual_AnnotationFillAreaOccurrence.hxx | Diff File | ||
mod - src/StepVisual/StepVisual_CameraModelD3MultiClipping.hxx | Diff File | ||
mod - src/StepVisual/StepVisual_CameraModelD3MultiClippingIntersection.hxx | Diff File | ||
mod - src/StepVisual/StepVisual_CameraModelD3MultiClippingUnion.hxx | Diff File | ||
mod - src/Storage/Storage_InternalData.hxx | Diff File | ||
mod - src/TCollection/TCollection_AsciiString.hxx | Diff File | ||
mod - src/TCollection/TCollection_ExtendedString.hxx | Diff File | ||
mod - src/TDF/TDF_Attribute.hxx | Diff File | ||
mod - src/TDF/TDF_Attribute.lxx | Diff File | ||
mod - src/TDF/TDF_Delta.hxx | Diff File | ||
mod - src/TDocStd/TDocStd_Document.hxx | Diff File | ||
mod - src/TFunction/TFunction_Logbook.hxx | Diff File | ||
mod - src/TNaming/TNaming_IteratorOnShapesSet.hxx | Diff File | ||
mod - src/TObj/TObj_Application.hxx | Diff File | ||
mod - src/TObj/TObj_LabelIterator.hxx | Diff File | ||
mod - src/TObj/TObj_Model.hxx | Diff File | ||
mod - src/TObj/TObj_Object.hxx | Diff File | ||
mod - src/TObj/TObj_TIntSparseArray.hxx | Diff File | ||
mod - src/TObj/TObj_TReference.hxx | Diff File | ||
mod - src/TopOpeBRepBuild/TopOpeBRepBuild_FuseFace.hxx | Diff File | ||
mod - src/XCAFDimTolObjects/XCAFDimTolObjects_DatumObject.hxx | Diff File | ||
mod - src/XCAFDimTolObjects/XCAFDimTolObjects_DimensionObject.hxx | Diff File | ||
mod - src/XCAFDimTolObjects/XCAFDimTolObjects_GeomToleranceObject.hxx | Diff File | ||
mod - src/XCAFView/XCAFView_Object.hxx | Diff File | ||
mod - src/XSControl/XSControl_Reader.hxx | Diff File | ||
mod - src/XSControl/XSControl_TransferWriter.hxx | Diff File |
Date Modified | Username | Field | Change |
---|---|---|---|
2018-03-19 10:06 |
|
New Issue | |
2018-03-19 10:06 |
|
Assigned To | => kgv |
2018-03-19 10:11 |
|
File Added: all_exports_undecorated.txt | |
2018-03-19 10:13 |
|
Note Added: 0074621 | |
2018-03-19 10:14 |
|
Note Added: 0074622 | |
2018-03-19 18:16 |
|
Steps to Reproduce Updated | |
2018-03-19 18:32 |
|
Steps to Reproduce Updated | |
2018-03-19 18:34 |
|
Note Added: 0074667 | |
2018-03-19 19:40 | git | Note Added: 0074677 | |
2018-03-19 19:45 |
|
Note Added: 0074678 | |
2018-03-19 19:45 |
|
Status | new => resolved |
2018-03-19 19:45 |
|
Target Version | 7.4.0 => 7.3.0 |
2018-03-19 19:49 | kgv | Assigned To | kgv => bugmaster |
2018-03-19 19:49 | kgv | Status | resolved => reviewed |
2018-03-19 19:49 | kgv | Product Version | => 7.2.0 |
2018-03-19 19:49 | kgv | Note Added: 0074679 | |
2018-03-19 22:06 |
|
Note Added: 0074685 | |
2018-03-20 12:16 | bugmaster | Note Added: 0074695 | |
2018-03-20 12:16 | bugmaster | Status | reviewed => tested |
2018-03-20 12:16 | bugmaster | Test case number | => Not needed |
2018-03-24 11:51 | bugmaster | Changeset attached | => occt master 0f57ab75 |
2018-03-24 11:51 | bugmaster | Status | tested => verified |
2018-03-24 11:51 | bugmaster | Resolution | open => fixed |
2018-03-24 20:01 | git | Note Added: 0074875 | |
2018-06-29 21:14 |
|
Fixed in Version | => 7.3.0 |
2018-06-29 21:19 |
|
Status | verified => closed |
2020-09-23 09:47 | kgv | Relationship added | parent of 0031789 |