← Back to Patent Explorer
US5313387A Expired / Lapsed US ⏱️ 0.0 years remaining

Re-execution of edit-compile-run cycles for changed lines of source code, with storage of associated data in buffers

Assignee: Hewlett Packard Development Co LP
•
Filing: 1989-06-30
•
Granted: 1994-05-17
•
Expires: 2009-06-30
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A computer-aided software development system includes programs to implement edit, compile, link and run sequences, all from memory, at very high speed. The compiler operates on an incremental basis, line-byline, so if only one line is changed in an edit session, then only that line need be recompiled if no other code is affected. Dependency analysis is performed incrementally, without requiring the user to enter dependencies. Scanning is also done incrementally, and the resulting token list saved in memory to be used again where no changes are made. All of the linking tables are saved in memory so there is no need to generate link tables for increments of code where no changes in links are needed. The parser is able to skip lines or blocks of lines of source code which haven't been changed. All of the source code text modules, the token lists, symbol tables, code tables and related data saved from one compile to another are maintained in virtual memory rather than in files so that speed of operation is enhanced. Also, the object code created is maintained in memory rather than in a file, and executed from this memory image, to reduce delays. A virtual memory management arrangement for the system assures that all of the needed data modules and code is present in real memory by paging swapping, but with a minimum of page faults, again to enhance operating speed.

Inventors

  • 👤 William M. McKeeman
  • 👤 Shota Aki

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-27 21:22
CPC Classifications
G; G06; G06F; G06F8/00; G06F8/40; G06F8/41; G06F8/42; G06F8/425; G06F8/427; G06F8/48

Claims Analysis

