| OLD | NEW | 
|    1 // Copyright 2014 the V8 project authors. All rights reserved. |    1 // Copyright 2014 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 #include "src/code-stubs.h" |    5 #include "src/code-stubs.h" | 
|    6 #include "src/compiler.h" |    6 #include "src/compiler.h" | 
|    7 #include "src/compiler/linkage.h" |    7 #include "src/compiler/linkage.h" | 
|    8 #include "src/compiler/node.h" |    8 #include "src/compiler/node.h" | 
|    9 #include "src/compiler/pipeline.h" |    9 #include "src/compiler/pipeline.h" | 
|   10 #include "src/scopes.h" |   10 #include "src/scopes.h" | 
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  113   return GetStubCallDescriptor(isolate_, zone_, descriptor, |  113   return GetStubCallDescriptor(isolate_, zone_, descriptor, | 
|  114                                stack_parameter_count, flags, properties); |  114                                stack_parameter_count, flags, properties); | 
|  115 } |  115 } | 
|  116  |  116  | 
|  117  |  117  | 
|  118 // static |  118 // static | 
|  119 bool Linkage::NeedsFrameState(Runtime::FunctionId function) { |  119 bool Linkage::NeedsFrameState(Runtime::FunctionId function) { | 
|  120   if (!FLAG_turbo_deoptimization) { |  120   if (!FLAG_turbo_deoptimization) { | 
|  121     return false; |  121     return false; | 
|  122   } |  122   } | 
|  123   // TODO(jarin) At the moment, we only add frame state for |  123  | 
|  124   // few chosen runtime functions. |  124   // Most runtime functions need a FrameState. A few chosen ones that we know | 
 |  125   // not to call into arbitrary JavaScript, not to throw, and not to deoptimize | 
 |  126   // are blacklisted here and can be called without a FrameState. | 
|  125   switch (function) { |  127   switch (function) { | 
|  126     case Runtime::kApply: |  128     case Runtime::kBooleanize: | 
|  127     case Runtime::kArrayBufferNeuter: |  129     case Runtime::kDeclareGlobals:                 // TODO(jarin): Is it safe? | 
|  128     case Runtime::kArrayConcat: |  130     case Runtime::kDefineClassMethod:              // TODO(jarin): Is it safe? | 
|  129     case Runtime::kBasicJSONStringify: |  131     case Runtime::kDefineGetterPropertyUnchecked:  // TODO(jarin): Is it safe? | 
|  130     case Runtime::kCheckExecutionState: |  132     case Runtime::kDefineSetterPropertyUnchecked:  // TODO(jarin): Is it safe? | 
|  131     case Runtime::kCollectStackTrace: |  133     case Runtime::kForInCacheArrayLength: | 
|  132     case Runtime::kCompileLazy: |  134     case Runtime::kForInInit: | 
|  133     case Runtime::kCompileOptimized: |  135     case Runtime::kForInNext: | 
|  134     case Runtime::kCompileString: |  136     case Runtime::kNewArguments: | 
|  135     case Runtime::kCreateArrayLiteral: |  137     case Runtime::kNewClosure: | 
|  136     case Runtime::kCreateObjectLiteral: |  138     case Runtime::kNewFunctionContext: | 
|  137     case Runtime::kDebugBreak: |  139     case Runtime::kPushBlockContext: | 
|  138     case Runtime::kDataViewSetInt8: |  140     case Runtime::kPushCatchContext: | 
|  139     case Runtime::kDataViewSetUint8: |  141     case Runtime::kReThrow: | 
|  140     case Runtime::kDataViewSetInt16: |  142     case Runtime::kSetProperty:  // TODO(jarin): Is it safe? | 
|  141     case Runtime::kDataViewSetUint16: |  143     case Runtime::kStringCompare: | 
|  142     case Runtime::kDataViewSetInt32: |  144     case Runtime::kStringEquals: | 
|  143     case Runtime::kDataViewSetUint32: |  145     case Runtime::kToFastProperties:  // TODO(jarin): Is it safe? | 
|  144     case Runtime::kDataViewSetFloat32: |  146     case Runtime::kTraceEnter: | 
|  145     case Runtime::kDataViewSetFloat64: |  147     case Runtime::kTraceExit: | 
|  146     case Runtime::kDataViewGetInt8: |  148     case Runtime::kTypeof: | 
|  147     case Runtime::kDataViewGetUint8: |  149       return false; | 
|  148     case Runtime::kDataViewGetInt16: |  | 
|  149     case Runtime::kDataViewGetUint16: |  | 
|  150     case Runtime::kDataViewGetInt32: |  | 
|  151     case Runtime::kDataViewGetUint32: |  | 
|  152     case Runtime::kDataViewGetFloat32: |  | 
|  153     case Runtime::kDataViewGetFloat64: |  | 
|  154     case Runtime::kDebugEvaluate: |  | 
|  155     case Runtime::kDebugEvaluateGlobal: |  | 
|  156     case Runtime::kDebugGetLoadedScripts: |  | 
|  157     case Runtime::kDebugGetPropertyDetails: |  | 
|  158     case Runtime::kDebugPromiseEvent: |  | 
|  159     case Runtime::kDefaultConstructorSuperCall: |  | 
|  160     case Runtime::kDefineAccessorPropertyUnchecked: |  | 
|  161     case Runtime::kDefineClass: |  | 
|  162     case Runtime::kDefineDataPropertyUnchecked: |  | 
|  163     case Runtime::kDeleteProperty: |  | 
|  164     case Runtime::kDeliverObservationChangeRecords: |  | 
|  165     case Runtime::kDeoptimizeFunction: |  | 
|  166     case Runtime::kFunctionBindArguments: |  | 
|  167     case Runtime::kGetDefaultReceiver: |  | 
|  168     case Runtime::kGetFrameCount: |  | 
|  169     case Runtime::kGetOwnProperty: |  | 
|  170     case Runtime::kGetOwnPropertyNames: |  | 
|  171     case Runtime::kGetPropertyNamesFast: |  | 
|  172     case Runtime::kGetPrototype: |  | 
|  173     case Runtime::kInlineArguments: |  150     case Runtime::kInlineArguments: | 
|  174     case Runtime::kInlineCallFunction: |  151     case Runtime::kInlineCallFunction: | 
|  175     case Runtime::kInlineDateField: |  152     case Runtime::kInlineDateField: | 
|  176     case Runtime::kInlineOptimizedGetPrototype: |  153     case Runtime::kInlineOptimizedGetPrototype: | 
|  177     case Runtime::kInlineRegExpExec: |  154     case Runtime::kInlineRegExpExec: | 
|  178     case Runtime::kInternalSetPrototype: |  | 
|  179     case Runtime::kInterrupt: |  | 
|  180     case Runtime::kIsPropertyEnumerable: |  | 
|  181     case Runtime::kIsSloppyModeFunction: |  | 
|  182     case Runtime::kLiveEditGatherCompileInfo: |  | 
|  183     case Runtime::kLoadLookupSlot: |  | 
|  184     case Runtime::kLoadLookupSlotNoReferenceError: |  | 
|  185     case Runtime::kMaterializeRegExpLiteral: |  | 
|  186     case Runtime::kNewObject: |  | 
|  187     case Runtime::kNewObjectFromBound: |  | 
|  188     case Runtime::kNewObjectWithAllocationSite: |  | 
|  189     case Runtime::kObjectFreeze: |  | 
|  190     case Runtime::kObjectSeal: |  | 
|  191     case Runtime::kOwnKeys: |  | 
|  192     case Runtime::kParseJson: |  | 
|  193     case Runtime::kPrepareStep: |  | 
|  194     case Runtime::kPreventExtensions: |  | 
|  195     case Runtime::kPromiseRejectEvent: |  | 
|  196     case Runtime::kPromiseRevokeReject: |  | 
|  197     case Runtime::kPushWithContext: |  | 
|  198     case Runtime::kRegExpInitializeAndCompile: |  | 
|  199     case Runtime::kRegExpExecMultiple: |  | 
|  200     case Runtime::kResolvePossiblyDirectEval: |  | 
|  201     case Runtime::kRunMicrotasks: |  | 
|  202     case Runtime::kSetPrototype: |  | 
|  203     case Runtime::kSetScriptBreakPoint: |  | 
|  204     case Runtime::kSparseJoinWithSeparator: |  | 
|  205     case Runtime::kStackGuard: |  | 
|  206     case Runtime::kStoreKeyedToSuper_Sloppy: |  | 
|  207     case Runtime::kStoreKeyedToSuper_Strict: |  | 
|  208     case Runtime::kStoreToSuper_Sloppy: |  | 
|  209     case Runtime::kStoreToSuper_Strict: |  | 
|  210     case Runtime::kStoreLookupSlot: |  | 
|  211     case Runtime::kStringBuilderConcat: |  | 
|  212     case Runtime::kStringBuilderJoin: |  | 
|  213     case Runtime::kStringMatch: |  | 
|  214     case Runtime::kStringReplaceGlobalRegExpWithString: |  | 
|  215     case Runtime::kThrowConstAssignError: |  | 
|  216     case Runtime::kThrowConstructorNonCallableError: |  | 
|  217     case Runtime::kThrowNonMethodError: |  | 
|  218     case Runtime::kThrowNotDateError: |  | 
|  219     case Runtime::kThrowReferenceError: |  | 
|  220     case Runtime::kThrowUnsupportedSuperError: |  | 
|  221     case Runtime::kThrow: |  | 
|  222     case Runtime::kTypedArraySetFastCases: |  | 
|  223     case Runtime::kTypedArrayInitializeFromArrayLike: |  | 
|  224 #ifdef V8_I18N_SUPPORT |  | 
|  225     case Runtime::kGetImplFromInitializedIntlObject: |  | 
|  226 #endif |  | 
|  227       return true; |  155       return true; | 
|  228     default: |  156     default: | 
|  229       return false; |  157       break; | 
|  230   } |  158   } | 
 |  159  | 
 |  160   // Most inlined runtime functions (except the ones listed above) can be called | 
 |  161   // without a FrameState or will be lowered by JSIntrinsicLowering internally. | 
 |  162   const Runtime::Function* const f = Runtime::FunctionForId(function); | 
 |  163   if (f->intrinsic_type == Runtime::IntrinsicType::INLINE) return false; | 
 |  164  | 
 |  165   return true; | 
|  231 } |  166 } | 
|  232  |  167  | 
|  233  |  168  | 
|  234 //============================================================================== |  169 //============================================================================== | 
|  235 // Provide unimplemented methods on unsupported architectures, to at least link. |  170 // Provide unimplemented methods on unsupported architectures, to at least link. | 
|  236 //============================================================================== |  171 //============================================================================== | 
|  237 #if !V8_TURBOFAN_BACKEND |  172 #if !V8_TURBOFAN_BACKEND | 
|  238 CallDescriptor* Linkage::GetJSCallDescriptor(Zone* zone, bool is_osr, |  173 CallDescriptor* Linkage::GetJSCallDescriptor(Zone* zone, bool is_osr, | 
|  239                                              int parameter_count, |  174                                              int parameter_count, | 
|  240                                              CallDescriptor::Flags flags) { |  175                                              CallDescriptor::Flags flags) { | 
| (...skipping 27 matching lines...) Expand all  Loading... | 
|  268  |  203  | 
|  269 CallDescriptor* Linkage::GetSimplifiedCDescriptor(Zone* zone, |  204 CallDescriptor* Linkage::GetSimplifiedCDescriptor(Zone* zone, | 
|  270                                                   MachineSignature* sig) { |  205                                                   MachineSignature* sig) { | 
|  271   UNIMPLEMENTED(); |  206   UNIMPLEMENTED(); | 
|  272   return NULL; |  207   return NULL; | 
|  273 } |  208 } | 
|  274 #endif  // !V8_TURBOFAN_BACKEND |  209 #endif  // !V8_TURBOFAN_BACKEND | 
|  275 } |  210 } | 
|  276 } |  211 } | 
|  277 }  // namespace v8::internal::compiler |  212 }  // namespace v8::internal::compiler | 
| OLD | NEW |