Revision 2efe155f939a34fcf646f3745197d2384404b02c authored by Shuhei Kadowaki on 31 January 2022, 06:52:03 UTC, committed by Shuhei Kadowaki on 30 May 2022, 03:10:33 UTC
This commit limits the lifetimes of `OptimizationState` and `IRCode` for a more dataflow clarity. It also avoids duplicated calls of `ir_to_codeinf!`. Note that external `AbstractInterpreter`s can still extend their lifetimes to cache additional information, as described by this newly added documentation of `finish!`: > finish!(interp::AbstractInterpreter, > opt::OptimizationState, ir::IRCode, caller::InferenceResult) > > Runs post-Julia-level optimization process and caches information for later uses: > - computes "purity" (i.e. side-effect-freeness) of the optimized frame > - computes inlining cost and cache the inlineability in `opt.src.inlineable` > - stores the result of optimization in `caller.src` > * by default, `caller.src` will be an optimized `CodeInfo` object transformed from `ir` > * in a case when this frame has been proven pure, `ConstAPI` object wrapping the constant > value will be kept in `caller.src` instead, so that the runtime system will use > the constant calling convention > > !!! note > The lifetimes of `opt` and `ir` end by the end of this process. > Still external `AbstractInterpreter` can override this method as necessary to cache them. > Note that `transform_result_for_cache` should be overloaded also in such cases, > otherwise the default `transform_result_for_cache` implmentation will discard any information > other than `CodeInfo`, `Vector{UInt8}` or `ConstAPI`. This commit also adds a new overload `infresult_iterator` so that external interpreters can tweak the behavior of post processings of `_typeinf`. Especially, this change is motivated by the need for JET, whose post-optimization processing needs references of `InferenceState`.
1 parent 18bdbbf
httpbin-prod-swagger-apigateway.yaml
---
swagger: "2.0"
info:
description: "Looks like an httpbin"
version: "2020-06-18T07:18:54Z"
title: "httpbin"
host: "httpbin.julialang.org"
schemes:
- "https"
paths:
/get:
get:
consumes:
- "application/json"
produces:
- "application/json"
responses:
200:
description: "200 response"
schema:
$ref: "#/definitions/Empty"
x-amazon-apigateway-integration:
responses:
default:
statusCode: "200"
responseTemplates:
application/json: "#set($allParams = $input.params())\n{\n\"args\":\
\ {\n#set($params = $allParams.get(\"querystring\"))\n#foreach($paramName\
\ in $params.keySet())\n\"$paramName\" : \"$util.escapeJavaScript($params.get($paramName)).replaceAll(\"\
\\\\'\",\"'\")\"\n#if($foreach.hasNext),#end\n\n#end\n},\n\"headers\"\
: {\n#set($params = $allParams.get(\"header\"))\n#foreach($paramName\
\ in $params.keySet())\n\"$paramName\" : \"$util.escapeJavaScript($params.get($paramName)).replaceAll(\"\
\\\\'\",\"'\")\"#if($foreach.hasNext),#end\n\n#end\n},\n\"origin\"\
: \"$context.identity.sourceIp\",\n\"url\": \"$context.path\"\n}\n"
requestTemplates:
application/json: "{\"statusCode\": 200}"
passthroughBehavior: "when_no_match"
type: "mock"
/ip:
get:
consumes:
- "application/json"
produces:
- "application/json"
responses:
200:
description: "200 response"
x-amazon-apigateway-integration:
responses:
default:
statusCode: "200"
responseTemplates:
application/json: "{\n \"origin\" : \"$context.identity.sourceIp\"\n\
}"
requestTemplates:
application/json: "{\"statusCode\": 200}"
passthroughBehavior: "when_no_match"
type: "mock"
/status/200:
get:
consumes:
- "application/json"
produces:
- "application/json"
responses:
200:
description: "200 response"
schema:
$ref: "#/definitions/Empty"
x-amazon-apigateway-integration:
responses:
default:
statusCode: "200"
requestTemplates:
application/json: "{\"statusCode\": 200}"
passthroughBehavior: "when_no_match"
type: "mock"
/status/404:
get:
consumes:
- "application/json"
responses:
404:
description: "404 response"
x-amazon-apigateway-integration:
responses:
default:
statusCode: "404"
requestTemplates:
application/json: "{\"statusCode\": 404}"
passthroughBehavior: "when_no_match"
type: "mock"
definitions:
Empty:
type: "object"
title: "Empty Schema"
x-amazon-apigateway-gateway-responses:
DEFAULT_4XX:
statusCode: 401
responseTemplates:
application/json: "{\"message\":$context.error.messageString}"
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...