Total Claims: 17
Claim 1
Independent Claim 300 words
A method of developing source code, comprising the steps of: a) editing selected lines of each of a plurality of modules of source text using an editor, said modules of source text being stored in memory in a plurality of source-text buffers, each one of the source-text buffers containing a plurality of lines of said source text; b) compiling each of said source-text buffers to produce in memory a plurality of code tables, one code table for each one of said buffers; c) linking said code tables to produce in memory a link table and storing said code tables and said link table as a code image in a buffer in memory; d) running the code from said code image in said buffer; and e) holding said source-text buffers, said code tables, and said link table, in memory, for re-using; f) re-editing other selected lines of each of said plurality of modules of source text using said editor, said re-edited modules of source text being again stored in memory in said plurality of source-text buffers; g) re-compiling each of said re-edited source-text buffers to again produce in memory a plurality of updated code tables; h) re-linking said updated code tables to again produce in memory an updated link table and storing said updated code tables and said updated link table as an updated code image in a buffer in said memory; i) again running the code from said updated code image in said buffer; wherein each line of said source-text buffers has an associated change-tag to indicate whether or not said line of source code is changed in said steps of editing and re-editing; and said steps of compiling and re-compiling only compiles lines of said source text buffers indicated to have been changed by said change-tag of each line.
Claim 2
Independent Claim 300 words
A method of developing source code, comprising the steps of: a) editing selected lines of each of a plurality of modules of source text using an editor, said modules of source text being stored in memory in a plurality of source-text buffers, each one of the source-text buffers containing a plurality of lines of said source text; b) compiling each of said source-text buffers to produce in memory a plurality of code tables, one code table for each one of said buffers; c) linking said code tables to produce in memory a link table and storing said code tables and said link table as a code image in a buffer in memory; d) running the code from said code image in said buffer; and e) holding said source-text buffers, said code tables, and said link table, in memory, for re-using; f) re-editing other selected lines of each of said plurality of modules of source text using said editor, said re-edited modules of source text being again stored in memory in said plurality of source-text buffers; g) re-compiling each of said re-edited source-text buffers to again produce in memory a plurality of updated code tables; h) re-linking said updated code tables to again produce in memory an updated link table and storing said updated code tables and said updated link table as an updated code image in a buffer in said memory; i) again running the code from said updated code image in said buffer; wherein each line of said source-text buffers has an associated change-tag to indicate whether or not said line of source code is changed in said steps of editing and re-editing; and said steps of compiling and re-compiling only compiles lines of said source text buffers indicated to have been changed by said change-tag of each line.
Claim 3
Dependent Claim 45 words
A method according to claim 1 wherein said compiling includes generating code for said code table for executable statements and creating symbol tables in memory for declarative statements in said source text, each entry in the symbol tables corresponding to one of said declarative statements.
Claim 4
Independent Claim 384 words
A method of developing source code, comprising the steps of: a) editing selected lines of each one of a plurality of modules of source text and storing edited source text in memory in a plurality of source-text buffers wherein each module of source text has a plurality of lines, each line having an associated change-tag indicating whether or not the line has been changed since a previous step of editing each said module; b) compiling said plurality of source-text buffers to produce a plurality of code tables in memory; c) linking said code tables to produce a link table and storing said code tables and said link table as a code image in a buffer in memory; d) running the code from said code image in said buffer in memory; e) re-editing other selected lines of each of said plurality of modules of source text to produce re-edited modules of source text, and again storing in memory said re-edited modules in said plurality of source-text buffers; f) re-compiling each of said re-edited source-text modules to produce in memory a plurality of updated code tables; said steps of compiling and re-compiling only compiles lines of said source text buffers indicated to have been changed by said change-tag of each line g) re-linking said updated code tables to again produce in memory an updated link table, and storing said updated code tables and said updated link table as an updated code image in a buffer in said memory; h) again running the code from said updated code image in said buffer; i) said steps of compiling re-compiling including generating said code tables for executable statements of said source text and generating in memory symbol tables for declarative statements of said source text, each entry in the symbol table corresponding to one of said declarative statements; j) said steps of linking and re-linking including generating said link table and updated link table in memory where each entry in said link table and updated link table includes an identification and location of an element needed by or supplied by said code tables, and including matching said elements needed or supplied in said link table and updated link table and generating in memory a link list and updated link list used in said steps of running and again running.
Claim 5
Independent Claim 384 words
A method of developing source code, comprising the steps of: a) editing selected lines of each one of a plurality of modules of source text and storing edited source text in memory in a plurality of source-text buffers wherein each module of source text has a plurality of lines, each line having an associated change-tag indicating whether or not the line has been changed since a previous step of editing each said module; b) compiling said plurality of source-text buffers to produce a plurality of code tables in memory; c) linking said code tables to produce a link table and storing said code tables and said link table as a code image in a buffer in memory; d) running the code from said code image in said buffer in memory; e) re-editing other selected lines of each of said plurality of modules of source text to produce re-edited modules of source text, and again storing in memory said re-edited modules in said plurality of source-text buffers; f) re-compiling each of said re-edited source-text modules to produce in memory a plurality of updated code tables; said steps of compiling and re-compiling only compiles lines of said source text buffers indicated to have been changed by said change-tag of each line g) re-linking said updated code tables to again produce in memory an updated link table, and storing said updated code tables and said updated link table as an updated code image in a buffer in said memory; h) again running the code from said updated code image in said buffer; i) said steps of compiling re-compiling including generating said code tables for executable statements of said source text and generating in memory symbol tables for declarative statements of said source text, each entry in the symbol table corresponding to one of said declarative statements; j) said steps of linking and re-linking including generating said link table and updated link table in memory where each entry in said link table and updated link table includes an identification and location of an element needed by or supplied by said code tables, and including matching said elements needed or supplied in said link table and updated link table and generating in memory a link list and updated link list used in said steps of running and again running.
Claim 6
Dependent Claim 53 words
A method according to claim 3 wherein each of said steps of compiling, linking and running is halted to return an error indication if an error is detected, without completing the sequence of said steps, but saving said source-text buffers, said code tables, said symbol table and said link table in virtual memory.
Claim 7
Dependent Claim 34 words
A method according to claim 4 wherein said source-text buffers, said code tables, said symbol table, and said link table saved in virtual memory are paged in and out of real memory upon demand.
Claim 8
Dependent Claim 40 words
A method according to claim 3 wherein said source-text buffers, said code tables, said symbol table, and said link table are each saved in contiguous pages in virtual memory and are paged in and out of real memory upon demand.
Claim 9
Independent Claim 175 words
A method of developing source code, comprising the steps of: a) editing a plurality of modules of source text, said source text for each module being held in memory in one of a plurality of separate source-text buffers as a plurality of lines; b) compiling said source-text buffers to produce in memory a plurality of code tables, one for each source-text buffer; c) linking each of said code tables to produce a link table in memory; d) running the code from said code tables and link table in memory; e) said step of compiling including, for each one of said source-text buffers, generating said code tables for executable statements in said source text and to generating symbol tables in memory for declarative statements in said source text, each entry in the symbol table corresponding to one of said declarative statements; f) said step of linking including generating said link table in memory where each entry in said link table is an identification and location of an element needed by or supplied by said code table.
Claim 10
Independent Claim 175 words
A method of developing source code, comprising the steps of: a) editing a plurality of modules of source text, said source text for each module being held in memory in one of a plurality of separate source-text buffers as a plurality of lines; b) compiling said source-text buffers to produce in memory a plurality of code tables, one for each source-text buffer; c) linking each of said code tables to produce a link table in memory; d) running the code from said code tables and link table in memory; e) said step of compiling including, for each one of said source-text buffers, generating said code tables for executable statements in said source text and to generating symbol tables in memory for declarative statements in said source text, each entry in the symbol table corresponding to one of said declarative statements; f) said step of linking including generating said link table in memory where each entry in said link table is an identification and location of an element needed by or supplied by said code table.
Claim 11
Dependent Claim 49 words
A method according to claim 7 wherein each one of said source-text buffers includes in memory an entry for each line of source code and a change-tag for said line indicating whether or not said line has been changed since the last time the compile step has been performed.
Claim 12
Dependent Claim 69 words
A method according to claim 8 including the step of detecting semantic increments in said lines of source text and storing in memory identification of each said semantic increment, and for each semantic increment checking via said change-tag in memory to see if the line or lines including said statement have been changed, and, if not, skipping said semantic increment and reusing code from said code table in memory.
Claim 13
Dependent Claim 49 words
A method according to claim 9 including the step of generating in memory for each source-text buffer a descriptor table including for each line of said source code a table entry having a locator for said line and an indication of the number of clean lines following said line.
Claim 14
Dependent Claim 35 words
A method according to claim 10 including the step of checking said descriptor table in memory to see if the number of clean lines is greater than the number of lines of said semantic increment.
Claim 15
Dependent Claim 35 words
A method according to claim 7 wherein each of said steps of compiling, linking and running is halted to return an error indication if an error is detected, without completing the sequence of said steps.
Claim 16
Dependent Claim 32 words
A method according to claim 7 wherein said source-text buffer, said code table, said symbol table and link table are all saved in memory after said steps of compiling, linking and running.
Claim 17
Dependent Claim 49 words
A method according to claim 13 wherein said source-text buffer, said code table, said symbol table and said link table for all of said modules are all saved in virtual memory after said steps of compiling, linking and running, and paged in and out of real memory upon demand.

References Cited (Backward Citations)

US4558413A Cited
US4833606A Cited
US4809170A Cited
US4951192A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1997-05-16 1997-11-15 1998-05-17 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2001-05-16 2001-11-15 2002-05-17 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2005-05-16 2005-11-15 2006-05-17 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag