CRoutedIO::CRoutedIO() { // route standard streams to trace/message box output std::ostream tracer(&m_tracer); std::ostream msgbox(&m_msgbox); std::clog.rdbuf(tracer.rdbuf()); std::cout.rdbuf(tracer.rdbuf()); std::cerr.rdbuf(msgbox.rdbuf()); }
void DFG_OPERATION operationPutByValBeyondArrayBounds(ExecState* exec, JSArray* array, int32_t index, EncodedJSValue encodedValue) { JSGlobalData* globalData = &exec->globalData(); NativeCallFrameTracer tracer(globalData, exec); // We should only get here if index is outside the existing vector. ASSERT(!array->canSetIndex(index)); JSArray::putByIndex(array, exec, index, JSValue::decode(encodedValue)); }
void DFG_OPERATION operationPutByIdDirectNonStrict(ExecState* exec, EncodedJSValue encodedValue, JSCell* base, Identifier* propertyName) { JSGlobalData* globalData = &exec->globalData(); NativeCallFrameTracer tracer(globalData, exec); PutPropertySlot slot(false); ASSERT(base->isObject()); asObject(base)->putDirect(exec->globalData(), *propertyName, JSValue::decode(encodedValue), slot); }
EncodedJSValue DFG_OPERATION operationGetById(ExecState* exec, EncodedJSValue base, Identifier* propertyName) { JSGlobalData* globalData = &exec->globalData(); NativeCallFrameTracer tracer(globalData, exec); JSValue baseValue = JSValue::decode(base); PropertySlot slot(baseValue); return JSValue::encode(baseValue.get(exec, *propertyName, slot)); }
char* newTypedArrayWithOneArgument( ExecState* exec, Structure* structure, EncodedJSValue encodedValue) { VM& vm = exec->vm(); NativeCallFrameTracer tracer(&vm, exec); JSValue value = JSValue::decode(encodedValue); if (JSArrayBuffer* jsBuffer = jsDynamicCast<JSArrayBuffer*>(value)) { RefPtr<ArrayBuffer> buffer = jsBuffer->impl(); if (buffer->byteLength() % ViewClass::elementSize) { vm.throwException(exec, createRangeError(exec, ASCIILiteral("ArrayBuffer length minus the byteOffset is not a multiple of the element size"))); return 0; } return bitwise_cast<char*>( ViewClass::create( exec, structure, buffer, 0, buffer->byteLength() / ViewClass::elementSize)); } if (JSObject* object = jsDynamicCast<JSObject*>(value)) { unsigned length = object->get(exec, vm.propertyNames->length).toUInt32(exec); if (exec->hadException()) return 0; ViewClass* result = ViewClass::createUninitialized(exec, structure, length); if (!result) return 0; if (!result->set(exec, object, 0, length)) return 0; return bitwise_cast<char*>(result); } int length; if (value.isInt32()) length = value.asInt32(); else if (!value.isNumber()) { vm.throwException(exec, createTypeError(exec, ASCIILiteral("Invalid array length argument"))); return 0; } else { length = static_cast<int>(value.asNumber()); if (length != value.asNumber()) { vm.throwException(exec, createTypeError(exec, ASCIILiteral("Invalid array length argument (fractional lengths not allowed)"))); return 0; } } if (length < 0) { vm.throwException(exec, createRangeError(exec, ASCIILiteral("Requested length is negative"))); return 0; } return bitwise_cast<char*>(ViewClass::create(exec, structure, length)); }
void DFG_OPERATION debugOperationPrintSpeculationFailure(ExecState* exec, void* debugInfoRaw) { JSGlobalData* globalData = &exec->globalData(); NativeCallFrameTracer tracer(globalData, exec); SpeculationFailureDebugInfo* debugInfo = static_cast<SpeculationFailureDebugInfo*>(debugInfoRaw); CodeBlock* codeBlock = debugInfo->codeBlock; CodeBlock* alternative = codeBlock->alternative(); dataLog("Speculation failure in %p at @%u with executeCounter = %d, reoptimizationRetryCounter = %u, optimizationDelayCounter = %u, success/fail %u/%u\n", codeBlock, debugInfo->nodeIndex, alternative ? alternative->jitExecuteCounter() : 0, alternative ? alternative->reoptimizationRetryCounter() : 0, alternative ? alternative->optimizationDelayCounter() : 0, codeBlock->speculativeSuccessCounter(), codeBlock->speculativeFailCounter()); }
//============================================================================================================ // on_pbResetFileName_clicked //------------------------------------------------------------------------------------------------------------ // Activated when Reset filename button clicked // The target file set back to ATP.config //============================================================================================================ void dlgConfigEditor::on_pbResetFileName_clicked() { cTracer tracer("on_pbResetFileName_clicked"); ui->ledFileName->setText( "ATP.config" ); m_qsDirConf = m_qsDirConfOrig; m_qsFileName = QString( "%1/%2" ).arg(m_qsDirConf).arg(ui->ledFileName->text()); ui->ledFileName->setToolTip( m_qsFileName ); }
int start_uml_tt(void) { void *sp; int pages; pages = (1 << CONFIG_KERNEL_STACK_ORDER); sp = task_stack_page(&init_task) + pages * PAGE_SIZE - sizeof(unsigned long); return(tracer(start_kernel_proc, sp)); }
/* Run tracer. */ static unsigned int rest_of_handle_tracer (void) { if (dump_file) dump_flow_info (dump_file, dump_flags); tracer (0); cleanup_cfg (CLEANUP_EXPENSIVE); reg_scan (get_insns (), max_reg_num ()); return 0; }
int start_uml_tt(void) { void *sp; int pages; pages = (1 << CONFIG_KERNEL_STACK_ORDER); sp = (void *) ((unsigned long) init_task.thread_info) + pages * PAGE_SIZE - sizeof(unsigned long); return(tracer(start_kernel_proc, sp)); }
bool RootList::init() { EdgeVectorTracer tracer(rt, &edges, wantNames); JS_TraceRuntime(&tracer); if (!tracer.okay) return false; noGC.emplace(rt); return true; }
void JIT_OPERATION operationReallocateStorageAndFinishPut(ExecState* exec, JSObject* base, Structure* structure, PropertyOffset offset, EncodedJSValue value) { VM& vm = exec->vm(); NativeCallFrameTracer tracer(&vm, exec); ASSERT(structure->outOfLineCapacity() > base->structure()->outOfLineCapacity()); ASSERT(!vm.heap.storageAllocator().fastPathShouldSucceed(structure->outOfLineCapacity() * sizeof(JSValue))); base->setStructureAndReallocateStorageIfNecessary(vm, structure); base->putDirect(vm, offset, JSValue::decode(value)); }
void JIT_OPERATION operationPutByIdDirectNonStrict(ExecState* exec, EncodedJSValue encodedValue, JSCell* base, StringImpl* uid) { VM* vm = &exec->vm(); NativeCallFrameTracer tracer(vm, exec); Identifier ident(vm, uid); PutPropertySlot slot(false, exec->codeBlock()->putByIdContext()); ASSERT(base->isObject()); asObject(base)->putDirect(exec->vm(), ident, JSValue::decode(encodedValue), slot); }
EncodedJSValue DFG_OPERATION operationValueAdd(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2) { JSGlobalData* globalData = &exec->globalData(); NativeCallFrameTracer tracer(globalData, exec); JSValue op1 = JSValue::decode(encodedOp1); JSValue op2 = JSValue::decode(encodedOp2); return JSValue::encode(jsAdd(exec, op1, op2)); }
bool RootList::init() { SimpleEdgeVectorTracer tracer(cx, &edges, wantNames); JS_TraceRuntime(&tracer); if (!tracer.okay) return false; noGC.emplace(cx->runtime()); return true; }
char* JIT_OPERATION operationEnsureArrayStorage(ExecState* exec, JSCell* cell) { VM& vm = exec->vm(); NativeCallFrameTracer tracer(&vm, exec); if (!cell->isObject()) return 0; return reinterpret_cast<char*>(asObject(cell)->ensureArrayStorage(vm)); }
size_t DFG_OPERATION operationCompareStrictEq(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2) { JSGlobalData* globalData = &exec->globalData(); NativeCallFrameTracer tracer(globalData, exec); JSValue src1 = JSValue::decode(encodedOp1); JSValue src2 = JSValue::decode(encodedOp2); return JSValue::strictEqual(exec, src1, src2); }
char* JIT_OPERATION operationReallocateButterflyToGrowPropertyStorage(ExecState* exec, JSObject* object, size_t newSize) { VM& vm = exec->vm(); NativeCallFrameTracer tracer(&vm, exec); DeferGC deferGC(vm.heap); Butterfly* result = object->growOutOfLineStorage(vm, object->structure()->outOfLineCapacity(), newSize); object->setButterflyWithoutChangingStructure(vm, result); return reinterpret_cast<char*>(result); }
char* JIT_OPERATION operationRageEnsureContiguous(ExecState* exec, JSCell* cell) { VM& vm = exec->vm(); NativeCallFrameTracer tracer(&vm, exec); if (!cell->isObject()) return 0; return reinterpret_cast<char*>(asObject(cell)->rageEnsureContiguous(vm).data()); }
size_t JIT_OPERATION operationCompareStrictEq(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2) { VM* vm = &exec->vm(); NativeCallFrameTracer tracer(vm, exec); JSValue src1 = JSValue::decode(encodedOp1); JSValue src2 = JSValue::decode(encodedOp2); return JSValue::strictEqual(exec, src1, src2); }
char* JIT_OPERATION operationNewArrayWithSize(ExecState* exec, Structure* arrayStructure, int32_t size) { VM* vm = &exec->vm(); NativeCallFrameTracer tracer(vm, exec); if (UNLIKELY(size < 0)) return bitwise_cast<char*>(exec->vm().throwException(exec, createRangeError(exec, ASCIILiteral("Array size is not a small enough positive integer.")))); return bitwise_cast<char*>(JSArray::create(*vm, arrayStructure, size)); }
char* newTypedArrayWithSize(ExecState* exec, Structure* structure, int32_t size) { VM& vm = exec->vm(); NativeCallFrameTracer tracer(&vm, exec); if (size < 0) { vm.throwException(exec, createRangeError(exec, ASCIILiteral("Requested length is negative"))); return 0; } return bitwise_cast<char*>(ViewClass::create(exec, structure, size)); }
EncodedJSValue JIT_OPERATION operationValueAdd(ExecState* exec, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2) { VM* vm = &exec->vm(); NativeCallFrameTracer tracer(vm, exec); JSValue op1 = JSValue::decode(encodedOp1); JSValue op2 = JSValue::decode(encodedOp2); return JSValue::encode(jsAdd(exec, op1, op2)); }
EncodedJSValue DFG_OPERATION operationResolveBaseStrictPut(ExecState* exec, Identifier* propertyName) { JSGlobalData* globalData = &exec->globalData(); NativeCallFrameTracer tracer(globalData, exec); JSValue base = resolveBase(exec, *propertyName, exec->scopeChain(), true); if (!base) throwError(exec, createErrorForInvalidGlobalAssignment(exec, propertyName->ustring())); return JSValue::encode(base); }
//============================================================================================================ // _readConfigFile //------------------------------------------------------------------------------------------------------------ // Read target config file //============================================================================================================ void dlgConfigEditor::_readConfigFile() { cTracer tracer("_readConfigFile"); m_qsFileName = QString( "%1/%2" ).arg(m_qsDirConf).arg(ui->ledFileName->text()); ui->ledFileName->setToolTip( m_qsFileName ); QFile fileConfig( m_qsFileName ); m_vTestCases.clear(); if( !fileConfig.open(QIODevice::ReadOnly | QIODevice::Text) ) return; QTextStream in(&fileConfig); QStringList qslTestCase; QString line = in.readLine(); if( line.contains("<atp_config") ) { m_bConfigXML = true; fileConfig.close(); _readConfigXml( m_qsFileName ); } else { m_bConfigXML = false; while( !in.atEnd() ) { if( line.contains( "<testproc>" ) ) { if( qslTestCase.count() > 0 ) { m_vTestCases.append( qslTestCase ); qslTestCase.clear(); } qslTestCase << _addTestProcedure( line ); } else if( line.contains( "<testcase>" ) ) { qslTestCase << _addTestProcedure( line ); } line = in.readLine(); } if( qslTestCase.count() > 0 ) { m_vTestCases.append( qslTestCase ); } fileConfig.close(); } }
char* JIT_OPERATION operationReallocateButterflyToHavePropertyStorageWithInitialCapacity(ExecState* exec, JSObject* object) { VM& vm = exec->vm(); NativeCallFrameTracer tracer(&vm, exec); ASSERT(!object->structure()->outOfLineCapacity()); DeferGC deferGC(vm.heap); Butterfly* result = object->growOutOfLineStorage(vm, 0, initialOutOfLineCapacity); object->setButterflyWithoutChangingStructure(vm, result); return reinterpret_cast<char*>(result); }
JSCell* JIT_OPERATION operationCreateInlinedArguments( ExecState* exec, InlineCallFrame* inlineCallFrame) { VM& vm = exec->vm(); NativeCallFrameTracer tracer(&vm, exec); // NB: This needs to be exceedingly careful with top call frame tracking, since it // may be called from OSR exit, while the state of the call stack is bizarre. Arguments* result = Arguments::create(vm, exec, inlineCallFrame); ASSERT(!vm.exception()); return result; }
std::unique_ptr<php::Program> parse_program(const Container& units) { trace_time tracer("parse"); auto ret = folly::make_unique<php::Program>(); ret->units = parallel_map( units, [&] (const std::unique_ptr<UnitEmitter>& ue) { return parse_unit(*ue); } ); return ret; }
void JIT_OPERATION operationLoadVarargs(ExecState* exec, int32_t firstElementDest, EncodedJSValue encodedArguments, int32_t offset, int32_t length, int32_t mandatoryMinimum) { VM& vm = exec->vm(); NativeCallFrameTracer tracer(&vm, exec); JSValue arguments = JSValue::decode(encodedArguments); loadVarargs(exec, VirtualRegister(firstElementDest), arguments, offset, length); for (int32_t i = length; i < mandatoryMinimum; ++i) exec->r(firstElementDest + i) = jsUndefined(); }
int main(int argc, char **argv) { pid_t child; child = fork(); if (child == 0) { ptrace(PTRACE_TRACEME, 0, NULL, NULL); execvp(argv[1], argv + 1); } else { return tracer(child); } return 0; }