CA2178898A1 - Sequencing and Error Detection of Template Instantiations During Compilation of C++ Programs - Google Patents

Sequencing and Error Detection of Template Instantiations During Compilation of C++ Programs

Info

Publication number
CA2178898A1
CA2178898A1 CA2178898A CA2178898A CA2178898A1 CA 2178898 A1 CA2178898 A1 CA 2178898A1 CA 2178898 A CA2178898 A CA 2178898A CA 2178898 A CA2178898 A CA 2178898A CA 2178898 A1 CA2178898 A1 CA 2178898A1
Authority
CA
Canada
Prior art keywords
instantiation
full
parse
antecedent
failed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CA2178898A
Other languages
French (fr)
Other versions
CA2178898C (en
Inventor
David Joseph Streeter
Michael Karasick
John Joseph Barton
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
IBM Canada Ltd
Original Assignee
IBM Canada Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by IBM Canada Ltd filed Critical IBM Canada Ltd
Priority to CA002178898A priority Critical patent/CA2178898C/en
Priority to US08/766,375 priority patent/US5864700A/en
Publication of CA2178898A1 publication Critical patent/CA2178898A1/en
Application granted granted Critical
Publication of CA2178898C publication Critical patent/CA2178898C/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

Abstract

A priority queue is used to sequence template instantiations in compiling C+ +
programs. If the analysis of a C+ + code fragment encounters a name that requires full instantiation and no matching full instantiation exists, the parse is terminated and rescheduled, and a full instantiation is scheduled as an antecedent of the failed parse.
"Antecedent" means that the failed parse code fragment will not be reparsed until after the full instantiation has succeeded. Only when the full instantiation has succeeded will the terminated parse be reconsidered. Parsing full instantiations may causeadditional full instantiations. These are handled in the same manner; the additional instantiation is scheduled, and the current parse is failed and rescheduled. At the time of scheduling, the antecedent instantiation is marked with its dependent, so that the dependent chain give the chronology of the instantiation. This makes it easy to generate historical or "traceback" information for meaningful error messages.
CA002178898A 1996-06-12 1996-06-12 Sequencing and error detection of template instantiations during compilation of c++ programs Expired - Fee Related CA2178898C (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CA002178898A CA2178898C (en) 1996-06-12 1996-06-12 Sequencing and error detection of template instantiations during compilation of c++ programs
US08/766,375 US5864700A (en) 1996-06-12 1996-12-12 Sequencing and error detection of template instantiations during compilation of C++ Programs

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CA002178898A CA2178898C (en) 1996-06-12 1996-06-12 Sequencing and error detection of template instantiations during compilation of c++ programs

Publications (2)

Publication Number Publication Date
CA2178898A1 true CA2178898A1 (en) 1997-12-13
CA2178898C CA2178898C (en) 2000-02-01

Family

ID=4158390

Family Applications (1)

Application Number Title Priority Date Filing Date
CA002178898A Expired - Fee Related CA2178898C (en) 1996-06-12 1996-06-12 Sequencing and error detection of template instantiations during compilation of c++ programs

Country Status (2)

Country Link
US (1) US5864700A (en)
CA (1) CA2178898C (en)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1185496A (en) * 1997-09-03 1999-03-30 Fujitsu Ltd Support device for production of object-oriented program
US6782530B1 (en) * 1999-04-05 2004-08-24 Microsoft Corporation Method of ranking messages generated in a computer system
US6405368B1 (en) * 1999-04-16 2002-06-11 Brian Freyburger Method for separate compilation of templates
JP4902069B2 (en) * 2000-09-06 2012-03-21 新日鉄ソリューションズ株式会社 Program generation support apparatus, program generation method, and program
US6760905B1 (en) * 2000-09-21 2004-07-06 Curl Corporation Lazy compilation of template-generated classes in dynamic compilation execution environments
US6968541B1 (en) * 2000-10-04 2005-11-22 International Business Machines Corporation Apparatus and method for template instantiation with a cross compiler
US7275250B1 (en) 2001-05-01 2007-09-25 Microsoft Corporation Method and apparatus for correlating events
US7100167B2 (en) 2001-05-01 2006-08-29 Microsoft Corporation Method and apparatus for creating templates
US20050021756A1 (en) * 2003-07-26 2005-01-27 Grant Bruce K. Method of developing, delivering and rendering network applications
JP2005141380A (en) * 2003-11-05 2005-06-02 Matsushita Electric Ind Co Ltd Template compile method
US7831960B2 (en) * 2006-06-08 2010-11-09 Oracle America, Inc. Configuration tool with multi-level priority semantic
CA2678767A1 (en) 2009-09-30 2009-12-09 Ibm Canada Limited-Ibm Canada Limitee Optimization of meta-template instantiations
JP6481515B2 (en) 2015-05-29 2019-03-13 富士通株式会社 Information processing apparatus, compiling method, and compiler program
US10691449B2 (en) * 2017-04-27 2020-06-23 Microsoft Technology Licensing, Llc Intelligent automatic merging of source control queue items

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0390900B1 (en) * 1988-09-20 1996-08-14 Digital Equipment Corporation Generic code sharing arrangement for digital data processing system
US5179702A (en) * 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
US5303369A (en) * 1990-08-31 1994-04-12 Texas Instruments Incorporated Scheduling system for multiprocessor operating system
US5655096A (en) * 1990-10-12 1997-08-05 Branigin; Michael H. Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution
US5630128A (en) * 1991-08-09 1997-05-13 International Business Machines Corporation Controlled scheduling of program threads in a multitasking operating system
CA2061298C (en) * 1992-02-17 1996-12-03 Douglas J. Mortson Method for detecting critical failures during the building of complex computer programs from source code parts
US5710902A (en) * 1995-09-06 1998-01-20 Intel Corporation Instruction dependency chain indentifier

Also Published As

Publication number Publication date
CA2178898C (en) 2000-02-01
US5864700A (en) 1999-01-26

Similar Documents

Publication Publication Date Title
CA2178898A1 (en) Sequencing and Error Detection of Template Instantiations During Compilation of C++ Programs
CA2061298A1 (en) Method for detecting critical failures during the building of complex computer programs from source code parts
EP0908818A3 (en) Method and apparatus for performing byte-code optimization during pauses
SG75106A1 (en) System and method for generating trusted architecture specific compiled versions of architecture neutral programs
ATE266226T1 (en) DATA PROCESSING SYSTEM WITH CONDITIONAL EXECUTION OF ADVANCED COMPOUND COMMANDS
DE3587531D1 (en) AUTOMATIC CYCLE REACTION DEVICE AND AUTOMATIC ANALYZER USING THIS.
CA2377164A1 (en) Method and apparatus for enhancing scheduling in an advanced microprocessor
DE3750951D1 (en) Code generation method for computers with limited instruction set.
EP1628213A3 (en) VLIW processor
EP0199009A3 (en) Path coverage measuring system in a programme
EP1089181A3 (en) Microcomputer debug architecture and method
DE69031229D1 (en) Pipeline microprocessor with an instruction decoder that performs early decoding
WO1997001814A3 (en) Interrupt processing system
DE69805058T2 (en) METHOD AND DEVICE FOR THE SAFE EXECUTION OF A MULTIPLE FUNCTION WITH DIFFERENT PRIORITIES BY A PROCESSOR.
NO870694L (en) PROCEDURE FOR DETERMINING MICROBE CONCENTRATIONS WITH A MELTAGAR METHOD AND SCALES USED.
DE69026143T2 (en) Prediction decoding device correcting code error
DE3587517T2 (en) Parallel register transfer mechanism for reduction processor for executing programs that are stored as binary graphs and use the application language codes without variables.
ATE256868T1 (en) MEANS AND METHOD FOR DETERMINING AMMONIUM IONS
EP0790555A3 (en) Compile apparatus and method
EP1645956A3 (en) Instruction conversion apparatus for reducing the number of types of instructions
CA2194848A1 (en) Condition handling using script interpreters
DE3853751D1 (en) Program adaptation through automatic resource substitution.
GB2212909B (en) A portable optical emission analyzer.
FR2716535B1 (en) Automated analysis device, with fixed tanks.
DE29706668U1 (en) Carbon isotope analyzer

Legal Events

Date Code Title Description
EEER Examination request
MKLA Lapsed