1 // Copyright 2015 the V8 project authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "src/wasm/wasm-result.h" 6 7 #include "src/factory.h" 8 #include "src/heap/heap.h" 9 #include "src/isolate.h" 10 #include "src/objects-inl.h" // TODO(mstarzinger): Temporary cycle breaker! 11 #include "src/objects.h" 12 13 #include "src/base/platform/platform.h" 14 15 namespace v8 { 16 namespace internal { 17 namespace wasm { 18 19 std::ostream& operator<<(std::ostream& os, const ErrorCode& error_code) { 20 switch (error_code) { 21 case kSuccess: 22 os << "Success"; 23 break; 24 default: // TODO(titzer): render error codes 25 os << "Error"; 26 break; 27 } 28 return os; 29 } 30 31 32 void ErrorThrower::Error(const char* format, ...) { 33 if (error_) return; // only report the first error. 34 error_ = true; 35 char buffer[256]; 36 37 va_list arguments; 38 va_start(arguments, format); 39 base::OS::VSNPrintF(buffer, 255, format, arguments); 40 va_end(arguments); 41 42 std::ostringstream str; 43 if (context_ != nullptr) { 44 str << context_ << ": "; 45 } 46 str << buffer; 47 48 isolate_->ScheduleThrow( 49 *isolate_->factory()->NewStringFromAsciiChecked(str.str().c_str())); 50 } 51 } // namespace wasm 52 } // namespace internal 53 } // namespace v8 54