%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
// Copyright 2018 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef V8_TORQUE_CSA_GENERATOR_H_ #define V8_TORQUE_CSA_GENERATOR_H_ #include "src/torque/torque-code-generator.h" namespace v8 { namespace internal { namespace torque { class CSAGenerator : public TorqueCodeGenerator { public: CSAGenerator(const ControlFlowGraph& cfg, std::ostream& out, base::Optional<Builtin::Kind> linkage = base::nullopt) : TorqueCodeGenerator(cfg, out), linkage_(linkage) {} base::Optional<Stack<std::string>> EmitGraph(Stack<std::string> parameters); static constexpr const char* ARGUMENTS_VARIABLE_STRING = "arguments"; static void EmitCSAValue(VisitResult result, const Stack<std::string>& values, std::ostream& out); private: base::Optional<Builtin::Kind> linkage_; void EmitSourcePosition(SourcePosition pos, bool always_emit = false) override; std::string PreCallableExceptionPreparation( base::Optional<Block*> catch_block); void PostCallableExceptionPreparation( const std::string& catch_name, const Type* return_type, base::Optional<Block*> catch_block, Stack<std::string>* stack, const base::Optional<DefinitionLocation>& exception_object_definition); std::vector<std::string> ProcessArgumentsCommon( const TypeVector& parameter_types, std::vector<std::string> constexpr_arguments, Stack<std::string>* stack); Stack<std::string> EmitBlock(const Block* block); #define EMIT_INSTRUCTION_DECLARATION(T) \ void EmitInstruction(const T& instruction, Stack<std::string>* stack) \ override; TORQUE_BACKEND_DEPENDENT_INSTRUCTION_LIST(EMIT_INSTRUCTION_DECLARATION) #undef EMIT_INSTRUCTION_DECLARATION }; } // namespace torque } // namespace internal } // namespace v8 #endif // V8_TORQUE_CSA_GENERATOR_H_