system_prims.hpp

Go to the documentation of this file.
00001 /* Copyright 1994, 1995 LongView Technologies L.L.C. $Revision: 1.42 $ */
00002 /* Copyright (c) 2006, Sun Microsystems, Inc.
00003 All rights reserved.
00004 
00005 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the 
00006 following conditions are met:
00007 
00008     * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
00009     * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following 
00010           disclaimer in the documentation and/or other materials provided with the distribution.
00011     * Neither the name of Sun Microsystems nor the names of its contributors may be used to endorse or promote products derived 
00012           from this software without specific prior written permission.
00013 
00014 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT 
00015 NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 
00016 THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
00017 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
00018 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 
00019 OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
00020 
00021 
00022 */
00023 
00024 
00025 // Misc. system primitives
00026 
00027 class systemPrimitives : AllStatic {
00028  private: 
00029   static void inc_calls() { number_of_calls++; }
00030  public:
00031   static int number_of_calls;
00032 
00033   // REFLECTIVE OPERATIONS
00034   
00035   //%prim
00036   // <NoReceiver> primitiveCreateInvocationOf: mixin      <Mixin>
00037   //                                    named: name       <Symbol>
00038   //                      isPrimaryInvocation: primary    <Boolean>
00039   //                               superclass: superclass <Behavior>
00040   //                                   format: format     <Symbol>
00041   //                                   ifFail: failBlock  <PrimFailBlock> ^<GlobalAssociation> =
00042   //   Internal { doc   = 'format: #Oops, #ExternalProxy #Process'
00043   //              doc   = '        #IndexedInstanceVariables #IndexedByteInstanceVariables'
00044   //              doc   = '        #IndexedDoubleByteInstanceVariables #IndexedNextOfKinInstanceVariables'
00045   //              error = #(WrongFormat) 
00046   //              name  = 'systemPrimitives::createNamedInvocation' }
00047   //%
00048   static PRIM_DECL_5(createNamedInvocation, oop mixin, oop name, oop primary, oop superclass, oop format);
00049 
00050   //%prim
00051   // <NoReceiver> primitiveCreateInvocationOf: mixin      <Mixin>
00052   //                               superclass: superclass <Behavior>
00053   //                                   format: format     <Symbol>
00054   //                                   ifFail: failBlock  <PrimFailBlock> ^<GlobalAssociation> =
00055   //   Internal { doc   = 'format: #Oops, #ExternalProxy #Process'
00056   //              doc   = '        #IndexedInstanceVariables #IndexedByteInstanceVariables'
00057   //              doc   = '        #IndexedDoubleByteInstanceVariables #IndexedNextOfKinInstanceVariables'
00058   //              error = #(WrongFormat) 
00059   //              name  = 'systemPrimitives::createInvocation' }
00060   //%
00061   static PRIM_DECL_3(createInvocation, oop mixin, oop superclass, oop format);
00062 
00063   //%prim
00064   // <NoReceiver> primitiveApplyChange: change        <IndexedInstanceVariables>
00065   //                            ifFail: failBlock     <PrimFailBlock> ^<Object> =
00066   //   Internal { doc  = 'Apply change to a mixin and their invocations.'
00067   //              doc  = 'The change is a <IndexedInstanceVariables> with the following structure:'
00068   //              doc  = '  [1]     = new-mixin   <Mixin>'
00069   //              doc  = '  [2]     = old-mixin   <Mixin>'
00070   //              doc  = '  [3 - n] = invocations <IndexedInstanceVariables>'
00071   //              doc  = 'Where the format for the a incovation is:'
00072   //              doc  = '  [1]     = incovation  <Class>'
00073   //              doc  = '  [2]     = format      <Symbol>'
00074   //              doc  = '  [3]     = superClass  <Class>'
00075   //              doc  = '  [4 - m] = {subclass, format}*  <IndexedInstanceVariables>, <Symbol>'
00076   //              doc  = 'The list of classes are sub classes of the invocation (topological sorted).'
00077   //              name = 'systemPrimitives::applyChange' }
00078   //%
00079   static PRIM_DECL_1(applyChange, oop change);
00080 
00081   //%prim
00082   // <Object> primitiveScavenge ^<Self> =
00083   //   Internal { name  = 'systemPrimitives::scavenge' }
00084   //%
00085   static PRIM_DECL_1(scavenge, oop receiver);
00086 
00087   //%prim
00088   // <Object> primitiveGarbageCollect ^<Self> =
00089   //   Internal { name  = 'systemPrimitives::garbageGollect' }
00090   //%
00091   static PRIM_DECL_1(garbageGollect, oop receiver);
00092 
00093   //%prim
00094   // <NoReceiver> primitiveBreakpoint ^<Object> =
00095   //   Internal { name  = 'systemPrimitives::breakpoint' }
00096   //%
00097   static PRIM_DECL_0(breakpoint);
00098 
00099   //%prim
00100   // <NoReceiver> primitiveHalt ^<Object> =
00101   //   Internal { name  = 'systemPrimitives::halt' }
00102   //%
00103   static PRIM_DECL_0(halt);
00104 
00105   //%prim
00106   // <NoReceiver> primitiveUserTime ^<Float> =
00107   //   Internal { name  = 'systemPrimitives::userTime' }
00108   //%
00109   static PRIM_DECL_0(userTime);
00110 
00111   //%prim
00112   // <NoReceiver> primitiveSystemTime ^<Float> =
00113   //   Internal { name  = 'systemPrimitives::systemTime' }
00114   //%
00115   static PRIM_DECL_0(systemTime);
00116 
00117   //%prim
00118   // <NoReceiver> primitiveElapsedTime ^<Float> = 
00119   //   Internal { name = 'systemPrimitives::elapsedTime' }
00120   //%
00121   static PRIM_DECL_0(elapsedTime);
00122   
00123   //%prim
00124   // <NoReceiver> primitiveWriteSnapshot: fileName <String> ^<Object> =
00125   //   Internal { name  = 'systemPrimitives::writeSnapshot' }
00126   //%
00127   static PRIM_DECL_1(writeSnapshot, oop fileName);
00128 
00129   //%prim
00130   // <NoReceiver> primitiveQuit ^<BottomType> =
00131   //   Internal { name  = 'systemPrimitives::quit' }
00132   //%
00133   static PRIM_DECL_0(quit);
00134 
00135   // GLOBAL ASSOCIATION
00136 
00137   //%prim
00138   // <GlobalAssociation> primitiveGlobalAssociationKey ^<Symbol> =
00139   //   Internal { name  = 'systemPrimitives::globalAssociationKey' }
00140   //%
00141   static PRIM_DECL_1(globalAssociationKey, oop receiver);
00142 
00143   //%prim
00144   // <GlobalAssociation> primitiveGlobalAssociationSetKey: key <Symbol> ^<Object> =
00145   //   Internal { name  = 'systemPrimitives::globalAssociationSetKey' }
00146   //%
00147   static PRIM_DECL_2(globalAssociationSetKey, oop receiver, oop key);
00148 
00149   //%prim
00150   // <GlobalAssociation> primitiveGlobalAssociationValue ^<Object> =
00151   //   Internal { name  = 'systemPrimitives::globalAssociationValue' }
00152   //%
00153   static PRIM_DECL_1(globalAssociationValue, oop receiver);
00154 
00155   //%prim
00156   // <GlobalAssociation> primitiveGlobalAssociationSetValue: value <Object> ^<Object> =
00157   //   Internal { name  = 'systemPrimitives::globalAssociationSetValue' }
00158   //%
00159   static PRIM_DECL_2(globalAssociationSetValue, oop receiver, oop value);
00160 
00161   //%prim
00162   // <GlobalAssociation> primitiveGlobalAssociationIsConstant ^<Boolean> =
00163   //   Internal { name  = 'systemPrimitives::globalAssociationIsConstant' }
00164   //%
00165   static PRIM_DECL_1(globalAssociationIsConstant, oop receiver);
00166 
00167   //%prim
00168   // <GlobalAssociation> primitiveGlobalAssociationSetConstant: value <Boolean> ^<Boolean> =
00169   //   Internal { name  = 'systemPrimitives::globalAssociationSetConstant' }
00170   //%
00171   static PRIM_DECL_2(globalAssociationSetConstant, oop receiver, oop value);
00172 
00173   // THE SMALLTALK ARRAY
00174 
00175   //%prim
00176   // <NoReceiver> primitiveSmalltalkAt: index <SmallInteger>
00177   //                            ifFail: failBlock <PrimFailBlock>  ^<GlobalAssociation> =
00178   //   Internal { doc   = 'Returns the global association at index'
00179   //              error = #(OutOfBounds)
00180   //              name  = 'systemPrimitives::smalltalk_at' }
00181   //%
00182   static PRIM_DECL_1(smalltalk_at, oop index);
00183 
00184   //%prim
00185   // <NoReceiver> primitiveSmalltalkAt: key       <Symbol>
00186   //                               Put: value     <Object>
00187   //                            ifFail: failBlock <PrimFailBlock>  ^<GlobalAssociation> =
00188   //   Internal { doc   = 'Add a new non-constant global association'
00189   //              name  = 'systemPrimitives::smalltalk_at_put' }
00190   //%
00191   static PRIM_DECL_2(smalltalk_at_put, oop key, oop value);
00192 
00193   //%prim
00194   // <NoReceiver> primitiveSmalltalkRemoveAt: index <SmallInteger>
00195   //                                  ifFail: failBlock <PrimFailBlock>  ^<GlobalAssociation> =
00196   //   Internal { doc   = 'Removes the association at index, and returns the removed element'
00197   //              name  = 'systemPrimitives::smalltalk_remove_at' }
00198   //%
00199   static PRIM_DECL_1(smalltalk_remove_at, oop index);
00200 
00201   //%prim
00202   // <NoReceiver> primitiveSmalltalkSize ^<SmallInteger> =
00203   //   Internal { name  = 'systemPrimitives::smalltalk_size' }
00204   //%
00205   static PRIM_DECL_0(smalltalk_size);
00206   
00207   //%prim
00208   // <NoReceiver> primitiveSmalltalkArray ^<IndexedInstanceVariables> =
00209   //   Internal { name  = 'systemPrimitives::smalltalk_array' }
00210   //%
00211   static PRIM_DECL_0(smalltalk_array);
00212 
00213   //%prim
00214   // <NoReceiver> primitivePrintPrimitiveTable ^<Object> =
00215   //   Internal { name  = 'systemPrimitives::printPrimitiveTable' }
00216   //%
00217   static PRIM_DECL_0(printPrimitiveTable);
00218 
00219   //%prim
00220   // <NoReceiver> primitivePrintMemory ^<Object> =
00221   //   Internal { name  = 'systemPrimitives::print_memory' }
00222   //%
00223   static PRIM_DECL_0(print_memory);
00224 
00225   //%prim
00226   // <NoReceiver> primitivePrintZone ^<Object> =
00227   //   Internal { name  = 'systemPrimitives::print_zone' }
00228   //%
00229   static PRIM_DECL_0(print_zone);
00230 
00231   // Windows specific primitives
00232 
00233   //%prim
00234   // <NoReceiver> primitiveDefWindowProc: resultProxy <Proxy>
00235   //                              ifFail: failBlock <PrimFailBlock>  ^<Proxy> =
00236   //   Internal { name  = 'systemPrimitives::defWindowProc' }
00237   //%
00238   static PRIM_DECL_1(defWindowProc, oop resultProxy);
00239 
00240 
00241   //%prim
00242   // <NoReceiver> primitiveWindowsHInstance: resultProxy <Proxy>
00243   //                                 ifFail: failBlock <PrimFailBlock>  ^<Proxy> =
00244   //   Internal { name  = 'systemPrimitives::windowsHInstance' }
00245   //%
00246   static PRIM_DECL_1(windowsHInstance, oop resultProxy);
00247 
00248   //%prim
00249   // <NoReceiver> primitiveWindowsHPrevInstance: resultProxy <Proxy>
00250   //                                     ifFail: failBlock <PrimFailBlock>  ^<Proxy> =
00251   //   Internal { name  = 'systemPrimitives::windowsHPrevInstance' }
00252   //%
00253   static PRIM_DECL_1(windowsHPrevInstance, oop resultProxy);
00254 
00255   //%prim
00256   // <NoReceiver> primitiveWindowsNCmdShow ^<Object> =
00257   //   Internal { name  = 'systemPrimitives::windowsNCmdShow' }
00258   //%
00259   static PRIM_DECL_0(windowsNCmdShow);
00260 
00261   //%prim
00262   // <NoReceiver> primitiveCharacterFor: value     <SmallInteger>
00263   //                             ifFail: failBlock <PrimFailBlock>  ^<Proxy> =
00264   //   Internal { error = #(OutOfBounds)
00265   //              name  = 'systemPrimitives::characterFor' }
00266   //%
00267   static PRIM_DECL_1(characterFor, oop value);
00268 
00269   //%prim
00270   // <NoReceiver> primitiveTraceStack ^<Object> =
00271   //   Internal { name  = 'systemPrimitives::traceStack' }
00272   //%
00273   static PRIM_DECL_0(traceStack);
00274 
00275   // FLAT PROFILER
00276 
00277   //%prim
00278   // <NoReceiver> primitiveFlatProfilerReset ^<Object> = 
00279   //   Internal { doc  = 'Resets the flat profiler to initial state.'
00280   //              name = 'systemPrimitives::flat_profiler_reset' }
00281   //%
00282   static PRIM_DECL_0(flat_profiler_reset);
00283 
00284   //%prim
00285   // <NoReceiver> primitiveFlatProfilerProcess ^<Process|nil> = 
00286   //   Internal { doc  = 'Returns the process beeing profiler, nil otherwise.'
00287   //              name = 'systemPrimitives::flat_profiler_process' }
00288   //%
00289   static PRIM_DECL_0(flat_profiler_process);
00290 
00291   //%prim
00292   // <NoReceiver> primitiveFlatProfilerEngage: process <Process>
00293   //                                   ifFail: failBlock <PrimFailBlock> ^<Process> = 
00294   //   Internal { doc  = 'Starts profiling process.'
00295   //              name = 'systemPrimitives::flat_profiler_engage' }
00296   //%
00297   static PRIM_DECL_1(flat_profiler_engage, oop process);
00298 
00299   //%prim
00300   // <NoReceiver> primitiveFlatProfilerDisengage ^<Process|nil> = 
00301   //   Internal { doc  = 'Stops profiling.'
00302   //              name = 'systemPrimitives::flat_profiler_disengage' }
00303   //%
00304   static PRIM_DECL_0(flat_profiler_disengage);
00305 
00306   //%prim
00307   // <NoReceiver> primitiveFlatProfilerPrint ^<Object> =
00308   //    Internal { doc   = 'Prints the collected profile information.'
00309   //               name  = 'systemPrimitives::flat_profiler_print' }
00310   //%
00311   static PRIM_DECL_0(flat_profiler_print);
00312 
00313 
00314   // SUPPORT FOR WEAK ARRAY NOTIFICATION
00315   
00316   //%prim
00317   // <NoReceiver> primitiveNotificationQueueGetIfFail: failBlock <PrimFailBlock>  ^<Object> =
00318   //   Internal { doc   = 'Returns the first element in the notification queue (FIFO).'
00319   //              error = #(EmptyQueue)
00320   //              name  = 'systemPrimitives::notificationQueueGet' }
00321   //%
00322   static PRIM_DECL_0(notificationQueueGet);
00323   
00324   //%prim
00325   // <NoReceiver> primitiveNotificationQueuePut: value <Object> ^<Object> =
00326   //   Internal { doc   = 'Appends the argument to the notification queue (FIFO).'
00327   //              name  = 'systemPrimitives::notificationQueuePut' }
00328   //%
00329   static PRIM_DECL_1(notificationQueuePut, oop value);
00330   
00331   //%prim
00332   // <NoReceiver> primitiveHadNearDeathExperience: value <Object> ^<Boolean> =
00333   //   Internal { doc  = 'Tells whether the receiver had a near death experience.'
00334   //              name = 'systemPrimitives::hadNearDeathExperience' }
00335   //%
00336   static PRIM_DECL_1(hadNearDeathExperience, oop value);
00337 
00338   // DLL support
00339 
00340   //%prim
00341   // <NoReceiver> primitiveDLLSetupLookup: receiver <Object>
00342   //                             selector: selector <Symbol>
00343   //                               ifFail: failBlock <PrimFailBlock> ^<Object> =
00344   //   Internal { doc    = 'Setup call back for DLL lookup. Fails if selector does not have right number of arguments'
00345   //              errors = #(failed)
00346   //              name   = 'systemPrimitives::dll_setup' }
00347   //%
00348   static PRIM_DECL_2(dll_setup, oop receiver, oop selector);
00349 
00350   //%prim
00351   // <NoReceiver> primitiveDLLLookup: name      <Symbol> 
00352   //                              in: library   <Proxy>
00353   //                          result: entry     <Proxy>
00354   //                          ifFail: failBlock <PrimFailBlock> ^<Proxy> =
00355   //   Internal { doc    = 'Lookup name in library'
00356   //              errors = #(NotFound)
00357   //              name   = 'systemPrimitives::dll_lookup' }
00358   //%
00359   static PRIM_DECL_3(dll_lookup, oop name, oop library, oop result);
00360 
00361   //%prim
00362   // <NoReceiver> primitiveDLLLoad: name      <Symbol> 
00363   //                        result: library   <Proxy>
00364   //                        ifFail: failBlock <PrimFailBlock> ^<Proxy> =
00365   //   Internal { doc    = 'Load library'
00366   //              errors = #(NotFound)
00367   //              name   = 'systemPrimitives::dll_load' }
00368   //%
00369   static PRIM_DECL_2(dll_load, oop name, oop library);
00370 
00371   //%prim
00372   // <NoReceiver> primitiveDLLUnload: library <Proxy> 
00373   //                          ifFail: failBlock <PrimFailBlock> ^<Object> =
00374   //   Internal { doc    = 'Unload the library'
00375   //              errors = #(Failed)
00376   //              name   = 'systemPrimitives::dll_unload' }
00377   //%
00378   static PRIM_DECL_1(dll_unload, oop library);
00379 
00380   // Inlining database
00381 
00382   //%prim
00383   // <NoReceiver> primitiveInliningDatabaseDirectory ^<Symbol> =
00384   //   Internal { doc    = 'Returns the directory for the external inlining database.'
00385   //              errors = #(Failed)
00386   //              name   = 'systemPrimitives::inlining_database_directory' }
00387   //%
00388   static PRIM_DECL_0(inlining_database_directory);
00389 
00390   //%prim
00391   // <NoReceiver> primitiveInliningDatabaseSetDirectory: name      <Symbol>
00392   //                                             ifFail: failBlock <PrimFailBlock> ^<Symbol> =
00393   //   Internal { doc    = 'Sets the directory for external inlining database.'
00394   //              doc    = 'Returns the old directory.'
00395   //              errors = #(Failed)
00396   //              name   = 'systemPrimitives::inlining_database_set_directory' }
00397   //%
00398   static PRIM_DECL_1(inlining_database_set_directory, oop name);
00399 
00400 
00401   //%prim
00402   // <NoReceiver>  primitiveInliningDatabaseFileOutClass: receiverClass <Behavior>
00403   //                                              ifFail: failBlock     <PrimFailBlock> ^<SmallInteger> =
00404   //   Internal { doc    = 'Adds inlining information to the external database for all compiled methods with the specific receiver class.'
00405   //              doc    = 'Returns the number of filed out structures.'
00406   //              errors = #(Failed)
00407   //              name   = 'systemPrimitives::inlining_database_file_out_class' }
00408   //%
00409   static PRIM_DECL_1(inlining_database_file_out_class, oop receiver_class);
00410 
00411   //%prim
00412   // <NoReceiver>  primitiveInliningDatabaseFileOutAllIfFail: failBlock ^<SmallInteger> =
00413   //   Internal { doc    = 'Adds inlining information to the external database for all compiled methods.'
00414   //              doc    = 'Returns the number of filed out structures.'
00415   //              errors = #(Failed)
00416   //              name   = 'systemPrimitives::inlining_database_file_out_all' }
00417   //%
00418   static PRIM_DECL_0(inlining_database_file_out_all);
00419 
00420   //%prim
00421   // <NoReceiver>  primitiveInliningDatabaseCompile: fileName  <String>
00422   //                                         ifFail: failBlock <PrimFailBlock> ^<Object> =
00423   //   Internal { doc    = 'Compiles a method described in fileName.'
00424   //              errors = #(Failed)
00425   //              name   = 'systemPrimitives::inlining_database_compile' }
00426   //%
00427   static PRIM_DECL_1(inlining_database_compile, oop file_name);
00428 
00429   //%prim
00430   // <NoReceiver>  primitiveInliningDatabaseCompile ^<Boolean> =
00431   //   Internal { doc    = 'Compiles a method for the inlining database (for background compilation).'
00432   //              name   = 'systemPrimitives::inlining_database_compile_next' }
00433   //%
00434   static PRIM_DECL_0(inlining_database_compile_next);
00435 
00436   //%prim
00437   // <NoReceiver>  primitiveInliningDatabaseMangle: name      <String>
00438   //                                        ifFail: failBlock <PrimFailBlock> ^<IndexedByteInstanceVariables> =
00439   //   Internal { doc    = 'Returns the mangled name'
00440   //              name   = 'systemPrimitives::inlining_database_mangle' }
00441   //%
00442   static PRIM_DECL_1(inlining_database_mangle, oop name);
00443 
00444   //%prim
00445   // <NoReceiver>  primitiveInliningDatabaseCompileDemangled: name <String>
00446   //                                                  ifFail: failBlock <PrimFailBlock> ^<IndexedByteInstanceVariables> =
00447   //   Internal { doc    = 'Returns the demangled name'
00448   //              name   = 'systemPrimitives::inlining_database_demangle' }
00449   //%
00450   static PRIM_DECL_1(inlining_database_demangle, oop name);
00451 
00452   //%prim
00453   // <NoReceiver>  primitiveInliningDatabaseAddLookupEntryClass: class      <Behavior>
00454   //                                                   selector: selector   <Symbol>
00455   //                                                     ifFail: failBlock <PrimFailBlock> ^<Boolean> =
00456   //   Internal { name   = 'systemPrimitives::inlining_database_add_entry' }
00457   //%
00458   static PRIM_DECL_2(inlining_database_add_entry, oop receiver_class, oop method_selector);
00459 
00460 
00461   //%prim
00462   // <NoReceiver>  primitiveSlidingSystemAverageIfFail: failBlock <PrimFailBlock> ^<IndexedInstanceVariables> =
00463   //   Internal { errors = #(NotActive)
00464   //              name   = 'systemPrimitives::sliding_system_average' }
00465   //%
00466   static PRIM_DECL_0(sliding_system_average);
00467 
00468   // Enumeration primitives
00469 
00470   //%prim
00471   // <NoReceiver> primitiveInstancesOf: class <Class>
00472   //                             limit: limit <SmallInteger>
00473   //                            ifFail: failBlock <PrimFailBlock> ^<IndexedInstanceVariables> =
00474   //   Internal { doc    = 'Returns an array with instances of class.'
00475   //              doc    = 'limit specifies the maximum number of elements.'
00476   //              errors = #(OutOfMemory)
00477   //              name   = 'systemPrimitives::instances_of' }
00478   //%
00479   static PRIM_DECL_2(instances_of, oop klass, oop limit);
00480 
00481   //%prim
00482   // <NoReceiver> primitiveReferencesTo: obj <Object>
00483   //                              limit: limit <SmallInteger>
00484   //                             ifFail: failBlock <PrimFailBlock> ^<IndexedInstanceVariables> =
00485   //   Internal { doc    = 'Returns an array with all objects referring obj.'
00486   //              doc    = 'limit specifies the maximum number of elements.'
00487   //              errors = #(OutOfMemory)
00488   //              name   = 'systemPrimitives::references_to' }
00489   //%
00490   static PRIM_DECL_2(references_to, oop obj, oop limit);
00491 
00492   //%prim
00493   // <NoReceiver> primitiveReferencesToInstancesOf: class <Class>
00494   //                                         limit: limit <SmallInteger>
00495   //                                        ifFail: failBlock <PrimFailBlock> ^<IndexedInstanceVariables> =
00496   //   Internal { doc    = 'Returns an array with all objects referring instances of class.'
00497   //              doc    = 'limit specifies the maximum number of elements.'
00498   //              errors = #(OutOfMemory)
00499   //              name   = 'systemPrimitives::references_to_instances_of' }
00500   //%
00501   static PRIM_DECL_2(references_to_instances_of, oop klass, oop limit);
00502 
00503   //%prim
00504   // <NoReceiver> primitiveAllObjectsLimit: limit <SmallInteger>
00505   //                                ifFail: failBlock <PrimFailBlock> ^<IndexedInstanceVariables> =
00506   //   Internal { doc    = 'Returns an array containing all objects.'
00507   //              doc    = 'limit specifies the maximum number of elements.'
00508   //              errors = #(OutOfMemory)
00509   //              name   = 'systemPrimitives::all_objects' }
00510   //%
00511   static PRIM_DECL_1(all_objects, oop limit);
00512 
00513   //%prim
00514   // <NoReceiver> primitiveFlushCodeCache ^<Object> =
00515   //   Internal { doc    = 'Flushes all compiled code.'
00516   //              name   = 'systemPrimitives::flush_code_cache' }
00517   //%
00518   static PRIM_DECL_0(flush_code_cache);
00519 
00520   //%prim
00521   // <NoReceiver> primitiveFlushDeadCode ^<Object> =
00522   //   Internal { doc    = 'Flushes all invalidate compiled code.'
00523   //              name   = 'systemPrimitives::flush_dead_code' }
00524   //%
00525   static PRIM_DECL_0(flush_dead_code);
00526 };

Generated on Mon Oct 9 13:37:29 2006 for Strongtalk VM by  doxygen 1.4.7