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 };