Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(515)

Side by Side Diff: src/full-codegen.h

Issue 989273003: Converted FullCode to have its own list of known intrinsics. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fixed comment. Rebased Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/arm64/full-codegen-arm64.cc ('k') | src/full-codegen.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_FULL_CODEGEN_H_ 5 #ifndef V8_FULL_CODEGEN_H_
6 #define V8_FULL_CODEGEN_H_ 6 #define V8_FULL_CODEGEN_H_
7 7
8 #include "src/v8.h" 8 #include "src/v8.h"
9 9
10 #include "src/allocation.h" 10 #include "src/allocation.h"
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 : NestedStatement(codegen) { 284 : NestedStatement(codegen) {
285 } 285 }
286 virtual ~WithOrCatch() {} 286 virtual ~WithOrCatch() {}
287 287
288 virtual NestedStatement* Exit(int* stack_depth, int* context_length) { 288 virtual NestedStatement* Exit(int* stack_depth, int* context_length) {
289 ++(*context_length); 289 ++(*context_length);
290 return previous_; 290 return previous_;
291 } 291 }
292 }; 292 };
293 293
294 // Type of a member function that generates inline code for a native function.
295 typedef void (FullCodeGenerator::*InlineFunctionGenerator)(CallRuntime* expr);
296
297 static const InlineFunctionGenerator kInlineFunctionGenerators[];
298
299 // A platform-specific utility to overwrite the accumulator register 294 // A platform-specific utility to overwrite the accumulator register
300 // with a GC-safe value. 295 // with a GC-safe value.
301 void ClearAccumulator(); 296 void ClearAccumulator();
302 297
303 // Determine whether or not to inline the smi case for the given 298 // Determine whether or not to inline the smi case for the given
304 // operation. 299 // operation.
305 bool ShouldInlineSmiCase(Token::Value op); 300 bool ShouldInlineSmiCase(Token::Value op);
306 301
307 // Helper function to convert a pure value into a test context. The value 302 // Helper function to convert a pure value into a test context. The value
308 // is expected on the stack or the accumulator, depending on the platform. 303 // is expected on the stack or the accumulator, depending on the platform.
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 void EmitReturnSequence(); 483 void EmitReturnSequence();
489 484
490 // Platform-specific code sequences for calls 485 // Platform-specific code sequences for calls
491 void EmitCall(Call* expr, CallICState::CallType = CallICState::FUNCTION); 486 void EmitCall(Call* expr, CallICState::CallType = CallICState::FUNCTION);
492 void EmitSuperConstructorCall(Call* expr); 487 void EmitSuperConstructorCall(Call* expr);
493 void EmitCallWithLoadIC(Call* expr); 488 void EmitCallWithLoadIC(Call* expr);
494 void EmitSuperCallWithLoadIC(Call* expr); 489 void EmitSuperCallWithLoadIC(Call* expr);
495 void EmitKeyedCallWithLoadIC(Call* expr, Expression* key); 490 void EmitKeyedCallWithLoadIC(Call* expr, Expression* key);
496 void EmitKeyedSuperCallWithLoadIC(Call* expr); 491 void EmitKeyedSuperCallWithLoadIC(Call* expr);
497 492
498 // Platform-specific code for inline runtime calls. 493 #define FOR_EACH_FULL_CODE_INTRINSIC(F) \
499 InlineFunctionGenerator FindInlineFunctionGenerator(CallRuntime* expr); 494 F(IsSmi) \
495 F(IsNonNegativeSmi) \
496 F(IsArray) \
497 F(IsRegExp) \
498 F(IsJSProxy) \
499 F(IsConstructCall) \
500 F(CallFunction) \
501 F(DefaultConstructorCallSuper) \
502 F(ArgumentsLength) \
503 F(Arguments) \
504 F(ValueOf) \
505 F(SetValueOf) \
506 F(DateField) \
507 F(StringCharFromCode) \
508 F(StringCharAt) \
509 F(OneByteSeqStringSetChar) \
510 F(TwoByteSeqStringSetChar) \
511 F(ObjectEquals) \
512 F(IsObject) \
513 F(IsFunction) \
514 F(IsUndetectableObject) \
515 F(IsSpecObject) \
516 F(IsStringWrapperSafeForDefaultValueOf) \
517 F(MathPow) \
518 F(IsMinusZero) \
519 F(HasCachedArrayIndex) \
520 F(GetCachedArrayIndex) \
521 F(FastOneByteArrayJoin) \
522 F(GeneratorNext) \
523 F(GeneratorThrow) \
524 F(DebugBreakInOptimizedCode) \
525 F(ClassOf) \
526 F(StringCharCodeAt) \
527 F(StringAdd) \
528 F(SubString) \
529 F(StringCompare) \
530 F(RegExpExec) \
531 F(RegExpConstructResult) \
532 F(GetFromCache) \
533 F(NumberToString) \
534 F(DebugIsActive)
500 535
501 void EmitInlineRuntimeCall(CallRuntime* expr, 536 #define GENERATOR_DECLARATION(Name) void Emit##Name(CallRuntime* call);
502 InlineFunctionGenerator generator); 537 FOR_EACH_FULL_CODE_INTRINSIC(GENERATOR_DECLARATION)
503 538 #undef GENERATOR_DECLARATION
504 #define EMIT_INLINE_RUNTIME_CALL(name, x, y) \
505 void Emit##name(CallRuntime* expr);
506 INLINE_FUNCTION_LIST(EMIT_INLINE_RUNTIME_CALL)
507 #undef EMIT_INLINE_RUNTIME_CALL
508 539
509 // Platform-specific code for resuming generators. 540 // Platform-specific code for resuming generators.
510 void EmitGeneratorResume(Expression *generator, 541 void EmitGeneratorResume(Expression *generator,
511 Expression *value, 542 Expression *value,
512 JSGeneratorObject::ResumeMode resume_mode); 543 JSGeneratorObject::ResumeMode resume_mode);
513 544
514 // Platform-specific code for loading variables. 545 // Platform-specific code for loading variables.
515 void EmitLoadGlobalCheckExtensions(VariableProxy* proxy, 546 void EmitLoadGlobalCheckExtensions(VariableProxy* proxy,
516 TypeofState typeof_state, 547 TypeofState typeof_state,
517 Label* slow); 548 Label* slow);
(...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after
1029 1060
1030 Address start_; 1061 Address start_;
1031 Address instruction_start_; 1062 Address instruction_start_;
1032 uint32_t length_; 1063 uint32_t length_;
1033 }; 1064 };
1034 1065
1035 1066
1036 } } // namespace v8::internal 1067 } } // namespace v8::internal
1037 1068
1038 #endif // V8_FULL_CODEGEN_H_ 1069 #endif // V8_FULL_CODEGEN_H_
OLDNEW
« no previous file with comments | « src/arm64/full-codegen-arm64.cc ('k') | src/full-codegen.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698