OLD | NEW |
---|---|
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
360 | 360 |
361 class Runtime : public AllStatic { | 361 class Runtime : public AllStatic { |
362 public: | 362 public: |
363 enum FunctionId { | 363 enum FunctionId { |
364 #define F(name, nargs, ressize) k##name, | 364 #define F(name, nargs, ressize) k##name, |
365 RUNTIME_FUNCTION_LIST(F) | 365 RUNTIME_FUNCTION_LIST(F) |
366 kNofFunctions | 366 kNofFunctions |
367 #undef F | 367 #undef F |
368 }; | 368 }; |
369 | 369 |
370 enum CallingConvention { | |
371 // Calling with exit frame. Callee may iterate through the stack frames | |
372 // and perform garbage collection. | |
373 EXIT_FRAME_CALL, | |
374 | |
375 // The callee always returns a valid object. | |
376 DIRECT_CALL_NOT_FAILS | |
Søren Thygesen Gjesse
2010/02/22 12:38:22
NOT -> NEVER.
| |
377 }; | |
378 | |
370 // Runtime function descriptor. | 379 // Runtime function descriptor. |
371 struct Function { | 380 struct Function { |
372 // The JS name of the function. | 381 // The JS name of the function. |
373 const char* name; | 382 const char* name; |
374 | 383 |
375 // The C++ (native) entry point. | 384 // The C++ (native) entry point. |
376 byte* entry; | 385 byte* entry; |
377 | 386 |
378 // The number of arguments expected; nargs < 0 if variable no. of | 387 // The number of arguments expected; nargs < 0 if variable no. of |
379 // arguments. | 388 // arguments. |
380 int nargs; | 389 int nargs; |
381 int stub_id; | 390 int stub_id; |
382 // Size of result, if complex (larger than a single pointer), | 391 // Size of result, if complex (larger than a single pointer), |
383 // otherwise zero. | 392 // otherwise zero. |
384 int result_size; | 393 int result_size; |
394 | |
395 CallingConvention calling_convention; | |
385 }; | 396 }; |
386 | 397 |
387 // Get the runtime function with the given function id. | 398 // Get the runtime function with the given function id. |
388 static Function* FunctionForId(FunctionId fid); | 399 static Function* FunctionForId(FunctionId fid); |
389 | 400 |
390 // Get the runtime function with the given name. | 401 // Get the runtime function with the given name. |
391 static Function* FunctionForName(const char* name); | 402 static Function* FunctionForName(const char* name); |
392 | 403 |
393 static int StringMatch(Handle<String> sub, Handle<String> pat, int index); | 404 static int StringMatch(Handle<String> sub, Handle<String> pat, int index); |
394 | 405 |
(...skipping 26 matching lines...) Expand all Loading... | |
421 int position); | 432 int position); |
422 | 433 |
423 // Helper functions used stubs. | 434 // Helper functions used stubs. |
424 static void PerformGC(Object* result); | 435 static void PerformGC(Object* result); |
425 }; | 436 }; |
426 | 437 |
427 | 438 |
428 } } // namespace v8::internal | 439 } } // namespace v8::internal |
429 | 440 |
430 #endif // V8_RUNTIME_H_ | 441 #endif // V8_RUNTIME_H_ |
OLD | NEW |