mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	Add blockhash to Solidity.
Autopadding fix.
This commit is contained in:
		
							parent
							
								
									80eec8b308
								
							
						
					
					
						commit
						911916beb7
					
				| @ -282,6 +282,13 @@ bool ExpressionCompiler::visit(FunctionCall const& _functionCall) | ||||
| 			m_context << u256(32) << u256(0) << eth::logInstruction(logNumber); | ||||
| 			break; | ||||
| 		} | ||||
| 		case Location::BLOCKHASH: | ||||
| 		{ | ||||
| 			arguments[0]->accept(*this); | ||||
| 			appendTypeConversion(*arguments[0]->getType(), *function.getParameterTypes()[0], true); | ||||
| 			m_context << eth::Instruction::BLOCKHASH; | ||||
| 			break; | ||||
| 		} | ||||
| 		case Location::ECRECOVER: | ||||
| 		case Location::SHA256: | ||||
| 		case Location::RIPEMD160: | ||||
|  | ||||
| @ -656,8 +656,8 @@ MagicType::MagicType(MagicType::Kind _kind): | ||||
| 	{ | ||||
| 	case Kind::BLOCK: | ||||
| 		m_members = MemberList({{"coinbase", make_shared<IntegerType>(0, IntegerType::Modifier::ADDRESS)}, | ||||
| 								{"timestamp", make_shared<IntegerType >(256)}, | ||||
| 								{"prevhash", make_shared<IntegerType>(256, IntegerType::Modifier::HASH)}, | ||||
| 								{"timestamp", make_shared<IntegerType>(256)}, | ||||
| 								{"blockhash", make_shared<FunctionType>(strings{"uint"}, strings{"hash"}, FunctionType::Location::BLOCKHASH)}, | ||||
| 								{"difficulty", make_shared<IntegerType>(256)}, | ||||
| 								{"number", make_shared<IntegerType>(256)}, | ||||
| 								{"gaslimit", make_shared<IntegerType>(256)}}); | ||||
|  | ||||
							
								
								
									
										2
									
								
								Types.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Types.h
									
									
									
									
									
								
							| @ -348,7 +348,7 @@ public: | ||||
| 	/// INTERNAL: jump tag, EXTERNAL: contract address + function index,
 | ||||
| 	/// BARE: contract address (non-abi contract call)
 | ||||
| 	/// OTHERS: special virtual function, nothing on the stack
 | ||||
| 	enum class Location { INTERNAL, EXTERNAL, SEND, SHA3, SUICIDE, ECRECOVER, SHA256, RIPEMD160, LOG0, LOG1, LOG2, LOG3, LOG4, BARE }; | ||||
| 	enum class Location { INTERNAL, EXTERNAL, SEND, SHA3, SUICIDE, ECRECOVER, SHA256, RIPEMD160, LOG0, LOG1, LOG2, LOG3, LOG4, BLOCKHASH, BARE }; | ||||
| 
 | ||||
| 	virtual Category getCategory() const override { return Category::FUNCTION; } | ||||
| 	explicit FunctionType(FunctionDefinition const& _function, bool _isInternal = true); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user